Linux - 常用歸檔、壓縮命令


1. ncompress

  compress命令是一個相當古老的 unix 檔案壓縮指令,壓縮后的文件會加上一個 .Z 的后綴名,默認不會保留源文件。compress只能對文件進行壓縮,若要壓縮目錄,先使用tar命令歸檔為一個文件后,再進行壓縮,此命令已經很少被使用。

壓縮后綴: .Z 

安裝:  sudo yum install ncompress 

語法: compress [options] file... 

       uncompress [options] file... 

選項:

-c:將壓縮后的數據輸出到屏幕,而不是壓縮文件中。可通過重定向導入文件中,達到修改壓縮文件名的作用。
-f:強制壓縮,若目標文件存在,則覆蓋。
-v:輸出程序執行的信息。
-b:設定壓縮程度,值越大,壓縮比例越大,范圍是9-16,默認是16.
-d:解壓搜,等同於uncompress

壓縮:

  例1:壓縮functions文件

$ compress functions
$ ls
functions.Z

  例2:強制壓縮,若存在同名的壓縮文件,則覆蓋

$ compress -f functions
$ ls
functions.Z

  例3:使用-c選項將壓縮后的數據輸出到屏幕,然后使用重定向將數據導入文件,實現重命名壓縮文件

$ compress -c functions > fun.Z
$ ls
functions  fun.Z

  例4:指定壓縮程度

$ compress -vb 11 functions 
functions:  -- replaced with functions.Z Compression: 49.11%
$ ls
functions.Z

  例5:對指定目錄下的所有文件進行壓縮

$ tree dir
dir
├── dir1
│   ├── f11
│   └── f12
├── dir2
└── f1

$ compress -rf dir
$ tree dir
dir
├── dir1
│   ├── f11.Z
│   └── f12.Z
├── dir2
└── f1.Z

解壓縮:

  例1:解壓縮文件

# 方法1:使用compress -d解壓縮
$ ls
functions.Z
$ compress -d functions.Z 
$ ls
functions


# 方法2:使用uncompress解壓縮
$ ls
functions.Z
$ uncompress functions.Z 
$ ls
functions

 

2. gzip

  gzip是在Linux系統中經常使用的一個對文件進行壓縮和解壓縮的命令,據統計,gzip命令對文本文件有60%~70%的壓縮率。減少文件大小有兩個明顯的好處,一是可以減少存儲空間,二是通過網絡傳輸文件時,可以減少傳輸的時間,gzip壓縮時,默認不保留源文件,壓縮后生成.gz后綴的壓縮文件。gzip不能對目錄進行壓縮,首先將目錄使用tar命令進行歸檔為一個文件,再壓縮。

壓縮后綴: .gz 

安裝:  sudo yum install gzip 

語法:  gzip [options] file ... 

             gunzip [options] file ... 

             zcat [options] file ... 

選項:

-c:壓縮后的數據輸出到屏幕,而不是默認的文件。可以使用重定向將導入文件,實現改變壓縮后文件名的作用。
-d:解壓縮。
-f:強制壓縮
-N:指定壓縮比例,數值越大,壓縮比例越大,范圍為0-9,默認為6、
-l:查看壓縮文件的信息。
-r:對指定的目錄中的所有文件進行分別壓縮
-v:查看命令執行的信息。

壓縮:

  例1:壓縮functions文件

$ gzip functions 
$ ls
functions.gz

  例2:強制壓縮,若存在同名的壓縮文件,則覆蓋

$ gzip -f functions
$ ls
functions.gz

  例3:使用-c選項將壓縮后的數據輸出到屏幕,然后使用重定向將數據導入文件,實現重命名壓縮文件,並保留源文件

$ gzip -c functions > fun.gz
$ ls
functions  fun.gz

  例4:指定壓縮比例

$ gzip -v -9 functions 
functions:     72.6% -- replaced with functions.gz
$ ls
functions.gz

  例5:對指定目錄下的所有文件進行壓縮

$ tree
.
└── dir
    ├── dir1
    │   ├── f11
    │   └── f12
    ├── dir2
    ├── f1
    └── f2

