Linux 檔案壓縮

luck-luck發表於2018-10-26

壓縮工具
  compress/uncompress:對應 .Z 結尾的壓縮格式檔案
  壓縮格式:gz、bz2、xz、zip、Z
  gzip  壓縮檔案並刪除原始檔(生成.gz的檔案)
  gunzip 解壓縮檔案(gzip -d有相同的功能)
  bzip2   壓縮檔案(壓縮比例比gzip更高字尾為.bz2)
  bunzip2 解壓縮檔案(bzip -d有相同的功能)

  壓縮演算法不同,壓縮比也會不同
gzip
  gzip /PATH/TO/SOMEFILE 壓縮完成後會刪除原檔案
  -d 解壓縮
  -# 指定壓縮比(1-9),預設是6
  -c 將壓縮結果送往標準輸出,可以使用重定向將其儲存為壓縮檔案,從而保留原檔案
  例子:
  gzip -c /PATH/TO/SOMEFILE > SOMEFILE.gz
gunzip
  gunzip /PATH/TO/SOMEFILE.gz  解壓完成後會刪除原檔案
  zcat /PATH/TO/SOMEFILE.gz      不解壓的情況,檢視文字檔案的內容
  z系列命令,可以在不經解壓的情況下,直接操作gzip壓縮檔案
  zcat  直接顯示壓縮檔案的內容
  zless 直接逐行顯示壓縮檔案的內容
  zdiff 直接報告壓縮檔案的差異內容
  zcmp 直接報告壓縮檔案的差異處
演示:
[root@centos7 ~]# cp /var/log/messages /tmp/test/
[root@centos7 ~]# ll /tmp/test/
總用量 288
-rw-r—– 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r–r—– 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r–r– 1 root root 0 2月 20 13:41 f
-rw-r–r– 1 root root 0 2月 20 13:41 g
-rw——- 1 root root 292504 2月 20 16:28 messages
[root@centos7 ~]# ll -h /tmp/test/messages
-rw——- 1 root root 286K 2月 20 16:28 /tmp/test/messages

# 壓縮,刪除原檔案,保留壓縮後以.gz結尾的檔案
[root@centos7 ~]# gzip /tmp/test/messages

[root@centos7 ~]# ll -h /tmp/test
總用量 44K
-rw-r—– 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r–r—– 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r–r– 1 root root 0 2月 20 13:41 f
-rw-r–r– 1 root root 0 2月 20 13:41 g
-rw——- 1 root root 41K 2月 20 16:28 messages.gz

# 解壓縮,原來的壓縮檔案被刪除,保留解壓縮後的檔案
[root@centos7 ~]# gunzip /tmp/test/messages.gz
[root@centos7 ~]# ll -h /tmp/test
總用量 288K
-rw-r—– 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r–r—– 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r–r– 1 root root 0 2月 20 13:41 f
-rw-r–r– 1 root root 0 2月 20 13:41 g
-rw——- 1 root root 286K 2月 20 16:28 messages

# zcat可以檢視壓縮的檔案,不建議對大檔案使用zcat命令檢視
[root@centos7 ~]# zcat /tmp/test/messages.gz

#=====================================================================================
# 解壓縮
[root@centos7 ~]# gzip -d /tmp/test/messages.gz
[root@centos7 ~]# ll /tmp/test/
總用量 288
-rw-r—– 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r–r—– 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r–r– 1 root root 0 2月 20 13:41 f
-rw-r–r– 1 root root 0 2月 20 13:41 g
-rw——- 1 root root 292504 2月 20 16:28 messages

# 將壓縮或解壓縮的結果輸出至標準輸出(gzip -c FILE > /PATH/TP/SOMEFILE.gz)
[root@centos7 ~]# gzip -c /tmp/test/messages > /tmp/test/messages.gz
[root@centos7 ~]# ll /tmp/test/
總用量 332
-rw-r—– 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r–r—– 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r–r– 1 root root 0 2月 20 13:41 f
-rw-r–r– 1 root root 0 2月 20 13:41 g
-rw——- 1 root root 292504 2月 20 16:28 messages
-rw-r–r– 1 root root 41791 2月 20 16:44 messages.gz

# 解壓縮到標準輸出
[root@centos7 ~]# rm -f /tmp/test/messages
[root@centos7 ~]# gzip -d -c /tmp/test/messages.gz > /tmp/test/messages
[root@centos7 ~]# ll /tmp/test/
總用量 332
-rw-r—– 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r–r—– 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r–r– 1 root root 0 2月 20 13:41 f
-rw-r–r– 1 root root 0 2月 20 13:41 g
-rw-r–r– 1 root root 292504 2月 20 16:50 messages
-rw-r–r– 1 root root 41791 2月 20 16:44 messages.gz

bzip2
  比gzip有著更大壓縮比的壓縮工具,使用格式近似
  bzip2 /PATH/TO/SOMEFILE
  -d 解壓縮
  -# 指定壓縮比(1-9),預設是6
  -k 壓縮解壓時保留原檔案
bunzip2
  bunzip2 /PATH/TO/SOMEFILE.bz2 解壓完成後會刪除原檔案
  bzcat /PATH/TO/SOMEFILE.bz2 不解壓的情況,檢視文字檔案的內容
演示:
# 壓縮
[root@centos7 ~]# bzip2 /tmp/test/messages

