壓縮工具
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