$ gzip -fr dir
$ tree
.
└── dir
    ├── dir1
    │   ├── f11.gz
    │   └── f12.gz
    ├── dir2
    ├── f1.gz
    └── f2.gz

  例6:查看壓縮文件信息

$ gzip -l functions.gz 
         compressed        uncompressed  ratio uncompressed_name
               4836               17500  72.5% functions

解壓縮:

  例1:解壓縮文件

# 方法1:使用gzip -d解壓縮
$ gzip -d functions.gz 
$ ls
functions

# 方法2:使用gunzip解壓縮
$ gunzip functions.gz 
$ ls
functions

查看壓縮內容:

  例1:不解壓縮文件,查看壓縮內容

$ zcat functions.gz 
...
$ ls
functions.gz

 

3. bzip2

  bzip2是Linux系統中常用的壓縮命令,壓縮率比gzip還高,使用bzip2壓縮文件,默認刪除源文件,可以使用-k選項保留源文件。bzip2和上面的壓縮命令一樣,不能對目錄進行壓縮,通常將目錄進行歸檔為一個文件后再進行壓縮。

壓縮后綴: .bz2

安裝:  sudo yum install bzip2 

語法:   bzip [options] file ... 

        bunzip2 [options] file ... 

        bzcat [options] file ... 

選項:

-c:配合-d選項,將壓縮文件解壓輸出到屏幕,壓縮文件仍然保留
-d:解壓縮
-k:保留源文件
-v:輸出命令執行信息
-f:強制解壓縮,當目標文件存在時,覆蓋目標文件。
--:將該選項后面的所有參數當做文件,即使文件是以中划線開頭。

壓縮:

  例1:壓縮functions文件

$ bzip2 functions 
$ ls
functions.bz2

  例2:壓縮functions文件,並保留源文件

$ bzip2 -k functions 
$ ls
functions  functions.bz2

  例3,:強制壓縮functions文件,若壓縮文件同名,則覆蓋,並輸出壓縮信息

$ bzip2 -vf functions 
  functions:  3.652:1,  2.191 bits/byte, 72.62% saved, 17500 in, 4792 out.
$ ls
functions.bz2

  例4:壓縮 -functions文件

$ bzip2 -- -functions 
$ ls
-functions.bz2

解壓縮:

  例1:解壓縮文件

# 方法1:使用bzip2 -d解壓縮
$ bzip2 -d functions.bz2 
$ ls
functions

# 方法2:使用bunzip2解壓縮
$ bunzip2 functions.bz2 
$ ls
functions

  例2:輸出壓縮內容,不刪除壓縮文件

$ bzip2 -dc functions.bz2
...

查看壓縮內容:

  例1:查看壓縮文件內容

$ bzcat functions.bz2
...

 

4. xz

  xz是一個使用LZMA壓縮算法的無損數據壓縮文件格式,xz壓縮效率比bzip2還高。

壓縮后綴: .xz

安裝:   sudo yum install xz 

語法:   xz [options] file ... 

         unxz [options] file ... 

         xzcat [options] file ... 

選項:

-d:解壓縮文件。
-c:配合-d選項,將壓縮文件內容輸出到屏幕,而不真正解壓縮文件。
-f:強制解壓縮文件,若目標文件與現有文件重名,則覆蓋現有文件。
-l:輸出壓縮文件信息。
-k:壓縮或解壓縮時,保留源文件
-N:指定壓縮比例,壓縮值范圍時0-9,默認是6.
-v:輸出執行命令信息。

壓縮:

  例1:壓縮functions文件。

$ xz functions 
$ ls
functions.xz

  例2:壓縮functions文件,並保留源文件。

$ xz -k functions 
$ ls
functions  functions.xz

  例3:強制壓縮functions文件,若生成的壓縮文件與現有文件重名,則覆蓋現有文件。

$ xz -f functions

  例4:查看當前壓縮文件信息。

$ xz -l functions.xz 
Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename
    1       1      4,688 B     17.1 KiB  0.268  CRC64   functions.xz

  例5:指定壓縮比例。

$ xz -9 functions 
$ ls
functions.xz

解壓縮:

  例1:解壓縮functions.xz文件

# 方法1:使用xz -d解壓縮文件
$ xz -d functions.xz 
$ ls
functions