[root@centos7 ~]# ll -h /tmp/test/
總用量 72K
-rw-r—– 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r–r—– 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r–r– 1 root root 0 2月 20 13:41 f
-rw-r–r– 1 root root 0 2月 20 13:41 g
-rw-r–r– 1 root root 26K 2月 20 16:50 messages.bz2 #壓縮後的結果
-rw-r–r– 1 root root 41K 2月 20 16:44 messages.gz

# 解壓縮
[root@centos7 ~]# bunzip2 /tmp/test/messages.bz2
[root@centos7 ~]# ll -h /tmp/test/
總用量 332K
-rw-r—– 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r–r—– 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r–r– 1 root root 0 2月 20 13:41 f
-rw-r–r– 1 root root 0 2月 20 13:41 g
-rw-r–r– 1 root root 286K 2月 20 16:50 messages # 解壓縮後的結果
-rw-r–r– 1 root root 41K 2月 20 16:44 messages.gz

# -k 選項不用指明重定向的檔案,自動保留原始檔在當前檔案中
[root@centos7 ~]# bzip2 -k /tmp/test/messages
[root@centos7 ~]# ll -h /tmp/test/
總用量 360K
-rw-r—– 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r–r—– 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r–r– 1 root root 0 2月 20 13:41 f
-rw-r–r– 1 root root 0 2月 20 13:41 g
-rw-r–r– 1 root root 286K 2月 20 16:50 messages
-rw-r–r– 1 root root 26K 2月 20 16:50 messages.bz2
-rw-r–r– 1 root root 41K 2月 20 16:44 messages.gz

xz
  xz /PATH/TO/SOMEFILE
  -d 解壓縮
  -# 指定壓縮比(1-9),預設是6
  -k 壓縮解壓時保留原檔案