# 方法2:使用unxz解壓縮文件
$ unxz functions.xz 
$ ls
functions 

  例2:輸出壓縮內容,不刪除壓縮文件

$ unxz functions.xz 
$ ls
functions

 

5. zip、unzip

  zip和rar是Windows上常用的壓縮文件,Linux上有對應的命令來壓縮和解壓縮此類文件,zip壓縮文件不刪除源文件,並且可以對壓縮包進行加密。

壓縮后綴: .zip

安裝: sudo yum install zip unzip  

語法: zip [options] file.zip file ... 

       unzip [options] file.zip  

選項:

# zip 命令選項
-r:遞歸壓縮,對目錄進行壓縮,使用該選項。
-u:對壓縮包內的文件進行更新,在不解壓壓縮文件的情況下,對壓縮包內特定的文件進行更新。
-g:將新文件壓縮后附加到壓縮包內。
-v:顯示命令執行過程。
-d:刪除壓縮包內的指定文件。
-P password:對壓縮文件設置密碼保護。
-N:設定壓縮比例,數值范圍0-9。
-x:壓縮文件時,排除某個文件。

# unzip 命令選項
-l:查看壓縮文件所包含的文件。
-v:查看壓縮文件內包含的文件、大小等信息。
-b:指定解壓文件存放目錄,默認為當前目錄。
-n:解壓時對重名的文件不進行覆蓋。
-o:解壓時對重名的文件進行覆蓋。
-p:將壓縮文件展開輸出到屏幕上,但不進行任何轉換。
-c:與-p類似

壓縮:

  例1:壓縮functions文件

$ zip functions.zip functions
  adding: functions (deflated 73%)
$ ls
functions  functions.zip

  例2:壓縮目錄network

$ zip -r networks.zip networks 
  adding: networks (deflated 19%)
$ ls
networks  networks.zip

  例3:壓縮functions文件,並設置密碼

$ zip -P123 networks.zip networks 
  adding: networks (deflated 19%)

# 解壓的時候需要輸入密碼才能解壓
$ unzip networks.zip 
Archive: networks.zip
[networks.zip] networks password:

  例4:壓縮文件functions,並指定壓縮率

$ zip -9 functions.zip functions 
  adding: functions (deflated 73%)
$ ls
functions  functions.zip

  例5:刪除壓縮包repos.zip中的CentOS-Base.repo文件

# 查看壓縮包文件列表
$ unzip -l repos.zip 
Archive:  repos.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  08-08-2018 19:14   repos/
     2573  04-18-2018 04:16   repos/CentOS-Base.repo
      664  06-27-2018 13:02   repos/epel.repo
---------                     -------
     3237                     3 files

# 刪除壓縮包中的CentOS-Base.repo文件
$ zip -d repos.zip repos/CentOS-Base.repo 
deleting: repos/CentOS-Base.repo

# 再次查看,文件已從壓縮包中刪除
$ unzip -l repos.zip 
Archive:  repos.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  08-08-2018 19:14   repos/
      664  06-27-2018 13:02   repos/epel.repo
---------                     -------
      664                     2 files

   例6:將文件CentOS-Base.repo重新壓縮並附件到壓縮包repos.zip中

# 將文件追加到壓縮包中
$ zip -g repos.zip repos/CentOS-Base.repo 
  adding: repos/CentOS-Base.repo (deflated 77%)

# 再次查看,發現文件已經追加到壓縮包末尾
$ unzip -l repos.zip 
Archive:  repos.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  08-08-2018 19:14   repos/
      664  06-27-2018 13:02   repos/epel.repo
     2573  04-18-2018 04:16   repos/CentOS-Base.repo
---------                     -------
     3237                     3 files

解壓縮:

  例1:把文件解壓到當前目錄

$ unzip repos.zip 
Archive:  repos.zip
   creating: repos/
  inflating: repos/epel.repo         
  inflating: repos/CentOS-Base.repo  
$ ls
repos  repos.zip

  例2:把文件解壓到指定目錄

$ unzip -d ./tmp repos.zip 
Archive:  repos.zip
   creating: ./tmp/repos/
  inflating: ./tmp/repos/epel.repo   
  inflating: ./tmp/repos/CentOS-Base.repo  
$ ls ./tmp/
repos

  例3:查看壓縮包所包含的文件

# 查看壓縮包所包含的文件
$ unzip -l repos.zip 
Archive:  repos.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  08-08-2018 19:14   repos/
      664  06-27-2018 13:02   repos/epel.repo
     2573  04-18-2018 04:16   repos/CentOS-Base.repo
---------                     -------
     3237                     3 files

# 查看壓縮包內更詳細的信息
$ unzip -v repos.zip 
Archive:  repos.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 08-08-2018 19:14 00000000  repos/
     664  Defl:N      226  66% 06-27-2018 13:02 0a73fe93  repos/epel.repo
    2573  Defl:N      591  77% 04-18-2018 04:16 8952469f  repos/CentOS-Base.repo
--------          -------  ---                            -------
    3237              817  75%                            3 files

  例4:查看壓縮包內的內容

$ unzip -c repos.zip
...

 

6. tar

  Linux中最常用的打包命令是tar,使用tar命令可以將多個文件或目錄歸檔為一個文件,然后通過選項調用其他壓縮命令對歸檔文件進行壓縮。從而對多個文件的備份或在網絡上傳輸提供了方便。此處先歸檔為一個文件,然后才壓縮的目的是,很多壓縮命令只能對單個文件進行壓縮。

壓縮后綴: .tar

安裝:

選項:

-v:顯示命令的執行過程。
-c:創建歸檔。
-r:追加文件至歸檔末尾。
-u:更新歸檔中的文件。
--delete:刪除歸檔中的文件。
-t:查看歸檔文件列表。
-x:展開歸檔。
-f ARCHIVE:指定歸檔名稱。
-C DIR:執行歸檔之前,切換工作目錄到DIR下。
-z:配合其他選項,創建歸檔並使用gzip壓縮或解壓gzip壓縮過的歸檔。
-j:配合其他選項,創建歸檔並使用bzip2壓縮或解壓bzip2壓縮過的歸檔。
-J:配合其他選項,創建歸檔並使用xz壓縮或解壓xz壓縮過的歸檔。
--exclude=PATTERN:排除不歸檔的文件。
-X FILE:排除不歸檔的文件,只是將排除的文件路徑統在文件FILE中列出。
-T FILE:將要歸檔的所有文件路徑在FILE中列出,然后使用-T選項指定該文件,實現對FILE中的所有文件進行歸檔。

歸檔和展開  

  例1:將 /etc/yum.repos.d 目錄下的所有文件歸檔為 repos.tar 

$ tar -cf repos.tar /etc/yum.repos.d
tar: Removing leading `/' from member names
$ ls
repos.tar

  例2:查看repos.tar歸檔中有哪些文件

$ tar -tf repos.tar 
etc/yum.repos.d/
etc/yum.repos.d/epel.repo
etc/yum.repos.d/repsbk/
etc/yum.repos.d/repsbk/CentOS-Sources.repo
etc/yum.repos.d/repsbk/CentOS-Media.repo
etc/yum.repos.d/repsbk/CentOS-fasttrack.repo
etc/yum.repos.d/repsbk/CentOS-Vault.repo
etc/yum.repos.d/repsbk/CentOS-Debuginfo.repo
etc/yum.repos.d/repsbk/CentOS-CR.repo
etc/yum.repos.d/repsbk/CentOS-Base.repo
etc/yum.repos.d/epel.repo.rpmnew
etc/yum.repos.d/CentOS-Base.repo
etc/yum.repos.d/epel-testing.repo

  例3:刪除repos.tar歸檔中 etc/yum.repos.d/epel-testing.repo 文件

$ tar --delete etc/yum.repos.d/epel-testing.repo -f repos.tar 

# 查看文件etc/yum.repos.d/epel-testing.repo已被刪除
$ tar -tf repos.tar 
etc/yum.repos.d/
etc/yum.repos.d/epel.repo
etc/yum.repos.d/repsbk/
etc/yum.repos.d/repsbk/CentOS-Sources.repo
etc/yum.repos.d/repsbk/CentOS-Media.repo
etc/yum.repos.d/repsbk/CentOS-fasttrack.repo
etc/yum.repos.d/repsbk/CentOS-Vault.repo
etc/yum.repos.d/repsbk/CentOS-Debuginfo.repo
etc/yum.repos.d/repsbk/CentOS-CR.repo
etc/yum.repos.d/repsbk/CentOS-Base.repo
etc/yum.repos.d/epel.repo.rpmnew
etc/yum.repos.d/CentOS-Base.repo

  例4:將 /etc/yum.repos.d/epel-testing.repo 文件追加到repos.tar歸檔末尾

$ tar -r /etc/yum.repos.d/epel-testing.repo -f repos.tar 
tar: Removing leading `/' from member names