unxz
  unxz /PATH/TO/SOMEFILE.xz 解壓完成後會刪除原檔案
  xzdec /PATH/TO/SOMEFILE.xz 解壓檔案顯示到終端上
  xzcat /PATH/TO/SOMEFILE.xz 不解壓的情況,檢視文字檔案的內容

  注意:以上壓縮工具只能壓縮檔案,不能壓縮目錄,如果指定目錄中的所有檔案/PATH/TO/*會將目錄中的每個檔案壓縮成一個壓縮檔案,所以在壓縮目錄的時候還需要歸檔工具
演示:
[root@centos7 ~]# xz /tmp/test/messages
[root@centos7 ~]# ll -h /tmp/test/
總用量 96K
-rw-r—– 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r–r—– 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r–r– 1 root root 0 2月 20 13:41 f
-rw-r–r– 1 root root 0 2月 20 13:41 g
-rw-r–r– 1 root root 26K 2月 20 16:50 messages.bz2
-rw-r–r– 1 root root 41K 2月 20 16:44 messages.gz
-rw-r–r– 1 root root 21K 2月 20 16:50 messages.xz

zip  既歸檔又壓縮的工具(window下面的.zip的檔案可以直接在linux下解壓)
  zip FILENAME.zip FILE1 FILE2 … 壓縮多個檔案到一個目錄中,壓縮後不刪除原檔案
  unzip FILENAME.zip
  如果要壓縮預設目錄,要通過指定目錄的所有檔案/PATH/TO/*才能壓縮整個目錄下的檔案,如果指定的是/PATH/TO/就只會壓縮TO這個目錄本身並不包括目錄中的檔案
  zip /PATH/TO/ /PATH/TO/SOMEFILE.zip 只是壓縮了TO目錄
  zip /PATH/TO/* /PATH/TO/SOMEFILE.zip 壓縮了TO目錄中的所有檔案
演示:
# 對目錄進行歸檔並壓縮
[root@centos7 test]# zip /tmp/test/tao.zip tao
adding: tao/ (stored 0%)
[root@centos7 test]# ll
總用量 188
-rw-r–r– 1 root root 12097 2月 20 17:42 boot.log
-rw-r–r– 1 root root 26074 2月 20 16:50 messages.bz2
-rw-r–r– 1 root root 41791 2月 20 16:44 messages.gz
-rw-r–r– 1 root root 21420 2月 20 16:50 messages.xz
-rw-r–r– 1 root root 40960 2月 20 17:51 mylog.tar
-rw-r—– 1 root root 0 2月 20 17:42 pacemaker.log
drwxr-xr-x 2 root root 121 2月 20 17:43 tao
-rw-r–r– 1 root root 7232 2月 20 18:15 tao.tar.gz
-rw-r–r– 1 root root 158 2月 20 18:26 tao.zip
-rw-r–r– 1 root root 2800 2月 20 17:42 wpa_supplicant.log
-rw-r–r– 1 root root 18303 2月 20 17:42 Xorg.0.log
-rw——- 1 root root 105 2月 20 17:42 yum.log

[root@centos7 test]# rm -fr tao

# 解壓縮
[root@centos7 test]# unzip tao.zip
Archive: tao.zip
creating: tao/
[root@centos7 test]# ll
總用量 188
-rw-r–r– 1 root root 12097 2月 20 17:42 boot.log
-rw-r–r– 1 root root 26074 2月 20 16:50 messages.bz2
-rw-r–r– 1 root root 41791 2月 20 16:44 messages.gz
-rw-r–r– 1 root root 21420 2月 20 16:50 messages.xz
-rw-r–r– 1 root root 40960 2月 20 17:51 mylog.tar
-rw-r—– 1 root root 0 2月 20 17:42 pacemaker.log
drwxr-xr-x 2 root root 6 2月 20 17:43 tao
-rw-r–r– 1 root root 7232 2月 20 18:15 tao.tar.gz
-rw-r–r– 1 root root 158 2月 20 18:26 tao.zip
-rw-r–r– 1 root root 2800 2月 20 17:42 wpa_supplicant.log
-rw-r–r– 1 root root 18303 2月 20 17:42 Xorg.0.log
-rw——- 1 root root 105 2月 20 17:42 yum.log

tar 歸檔壓縮工具(archive歸檔本身並不意味著壓縮) 
  主要引數:
  -f 指定建立或展開歸檔檔名(只要操作歸檔檔案就要用-f)
  -c 建立歸檔檔案
  -v 顯示建立的詳細過程
  -x 展開歸檔檔案
  -r 將檔案新增到已經存在的歸檔檔案中(壓縮後是不能用r的,只有歸檔的時候用)
  -z 用gzip來壓縮和解壓縮檔案
  -j 用bz2來壓縮和解壓縮檔案
  -J 用xz來壓縮和解壓縮檔案
  -t 不展開歸檔檔案情況下檢視檔案中的內容
  -C 展開或解壓檔案到指定目錄(如果沒指定該引數,預設是當前目錄)
  –xattrs 歸檔時,保留檔案的擴充套件屬性資訊

  -zcf 歸檔並呼叫gzip壓縮
  -zxf 呼叫gzip解壓縮並展開歸檔,-z選項可省略(解壓時自動判斷用什麼工具壓縮)

  -jcf 歸檔並呼叫bzip2壓縮
  -jxf 呼叫bzip2解壓縮並展開歸檔,-j選項可省略

  -Jcf 歸檔並呼叫xz壓縮
  -Jxf 呼叫xz解壓縮並展開歸檔,-J選項可省略

  例如:
  tar -cvf home.tar /home 將home目錄打包成home.tar(只是打包並沒有壓縮)
  tar -rvf home.tar /etc 將etc目錄新增到已存在的打包檔案home.tar裡面
  tar -czvf home.tar.gz /home 將home目錄打包並壓縮成home.tar.gz
  tar -cvjf home.tar.bz2 /home 將home目錄打包並壓縮成.bz2的格式
  tar -xzvf home.tar.gz 將home.tar.gz這個備份檔案還原並解壓縮
  tar -tvf home.tar | more 檢視home.tar備份檔案的類容,並以分屏方式顯示在顯示器上
  tar -cvf /dev/st0 /home/shrek 可以將st0磁帶機備份到/home目錄下面

  注意:f選項一定要寫在最後一個;如果是解開壓縮歸檔檔案可以不指定壓縮選項zjJ,tar會通過檔案字尾判斷是什麼壓縮工具壓縮的
  歸檔演示:
[root@centos7 ~]# ls /tmp/test/tao
boot.log fstab issue pacemaker.log wpa_supplicant.log Xorg.0.log yum.log

# 對所有以 .log 結尾的檔案進行歸檔
[root@centos7 ~]# tar -cf /tmp/test/mylog.tar /tmp/test/tao/*.log
[root@centos7 ~]# ll /tmp/test/
總用量 136
-rw-r–r– 1 root root 26074 2月 20 16:50 messages.bz2
-rw-r–r– 1 root root 41791 2月 20 16:44 messages.gz
-rw-r–r– 1 root root 21420 2月 20 16:50 messages.xz
-rw-r–r– 1 root root 40960 2月 20 17:45 mylog.tar # 歸檔後的檔案
drwxr-xr-x 2 root root 121 2月 20 17:43 tao

# 展開歸檔
[root@centos7 test]# tar xf mylog.tar
[root@centos7 test]# ll
總用量 176
-rw-r–r– 1 root root 12097 2月 20 17:42 boot.log
-rw-r–r– 1 root root 26074 2月 20 16:50 messages.bz2
-rw-r–r– 1 root root 41791 2月 20 16:44 messages.gz
-rw-r–r– 1 root root 21420 2月 20 16:50 messages.xz
-rw-r–r– 1 root root 40960 2月 20 17:51 mylog.tar
-rw-r—– 1 root root 0 2月 20 17:42 pacemaker.log
drwxr-xr-x 2 root root 121 2月 20 17:43 tao
-rw-r–r– 1 root root 2800 2月 20 17:42 wpa_supplicant.log
-rw-r–r– 1 root root 18303 2月 20 17:42 Xorg.0.log
-rw——- 1 root root 105 2月 20 17:42 yum.log

# -C 展開歸檔至指定檔案中
[root@centos7 test]# mkdir /tmp/newtest
[root@centos7 test]# tar xf mylog.tar -C /tmp/newtest
[root@centos7 test]# ll /tmp/newtest
總用量 40
-rw-r–r– 1 root root 12097 2月 20 17:42 boot.log
-rw-r—– 1 root root 0 2月 20 17:42 pacemaker.log
-rw-r–r– 1 root root 2800 2月 20 17:42 wpa_supplicant.log
-rw-r–r– 1 root root 18303 2月 20 17:42 Xorg.0.log
-rw——- 1 root root 105 2月 20 17:42 yum.log

# 檢視歸檔檔案中的檔案列表
[root@centos7 test]# tar tf mylog.tar
boot.log
pacemaker.log
wpa_supplicant.log
Xorg.0.log
yum.log

歸檔並壓縮演示:
# 對目錄進行歸檔並壓縮
[root@centos7 test]# tar zcf /tmp/test/tao.tar.gz tao
[root@centos7 test]# ll /tmp/test
總用量 184
-rw-r–r– 1 root root 12097 2月 20 17:42 boot.log
-rw-r–r– 1 root root 26074 2月 20 16:50 messages.bz2
-rw-r–r– 1 root root 41791 2月 20 16:44 messages.gz
-rw-r–r– 1 root root 21420 2月 20 16:50 messages.xz
-rw-r–r– 1 root root 40960 2月 20 17:51 mylog.tar
-rw-r—– 1 root root 0 2月 20 17:42 pacemaker.log
drwxr-xr-x 2 root root 121 2月 20 17:43 tao # 原檔案
-rw-r–r– 1 root root 7232 2月 20 18:15 tao.tar.gz # 歸檔壓縮後的檔案
-rw-r–r– 1 root root 2800 2月 20 17:42 wpa_supplicant.log
-rw-r–r– 1 root root 18303 2月 20 17:42 Xorg.0.log
-rw——- 1 root root 105 2月 20 17:42 yum.log

# 刪除原檔案
[root@centos7 test]# rm -fr tao

# 展開歸檔,其中 z 可省略,tar命令會自動識別其為壓縮檔案
[root@centos7 test]# tar xf tao.tar.gz
[root@centos7 test]# ll
總用量 184
-rw-r–r– 1 root root 12097 2月 20 17:42 boot.log
-rw-r–r– 1 root root 26074 2月 20 16:50 messages.bz2
-rw-r–r– 1 root root 41791 2月 20 16:44 messages.gz
-rw-r–r– 1 root root 21420 2月 20 16:50 messages.xz
-rw-r–r– 1 root root 40960 2月 20 17:51 mylog.tar
-rw-r—– 1 root root 0 2月 20 17:42 pacemaker.log
drwxr-xr-x 2 root root 121 2月 20 17:43 tao # 展開後的檔案
-rw-r–r– 1 root root 7232 2月 20 18:15 tao.tar.gz
-rw-r–r– 1 root root 2800 2月 20 17:42 wpa_supplicant.log
-rw-r–r– 1 root root 18303 2月 20 17:42 Xorg.0.log
-rw——- 1 root root 105 2月 20 17:42 yum.log

cpio 歸檔工具(把檔案複製為歸檔檔案)
  cpio命令是通過重定向的方式將檔案進行打包備份,還原恢復的工具,它可以解壓以“.cpio”或者“.tar”結尾的檔案。
  用法:
  cpio[選項] > 檔名或者裝置名
  cpio[選項] < 檔名或者裝置名
  選項:
  -o 將檔案拷貝打包成檔案或者將檔案輸出到裝置上
  -i 解包,將打包檔案解壓或將裝置上的備份還原到系統
  -t 預覽,檢視檔案內容或者輸出到裝置上的檔案內容
  -v 顯示打包過程中的檔名稱
  -d 解包生成目錄,在cpio還原時,自動的建立目錄
  -c 一種較新的儲存方式
示例:
  將etc目錄備份:
  find . /etc -print |cpio -ov > etc.cpio
  內容預覽
  cpio -tv < etc.cpio
  要解包檔案
  cpio -iv < etc.cpio
  cpio -idv < etc.cpio

壓縮工具   compress/uncompress:對應 .Z 結尾的壓縮格式檔案  壓縮格式:gz、bz2、xz、zip、Z    gzip       壓縮檔案並刪除原始檔(生成.gz的檔案)    gunzip    解壓縮檔案(gzip -d有相同的功能)    bzip2      壓縮檔案(壓縮比例比gzip更高字尾為.bz2)    bunzip2  解壓縮檔案(bzip -d有相同的功能)
  壓縮演算法不同,壓縮比也會不同  gzip  gzip /PATH/TO/SOMEFILE  壓縮完成後會刪除原檔案    -d    解壓縮    -#    指定壓縮比(1-9),預設是6    -c    將壓縮結果送往標準輸出,可以使用重定向將其儲存為壓縮檔案,從而保留原檔案  例子:  gzip -c /PATH/TO/SOMEFILE > SOMEFILE.gz  gunzip  gunzip /PATH/TO/SOMEFILE.gz  解壓完成後會刪除原檔案  zcat /PATH/TO/SOMEFILE.gz      不解壓的情況,檢視文字檔案的內容  z系列命令,可以在不經解壓的情況下,直接操作gzip壓縮檔案    zcat        直接顯示壓縮檔案的內容    zless       直接逐行顯示壓縮檔案的內容    zdiff       直接報告壓縮檔案的差異內容    zcmp      直接報告壓縮檔案的差異處演示:    [root@centos7 ~]# cp /var/log/messages /tmp/test/    [root@centos7 ~]# ll /tmp/test/    總用量 288    -rw-r—– 1 root root      0 2月  20 13:41 a    -rw-rw-rw- 1 root root      0 2月  20 13:41 b.danger    -r–r—– 1 root root      0 2月  20 13:41 c    -rwxrwxr-x 1 root root      0 2月  20 13:41 d    -rwxrwxrwx 1 root root      0 2月  20 13:41 e.danger    -rw-r–r– 1 root root      0 2月  20 13:41 f    -rw-r–r– 1 root root      0 2月  20 13:41 g    -rw——- 1 root root 292504 2月  20 16:28 messages    [root@centos7 ~]# ll -h /tmp/test/messages    -rw——- 1 root root 286K 2月  20 16:28 /tmp/test/messages
    # 壓縮,刪除原檔案,保留壓縮後以.gz結尾的檔案    [root@centos7 ~]# gzip /tmp/test/messages
    [root@centos7 ~]# ll -h /tmp/test    總用量 44K    -rw-r—– 1 root root   0 2月  20 13:41 a    -rw-rw-rw- 1 root root   0 2月  20 13:41 b.danger    -r–r—– 1 root root   0 2月  20 13:41 c    -rwxrwxr-x 1 root root   0 2月  20 13:41 d    -rwxrwxrwx 1 root root   0 2月  20 13:41 e.danger    -rw-r–r– 1 root root   0 2月  20 13:41 f    -rw-r–r– 1 root root   0 2月  20 13:41 g    -rw——- 1 root root 41K 2月  20 16:28 messages.gz
    # 解壓縮,原來的壓縮檔案被刪除,保留解壓縮後的檔案    [root@centos7 ~]# gunzip /tmp/test/messages.gz    [root@centos7 ~]# ll -h /tmp/test    總用量 288K    -rw-r—– 1 root root    0 2月  20 13:41 a    -rw-rw-rw- 1 root root    0 2月  20 13:41 b.danger    -r–r—– 1 root root    0 2月  20 13:41 c    -rwxrwxr-x 1 root root    0 2月  20 13:41 d    -rwxrwxrwx 1 root root    0 2月  20 13:41 e.danger    -rw-r–r– 1 root root    0 2月  20 13:41 f    -rw-r–r– 1 root root    0 2月  20 13:41 g    -rw——- 1 root root 286K 2月  20 16:28 messages
    # zcat可以檢視壓縮的檔案,不建議對大檔案使用zcat命令檢視    [root@centos7 ~]# zcat /tmp/test/messages.gz
    #=====================================================================================    # 解壓縮    [root@centos7 ~]# gzip -d /tmp/test/messages.gz    [root@centos7 ~]# ll /tmp/test/    總用量 288    -rw-r—– 1 root root      0 2月  20 13:41 a    -rw-rw-rw- 1 root root      0 2月  20 13:41 b.danger    -r–r—– 1 root root      0 2月  20 13:41 c    -rwxrwxr-x 1 root root      0 2月  20 13:41 d    -rwxrwxrwx 1 root root      0 2月  20 13:41 e.danger    -rw-r–r– 1 root root      0 2月  20 13:41 f    -rw-r–r– 1 root root      0 2月  20 13:41 g    -rw——- 1 root root 292504 2月  20 16:28 messages
    # 將壓縮或解壓縮的結果輸出至標準輸出(gzip -c FILE > /PATH/TP/SOMEFILE.gz)    [root@centos7 ~]# gzip -c /tmp/test/messages > /tmp/test/messages.gz    [root@centos7 ~]# ll /tmp/test/    總用量 332    -rw-r—– 1 root root      0 2月  20 13:41 a    -rw-rw-rw- 1 root root      0 2月  20 13:41 b.danger    -r–r—– 1 root root      0 2月  20 13:41 c    -rwxrwxr-x 1 root root      0 2月  20 13:41 d    -rwxrwxrwx 1 root root      0 2月  20 13:41 e.danger    -rw-r–r– 1 root root      0 2月  20 13:41 f    -rw-r–r– 1 root root      0 2月  20 13:41 g    -rw——- 1 root root 292504 2月  20 16:28 messages    -rw-r–r– 1 root root  41791 2月  20 16:44 messages.gz
    # 解壓縮到標準輸出    [root@centos7 ~]# rm -f /tmp/test/messages    [root@centos7 ~]# gzip -d -c /tmp/test/messages.gz > /tmp/test/messages    [root@centos7 ~]# ll /tmp/test/    總用量 332    -rw-r—– 1 root root      0 2月  20 13:41 a    -rw-rw-rw- 1 root root      0 2月  20 13:41 b.danger    -r–r—– 1 root root      0 2月  20 13:41 c    -rwxrwxr-x 1 root root      0 2月  20 13:41 d    -rwxrwxrwx 1 root root      0 2月  20 13:41 e.danger    -rw-r–r– 1 root root      0 2月  20 13:41 f    -rw-r–r– 1 root root      0 2月  20 13:41 g    -rw-r–r– 1 root root 292504 2月  20 16:50 messages    -rw-r–r– 1 root root  41791 2月  20 16:44 messages.gz
  bzip2    比gzip有著更大壓縮比的壓縮工具,使用格式近似    bzip2 /PATH/TO/SOMEFILE      -d    解壓縮      -#    指定壓縮比(1-9),預設是6      -k    壓縮解壓時保留原檔案  bunzip2    bunzip2 /PATH/TO/SOMEFILE.bz2     解壓完成後會刪除原檔案    bzcat /PATH/TO/SOMEFILE.bz2        不解壓的情況,檢視文字檔案的內容演示:    # 壓縮    [root@centos7 ~]# bzip2 /tmp/test/messages
    [root@centos7 ~]# ll -h /tmp/test/    總用量 72K    -rw-r—– 1 root root   0 2月  20 13:41 a    -rw-rw-rw- 1 root root   0 2月  20 13:41 b.danger    -r–r—– 1 root root   0 2月  20 13:41 c    -rwxrwxr-x 1 root root   0 2月  20 13:41 d    -rwxrwxrwx 1 root root   0 2月  20 13:41 e.danger    -rw-r–r– 1 root root   0 2月  20 13:41 f    -rw-r–r– 1 root root   0 2月  20 13:41 g    -rw-r–r– 1 root root 26K 2月  20 16:50 messages.bz2 #壓縮後的結果    -rw-r–r– 1 root root 41K 2月  20 16:44 messages.gz
    # 解壓縮    [root@centos7 ~]# bunzip2 /tmp/test/messages.bz2    [root@centos7 ~]# ll -h /tmp/test/    總用量 332K    -rw-r—– 1 root root    0 2月  20 13:41 a    -rw-rw-rw- 1 root root    0 2月  20 13:41 b.danger    -r–r—– 1 root root    0 2月  20 13:41 c    -rwxrwxr-x 1 root root    0 2月  20 13:41 d    -rwxrwxrwx 1 root root    0 2月  20 13:41 e.danger    -rw-r–r– 1 root root    0 2月  20 13:41 f    -rw-r–r– 1 root root    0 2月  20 13:41 g    -rw-r–r– 1 root root 286K 2月  20 16:50 messages  # 解壓縮後的結果    -rw-r–r– 1 root root  41K 2月  20 16:44 messages.gz
    # -k 選項不用指明重定向的檔案,自動保留原始檔在當前檔案中    [root@centos7 ~]# bzip2 -k /tmp/test/messages    [root@centos7 ~]# ll -h /tmp/test/    總用量 360K    -rw-r—– 1 root root    0 2月  20 13:41 a    -rw-rw-rw- 1 root root    0 2月  20 13:41 b.danger    -r–r—– 1 root root    0 2月  20 13:41 c    -rwxrwxr-x 1 root root    0 2月  20 13:41 d    -rwxrwxrwx 1 root root    0 2月  20 13:41 e.danger    -rw-r–r– 1 root root    0 2月  20 13:41 f    -rw-r–r– 1 root root    0 2月  20 13:41 g    -rw-r–r– 1 root root 286K 2月  20 16:50 messages    -rw-r–r– 1 root root  26K 2月  20 16:50 messages.bz2    -rw-r–r– 1 root root  41K 2月  20 16:44 messages.gz
  xz    xz /PATH/TO/SOMEFILE      -d    解壓縮      -#    指定壓縮比(1-9),預設是6      -k    壓縮解壓時保留原檔案  unxz    unxz /PATH/TO/SOMEFILE.xz        解壓完成後會刪除原檔案    xzdec /PATH/TO/SOMEFILE.xz       解壓檔案顯示到終端上    xzcat /PATH/TO/SOMEFILE.xz        不解壓的情況,檢視文字檔案的內容以上壓縮工具只能壓縮檔案,不能壓縮目錄,如果指定目錄中的所有檔案/PATH/TO/*會將目錄中的每個檔案壓縮成一個壓縮檔案,所以在壓縮目錄的時候還需要歸檔工具演示:    [root@centos7 ~]# xz /tmp/test/messages    [root@centos7 ~]# ll -h /tmp/test/    總用量 96K    -rw-r—– 1 root root   0 2月  20 13:41 a    -rw-rw-rw- 1 root root   0 2月  20 13:41 b.danger    -r–r—– 1 root root   0 2月  20 13:41 c    -rwxrwxr-x 1 root root   0 2月  20 13:41 d    -rwxrwxrwx 1 root root   0 2月  20 13:41 e.danger    -rw-r–r– 1 root root   0 2月  20 13:41 f    -rw-r–r– 1 root root   0 2月  20 13:41 g    -rw-r–r– 1 root root 26K 2月  20 16:50 messages.bz2    -rw-r–r– 1 root root 41K 2月  20 16:44 messages.gz    -rw-r–r– 1 root root 21K 2月  20 16:50 messages.xz
  zip  既歸檔又壓縮的工具(window下面的.zip的檔案可以直接在linux下解壓)      zip FILENAME.zip FILE1 FILE2 …        壓縮多個檔案到一個目錄中,壓縮後不刪除原檔案    unzip FILENAME.zip    如果要壓縮預設目錄,要通過指定目錄的所有檔案/PATH/TO/*才能壓縮整個目錄下的檔案,如果指定的是/PATH/TO/就只會壓縮TO這個目錄本身並不包括目錄中的檔案    zip /PATH/TO/    /PATH/TO/SOMEFILE.zip  只是壓縮了TO目錄    zip /PATH/TO/*  /PATH/TO/SOMEFILE.zip  壓縮了TO目錄中的所有檔案演示:    # 對目錄進行歸檔並壓縮    [root@centos7 test]# zip /tmp/test/tao.zip tao      adding: tao/ (stored 0%)    [root@centos7 test]# ll    總用量 188    -rw-r–r– 1 root root 12097 2月  20 17:42 boot.log    -rw-r–r– 1 root root 26074 2月  20 16:50 messages.bz2    -rw-r–r– 1 root root 41791 2月  20 16:44 messages.gz    -rw-r–r– 1 root root 21420 2月  20 16:50 messages.xz    -rw-r–r– 1 root root 40960 2月  20 17:51 mylog.tar    -rw-r—– 1 root root     0 2月  20 17:42 pacemaker.log    drwxr-xr-x 2 root root   121 2月  20 17:43 tao    -rw-r–r– 1 root root  7232 2月  20 18:15 tao.tar.gz    -rw-r–r– 1 root root   158 2月  20 18:26 tao.zip    -rw-r–r– 1 root root  2800 2月  20 17:42 wpa_supplicant.log    -rw-r–r– 1 root root 18303 2月  20 17:42 Xorg.0.log    -rw——- 1 root root   105 2月  20 17:42 yum.log
    [root@centos7 test]# rm -fr tao
    # 解壓縮    [root@centos7 test]# unzip tao.zip    Archive:  tao.zip       creating: tao/    [root@centos7 test]# ll    總用量 188    -rw-r–r– 1 root root 12097 2月  20 17:42 boot.log    -rw-r–r– 1 root root 26074 2月  20 16:50 messages.bz2    -rw-r–r– 1 root root 41791 2月  20 16:44 messages.gz    -rw-r–r– 1 root root 21420 2月  20 16:50 messages.xz    -rw-r–r– 1 root root 40960 2月  20 17:51 mylog.tar    -rw-r—– 1 root root     0 2月  20 17:42 pacemaker.log    drwxr-xr-x 2 root root     6 2月  20 17:43 tao    -rw-r–r– 1 root root  7232 2月  20 18:15 tao.tar.gz    -rw-r–r– 1 root root   158 2月  20 18:26 tao.zip    -rw-r–r– 1 root root  2800 2月  20 17:42 wpa_supplicant.log    -rw-r–r– 1 root root 18303 2月  20 17:42 Xorg.0.log    -rw——- 1 root root   105 2月  20 17:42 yum.log

  tar  歸檔壓縮工具( archive歸檔本身並不意味著壓縮)   主要引數:    -f        指定建立或展開歸檔檔名(只要操作歸檔檔案就要用-f)    -c        建立歸檔檔案    -v        顯示建立的詳細過程    -x        展開歸檔檔案    -r        將檔案新增到已經存在的歸檔檔案中(壓縮後是不能用r的,只有歸檔的時候用)    -z        用gzip來壓縮和解壓縮檔案    -j         用bz2來壓縮和解壓縮檔案    -J         用xz來壓縮和解壓縮檔案    -t         不展開歸檔檔案情況下檢視檔案中的內容    -C        展開或解壓檔案到指定目錄(如果沒指定該引數,預設是當前目錄)    –xattrs  歸檔時,保留檔案的擴充套件屬性資訊
    -zcf        歸檔並呼叫gzip壓縮    -zxf        呼叫gzip解壓縮並展開歸檔,-z選項可省略(解壓時自動判斷用什麼工具壓縮)
    -jcf        歸檔並呼叫bzip2壓縮    -jxf        呼叫bzip2解壓縮並展開歸檔,-j選項可省略
    -Jcf        歸檔並呼叫xz壓縮    -Jxf        呼叫xz解壓縮並展開歸檔,-J選項可省略
  例如:  tar -cvf home.tar /home            將home目錄打包成home.tar(只是打包並沒有壓縮)  tar -rvf home.tar /etc                將etc目錄新增到已存在的打包檔案home.tar裡面  tar -czvf home.tar.gz /home      將home目錄打包並壓縮成home.tar.gz  tar -cvjf home.tar.bz2 /home     將home目錄打包並壓縮成.bz2的格式  tar -xzvf home.tar.gz                 將home.tar.gz這個備份檔案還原並解壓縮  tar -tvf home.tar | more            檢視home.tar備份檔案的類容,並以分屏方式顯示在顯示器上  tar -cvf /dev/st0 /home/shrek  可以將st0磁帶機備份到/home目錄下面
注意:f選項一定要寫在最後一個;如果是解開壓縮歸檔檔案可以不指定壓縮選項zjJ,tar會通過檔案字尾判斷是什麼壓縮工具壓縮的歸檔演示:    [root@centos7 ~]# ls /tmp/test/tao    boot.log  fstab  issue  pacemaker.log  wpa_supplicant.log  Xorg.0.log  yum.log
    # 對所有以 .log 結尾的檔案進行歸檔    [root@centos7 ~]# tar -cf /tmp/test/mylog.tar /tmp/test/tao/*.log    [root@centos7 ~]# ll /tmp/test/    總用量 136    -rw-r–r– 1 root root 26074 2月  20 16:50 messages.bz2    -rw-r–r– 1 root root 41791 2月  20 16:44 messages.gz    -rw-r–r– 1 root root 21420 2月  20 16:50 messages.xz    -rw-r–r– 1 root root 40960 2月  20 17:45 mylog.tar   # 歸檔後的檔案    drwxr-xr-x 2 root root   121 2月  20 17:43 tao   
    # 展開歸檔    [root@centos7 test]# tar xf mylog.tar    [root@centos7 test]# ll    總用量 176    -rw-r–r– 1 root root 12097 2月  20 17:42 boot.log    -rw-r–r– 1 root root 26074 2月  20 16:50 messages.bz2    -rw-r–r– 1 root root 41791 2月  20 16:44 messages.gz    -rw-r–r– 1 root root 21420 2月  20 16:50 messages.xz    -rw-r–r– 1 root root 40960 2月  20 17:51 mylog.tar    -rw-r—– 1 root root     0 2月  20 17:42 pacemaker.log    drwxr-xr-x 2 root root   121 2月  20 17:43 tao    -rw-r–r– 1 root root  2800 2月  20 17:42 wpa_supplicant.log    -rw-r–r– 1 root root 18303 2月  20 17:42 Xorg.0.log    -rw——- 1 root root   105 2月  20 17:42 yum.log
    # -C 展開歸檔至指定檔案中    [root@centos7 test]# mkdir /tmp/newtest    [root@centos7 test]# tar xf mylog.tar -C /tmp/newtest    [root@centos7 test]# ll /tmp/newtest    總用量 40    -rw-r–r– 1 root root 12097 2月  20 17:42 boot.log    -rw-r—– 1 root root     0 2月  20 17:42 pacemaker.log    -rw-r–r– 1 root root  2800 2月  20 17:42 wpa_supplicant.log    -rw-r–r– 1 root root 18303 2月  20 17:42 Xorg.0.log    -rw——- 1 root root   105 2月  20 17:42 yum.log
    # 檢視歸檔檔案中的檔案列表    [root@centos7 test]# tar tf mylog.tar    boot.log    pacemaker.log    wpa_supplicant.log    Xorg.0.log    yum.log
歸檔並壓縮演示:    # 對目錄進行歸檔並壓縮    [root@centos7 test]# tar zcf /tmp/test/tao.tar.gz tao    [root@centos7 test]# ll /tmp/test    總用量 184    -rw-r–r– 1 root root 12097 2月  20 17:42 boot.log    -rw-r–r– 1 root root 26074 2月  20 16:50 messages.bz2    -rw-r–r– 1 root root 41791 2月  20 16:44 messages.gz    -rw-r–r– 1 root root 21420 2月  20 16:50 messages.xz    -rw-r–r– 1 root root 40960 2月  20 17:51 mylog.tar    -rw-r—– 1 root root     0 2月  20 17:42 pacemaker.log    drwxr-xr-x 2 root root   121 2月  20 17:43 tao           # 原檔案    -rw-r–r– 1 root root  7232 2月  20 18:15 tao.tar.gz    # 歸檔壓縮後的檔案    -rw-r–r– 1 root root  2800 2月  20 17:42 wpa_supplicant.log    -rw-r–r– 1 root root 18303 2月  20 17:42 Xorg.0.log    -rw——- 1 root root   105 2月  20 17:42 yum.log
    # 刪除原檔案    [root@centos7 test]# rm -fr tao        
    # 展開歸檔,其中 z 可省略,tar命令會自動識別其為壓縮檔案    [root@centos7 test]# tar xf tao.tar.gz    [root@centos7 test]# ll    總用量 184    -rw-r–r– 1 root root 12097 2月  20 17:42 boot.log    -rw-r–r– 1 root root 26074 2月  20 16:50 messages.bz2    -rw-r–r– 1 root root 41791 2月  20 16:44 messages.gz    -rw-r–r– 1 root root 21420 2月  20 16:50 messages.xz    -rw-r–r– 1 root root 40960 2月  20 17:51 mylog.tar    -rw-r—– 1 root root     0 2月  20 17:42 pacemaker.log    drwxr-xr-x 2 root root   121 2月  20 17:43 tao           # 展開後的檔案    -rw-r–r– 1 root root  7232 2月  20 18:15 tao.tar.gz    -rw-r–r– 1 root root  2800 2月  20 17:42 wpa_supplicant.log    -rw-r–r– 1 root root 18303 2月  20 17:42 Xorg.0.log    -rw——- 1 root root   105 2月  20 17:42 yum.log
cpio  歸檔工具(把檔案複製為歸檔檔案)cpio命令是通過重定向的方式將檔案進行打包備份,還原恢復的工具,它可以解壓以“.cpio”或者“.tar”結尾的檔案。    用法:        cpio[選項] > 檔名或者裝置名        cpio[選項] < 檔名或者裝置名    選項:        -o:將檔案拷貝打包成檔案或者將檔案輸出到裝置上        -i:解包,將打包檔案解壓或將裝置上的備份還原到系統        -t:預覽,檢視檔案內容或者輸出到裝置上的檔案內容        -v:顯示打包過程中的檔名稱        -d:解包生成目錄,在cpio還原時,自動的建立目錄        -c:一種較新的儲存方式    示例:        將etc目錄備份:            find . /etc -print |cpio -ov > etc.cpio        內容預覽            cpio -tv < etc.cpio        要解包檔案            cpio -iv < etc.cpio            cpio -idv < etc.cpio

 

相關文章