#查看,文件已追加到歸檔末尾
$ tar -tf repos.tar 
etc/yum.repos.d/
etc/yum.repos.d/epel.repo
etc/yum.repos.d/repsbk/
etc/yum.repos.d/repsbk/CentOS-Sources.repo
etc/yum.repos.d/repsbk/CentOS-Media.repo
etc/yum.repos.d/repsbk/CentOS-fasttrack.repo
etc/yum.repos.d/repsbk/CentOS-Vault.repo
etc/yum.repos.d/repsbk/CentOS-Debuginfo.repo
etc/yum.repos.d/repsbk/CentOS-CR.repo
etc/yum.repos.d/repsbk/CentOS-Base.repo
etc/yum.repos.d/epel.repo.rpmnew
etc/yum.repos.d/CentOS-Base.repo
etc/yum.repos.d/epel-testing.repo

  例5:展開歸檔repos.tar

$ tar -xf repos.tar$ ls
etc  repos.tar

  例6:將/etc/yum.repos.d目錄下的文件歸檔為repos.tar,歸檔后去除前綴/etc。

$ tar -C /etc -cf repos.tar yum.repos.d

$ tar -tf repos.tar 
yum.repos.d/
yum.repos.d/epel.repo
yum.repos.d/repsbk/
yum.repos.d/repsbk/CentOS-Sources.repo
yum.repos.d/repsbk/CentOS-Media.repo
yum.repos.d/repsbk/CentOS-fasttrack.repo
yum.repos.d/repsbk/CentOS-Vault.repo
yum.repos.d/repsbk/CentOS-Debuginfo.repo
yum.repos.d/repsbk/CentOS-CR.repo
yum.repos.d/repsbk/CentOS-Base.repo
yum.repos.d/epel.repo.rpmnew
yum.repos.d/CentOS-Base.repo
yum.repos.d/epel-testing.repo

  例7:將/etc/yum.repos.d目錄下的文件歸檔為repos.tar,但排除/etc/yum.repos.d/rspsbk目錄和/etc/yum.repos.d/epel.repo.rpmnew文件。

# 方法1:使用--exclude選項排除不歸檔的文件
$ tar -cf repos.tar /etc/yum.repos.d --exclude /etc/yum.repos.d/repsbk --exclude /etc/yum.repos.d/epel.repo.rpmnew 
tar: Removing leading `/' from member names

# 方法2:將要排除的文件寫入exclude_file中,使用選項-X指定該文件。
$ cat exclude_file 
/etc/yum.repos.d/repsbk
/etc/yum.repos.d/epel.repo.rpmnew$ tar -cf repos.tar /etc/yum.repos.d -X exclude_file 
tar: Removing leading `/' from member names

調用gzip歸檔並壓縮

  例1:將/etc/yum.repos.d目錄下的文件歸檔並壓縮為repos.tar.gz

$ tar -czf repos.tar.gz /etc/yum.repos.d
tar: Removing leading `/' from member names
$ ls
repos.tar.gz

  例2:解壓並展開repos.tar.gz

$ tar -xzf repos.tar.gz 

$ ls
etc  repos.tar.gz

調用bzip2歸檔並壓縮

  例1:將/etc/yum.repos.d目錄下的文件歸檔並壓縮為repos.tar.bz2

$ tar -cjf repos.tar.bz2 /etc/yum.repos.d
tar: Removing leading `/' from member names
$ ls
repos.tar.bz2

  例2:解壓並展開repos.tar.bz2

$ tar -xjf repos.tar.bz2 
$ ls
etc  repos.tar.bz2

調用xz歸檔並壓縮

  例1:將/etc/yum.repos.d目錄下的文件歸檔並壓縮為repos.tar.xz

$ tar -cJf repos.tar.xz /etc/yum.repos.d
tar: Removing leading `/' from member names
$ ls
repos.tar.xz

  例2:解壓並展開repos.tar.xz

$ tar -xJf repos.tar.xz 
$ ls
etc  repos.tar.xz

 

7. rar

壓縮后綴: .rar

安裝:

# 從https://www.rarlab.com上下載安裝包
$ wget https://www.rarlab.com/rar/rarlinux-x64-5.6.0.tar.gz

# 解壓安裝
$ tar -xf rarlinux-x64-5.6.0.tar.gz
$ cd rar
$ make

 

語法: zip [options] file.zip file ... 

       unzip [options] file.zip  

選項:

# rar選項
a:創建或添加文件至壓縮包中。
l:列出壓縮包中的文件。
v:列出壓縮包中的文件,比l選項輸出更多的信息。
x:解壓壓縮包

# unrar選項
l:列出壓縮包中的文件
x: 解壓壓縮包

壓縮:

  例1:將/etc/yum.repos.d目錄下的文件壓縮為repos.rar

$ rar a repos.rar /etc/yum.repos.d
$ ls
repos.rar

  例2:查看repos.rar壓縮包中有哪些文件

$ rar l repos.rar 

RAR 5.40 beta 2   Copyright (c) 1993-2016 Alexander Roshal   30 May 2016
Trial version             Type RAR -? for help

Archive: repos.rar
Details: RAR 4

 Attributes      Size     Date    Time   Name
----------- ---------  ---------- -----  ----
 -rw-r--r--       664  2018-06-27 13:02  etc/yum.repos.d/epel.repo
 -rw-r--r--      1331  2017-08-30 23:53  etc/yum.repos.d/repsbk/CentOS-Sources.repo
 -rw-r--r--       630  2017-08-30 23:53  etc/yum.repos.d/repsbk/CentOS-Media.repo
 -rw-r--r--       314  2017-08-30 23:53  etc/yum.repos.d/repsbk/CentOS-fasttrack.repo
 -rw-r--r--      3830  2017-08-30 23:53  etc/yum.repos.d/repsbk/CentOS-Vault.repo
 -rw-r--r--       649  2017-08-30 23:53  etc/yum.repos.d/repsbk/CentOS-Debuginfo.repo
 -rw-r--r--      1309  2017-08-30 23:53  etc/yum.repos.d/repsbk/CentOS-CR.repo
 -rw-r--r--      1664  2017-08-30 23:53  etc/yum.repos.d/repsbk/CentOS-Base.repo
 -rw-r--r--       951  2017-10-03 01:44  etc/yum.repos.d/epel.repo.rpmnew
 -rw-r--r--      2573  2018-04-18 04:16  etc/yum.repos.d/CentOS-Base.repo
 -rw-r--r--      1050  2017-10-03 01:44  etc/yum.repos.d/epel-testing.repo
 drwxr-xr-x         0  2018-04-18 04:16  etc/yum.repos.d/repsbk
 drwxr-xr-x         0  2018-08-13 16:20  etc/yum.repos.d
----------- ---------  ---------- -----  ----
                14965                    13

解壓縮:

  例1:解壓縮repos.rar文件到當前目錄

# 方法1:使用rar命令解壓縮
$ rar x repos.rar 

# 方法2:使用unrar命令解壓縮
$ unrar x repos.rar

 

8. 分割、合並文件

  有時一個文件過大(比如日志、壓縮包等),不便於查看和在網絡上傳輸,可以使用split將大文件分割成多個小文件。需要時再使用cat命令配合重定向合並文件。

語法: split [OPTION]... [INPUT [PREFIX]] 

選項:

-l N | -N:分割后的每個文件行數。
-b SIZE:分割后的每個文件大小,SIZE單位有K、M、G、T、P、E、Z、Y
-d:分割文件名使用數字作為后綴
-a: 指定分割文件名后綴的長度

分割文件

  例1:將functions文件分割成多個小文件,每個小文件100行,小文件名以fun作為前綴。

$ split -l 100 functions fun
$ ls
funaa  funab  funac  funad  funae  funaf  funag  functions

  例2:將etc.tar.gz分割成多個小文件,每個文件大小2M,小文件名以etc作為前綴,以數字作為后綴,並且后綴長度為3。

$ split -b 2M -d -a 3 etc.tar.gz etc
$ ls
etc000  etc001  etc002  etc003  etc004  etc005  etc.tar.gz

合並文件

  例1:將上面分割的小文件合並

$ cat etc* > etc.tar.gz
$ ls
etc000  etc001  etc002  etc003  etc004  etc005  etc.tar.gz

 

9.cpio

  cpio是類似tar一樣的歸檔命令,cpio能夠歸檔和展開cpio和tar格式的文件,cpio歸檔時不會去除絕對路徑開頭的 "/",當歸檔時使用了絕對路徑,展開同樣是絕對路徑,有可能會覆蓋當前文件,要特別小心。cpio通過標准輸入獲取要歸檔的文件,歸檔后默認將文件輸出到標准輸出。使用重定向保存歸檔文件。

選項:

-o:創建歸檔。
-i:展開歸檔。
-v:顯示命令執行過程。
-t:查看歸檔文件。
-d:根據需要自動創建目錄,比如使用-p選項復制目錄時,使用該選項創建新目錄。
-H FROMAT:指定歸檔格式,此處可以指定tar格式。
-F ARCHIVE:指定歸檔文件名。也可以使用重定向實現同樣功能。
-L:如果是符號鏈接,若鏈接的是文件,則使用文件替換鏈接,如果是目錄,使用普通空文件替換鏈接目錄。
-m:創建歸檔時,保存原文件的修改時間。
-p:復制文件。

   例1:使用cpio命令備份/etc/yum.repos.d目錄,要求保存為cpio和tar兩種格式。

# 歸檔為cpio格式
$ find /etc/yum.repos.d | cpio -o > repos.cpio

# 歸檔為tar格式
$ find /etc/yum.repos.d | cpio -H tar -o > repos.tar
$ ls
repos.cpio repos.tar

  例2:查看repos.cpio中有哪些文件

$ cpio -t < repos.cpio 
/etc/yum.repos.d
/etc/yum.repos.d/epel.repo
/etc/yum.repos.d/repsbk
/etc/yum.repos.d/repsbk/CentOS-Sources.repo
/etc/yum.repos.d/repsbk/CentOS-Media.repo
/etc/yum.repos.d/repsbk/CentOS-fasttrack.repo
/etc/yum.repos.d/repsbk/CentOS-Vault.repo
/etc/yum.repos.d/repsbk/CentOS-Debuginfo.repo
/etc/yum.repos.d/repsbk/CentOS-CR.repo
/etc/yum.repos.d/repsbk/CentOS-Base.repo
/etc/yum.repos.d/epel.repo.rpmnew
/etc/yum.repos.d/CentOS-Base.repo
/etc/yum.repos.d/epel-testing.repo

[root@magedu ~]# tar -t < repos.tar 
tar: Removing leading `/' from member names
/etc/yum.repos.d/
/etc/yum.repos.d/epel.repo
/etc/yum.repos.d/repsbk/
/etc/yum.repos.d/repsbk/CentOS-Sources.repo
/etc/yum.repos.d/repsbk/CentOS-Media.repo
/etc/yum.repos.d/repsbk/CentOS-fasttrack.repo
/etc/yum.repos.d/repsbk/CentOS-Vault.repo
/etc/yum.repos.d/repsbk/CentOS-Debuginfo.repo
/etc/yum.repos.d/repsbk/CentOS-CR.repo
/etc/yum.repos.d/repsbk/CentOS-Base.repo
/etc/yum.repos.d/epel.repo.rpmnew
/etc/yum.repos.d/CentOS-Base.repo
/etc/yum.repos.d/epel-testing.repo

  例3:創建歸檔,使用-F選項取代重定向

$ find /etc/sysconfig/network-scripts | cpio -o -F network.cpio

  例4:展開歸檔

cpio -i < repos.cpio

  例5:將/etc/yum.repos.d目錄復制到當前dir目錄下

# cpio復制時也是絕對路徑,復制后dir目錄下你會發現子目錄是etc。
$ find /etc/yum.repos.d/ | cpio -pmd  dir/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM