1. 程式人生 > >2018-1-5 4周4次課 壓縮工具 gzip、bzip2、xz

2018-1-5 4周4次課 壓縮工具 gzip、bzip2、xz

/etc/ 最好 重要 weight 命令 大小 答案 from 疑問

6.1 壓縮打包介紹

常用壓縮文件

·Windows .rar .zip .7z

·Linux .zip .gz .bz2 .xz .tar .gz .tar .bz2 tar .xz

Linux下後綴名並沒有Windows不重要,但是需要通過後綴名來判斷壓縮包是類型的文件





6.2 gzip壓縮工具

Linux下常用的壓縮工具:gzip,bzip2,xz,zip,tar


·gizp壓縮工具

首先準備一個文件

[root@localhost ~]# cd /tmp/
[root@localhost tmp]# mkdir d6z
[root@localhost tmp]# cd d6z/
[root@localhost d6z]# find /etc/ -type f -name '*.conf' -exec cat {} >> 1.txt \;
[root@localhost d6z]# find /etc/ -type f -name '*.conf' -exec cat {} >> 1.txt \;
[root@localhost d6z]# find /etc/ -type f -name '*.conf' -exec cat {} >> 1.txt \;
[root@localhost d6z]# find /etc/ -type f -name '*.conf' -exec cat {} >> 1.txt \;
[root@localhost d6z]# find /etc/ -type f -name '*.conf' -exec cat {} >> 1.txt \;
[root@localhost d6z]# find /etc/ -type f -name '*.conf' -exec cat {} >> 1.txt \;
[root@localhost d6z]# find /etc/ -type f -name '*.conf' -exec cat {} >> 1.txt \;
[root@localhost d6z]# ll -h
總用量 2.2M
-rw-r--r--. 1 root root 1.7M 1月   3 22:20 1.txt          ##文件實際大小和總用量有差距,裏面存在虛量


·壓縮命令:gzip 文件名

[root@localhost d6z]# gzip 1.txt
[root@localhost d6z]# ll -h
總用量 436K
-rw-r--r--. 1 root root 433K 1月   3 22:20 1.txt.gz



·解壓縮命令:gzip -d 壓縮包文件名 / unzip 1.txt.gz

[root@localhost d6z]# gzip -d 1.txt.gz
[root@localhost d6z]# ll -h
總用量 1.7M
-rw-r--r--. 1 root root 1.7M 1月   3 22:20 1.txt          ##壓縮解壓縮一次會將虛量擠掉



·另一個解壓縮命令:gunzip 壓縮包文件名

[root@localhost d6z]# gunzip 1.txt.gz
[root@localhost d6z]# ll -h
總用量 1.7M
-rw-r--r--. 1 root root 1.7M 1月   3 22:20 1.txt



·設定壓縮級別(不能壓縮目錄):gzip -壓縮級別(1-9) 文件名

[root@localhost d6z]# gzip -1 1.txt                    ##指定壓縮級別,默認6級別,1為最快,9為最好
[root@localhost d6z]# ll -h
總用量 512K
-rw-r--r--. 1 root root 512K 1月   3 22:20 1.txt.gz
[root@localhost d6z]# gzip -9 1.txt                    ##壓縮到一定程度後,文件大小不會再有所變化
[root@localhost d6z]# ll -h
總用量 432K
-rw-r--r--. 1 root root 431K 1月   3 22:20 1.txt.gz


·查看壓縮文件內容:zcat 壓縮包文件名

[root@localhost d6z]# zcat 1.txt.gz

內容過多,不詳細展示


·壓縮時指定壓縮文件保存目錄並且不刪除源文件:gzip -c 文件名 > 壓縮包絕對路徑

[root@localhost d6z]# gzip -c 1.txt > /tmp/1.txt.gz
[root@localhost d6z]# ll
總用量 1664
-rw-r--r--. 1 root root 1700160 1月   3 22:20 1.txt
[root@localhost d6z]# ls
1.txt
[root@localhost d6z]# ls /tmp/1.txt.gz
/tmp/1.txt.gz
[root@localhost d6z]# file !$
file /tmp/1.txt.gz
/tmp/1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Wed Jan  3 22:20:29 2018



·解壓縮文件時不刪除原壓縮文件:gunzip -c 壓縮文件絕對路徑 > 目標文件路徑 / gzip -d -c

[root@localhost d6z]# gunzip -c /tmp/1.txt.gz > /tmp/d6z/2.txt
[root@localhost d6z]# ls /tmp/
1.txt.gz          systemd-private-563dd467f5694de9a79e64f675ddbbd6-chronyd.service-pvAtKB
d6z              systemd-private-563dd467f5694de9a79e64f675ddbbd6-vgauthd.service-CxHB7l
ks-script-ThyP1C      systemd-private-563dd467f5694de9a79e64f675ddbbd6-vmtoolsd.service-0pWLAR
passwd            yum.log
[root@localhost d6z]# du -sh 1.txt 2.txt
1.7M1.txt
1.7M2.txt





6.3 bzip2壓縮工具


bzip2和gzip比壓縮更狠,使用方法差不錯


·壓縮命令:bzip2 文件名 (不支持壓縮目錄)

[root@localhost d6z]# bzip2 1.txt
[root@localhost d6z]# ls
1.txt.bz2  2.txt
[root@localhost d6z]# du -sh 1.txt.bz2
164K1.txt.bz2


·解壓縮命令:bzip2 -d 壓縮文件名 / bunzip2 壓縮文件名

[root@localhost d6z]# bzip2 -d 1.txt.bz2
[root@localhost d6z]# ll -h
總用量 3.3M
-rw-r--r--. 1 root root 1.7M 1月   3 22:20 1.txt
-rw-r--r--. 1 root root 1.7M 1月   3 22:56 2.txt
[root@localhost d6z]# bzip2 1.txt
[root@localhost d6z]# bunzip2 1.txt.bz2
[root@localhost d6z]# ll -h
總用量 3.3M
-rw-r--r--. 1 root root 1.7M 1月   3 22:20 1.txt
-rw-r--r--. 1 root root 1.7M 1月   3 22:56 2.txt


·壓縮到一個指定目錄下:bzip2 -c 文件名 > 壓縮文件絕對路徑

[root@localhost d6z]# bzip2 -c 1.txt > /tmp/1.txt.bz2
[root@localhost d6z]# ll -h
總用量 3.3M
-rw-r--r--. 1 root root 1.7M 1月   3 22:20 1.txt
-rw-r--r--. 1 root root 1.7M 1月   3 22:56 2.txt
[root@localhost d6z]# ll -h /tmp/
總用量 616K
-rw-r--r--. 1 root root  163K 1月   4 21:32 1.txt.bz2
-rw-r--r--. 1 root root  433K 1月   3 22:51 1.txt.gz
drwxr-xr-x. 2 root root   32 1月   4 21:26 d6z
-rwx------. 1 root root  836 12月   28 05:59 ks-script-ThyP1C
-rw-r--r--. 1 root root  10K 12月   31 23:18 passwd
drwx------. 3 root root   17 1月   4 18:26 systemd-private-29544dd479044cf3a1aba0ff5f5af001-chronyd.service-gea3cL
drwx------. 3 root root   17 1月   4 18:26 systemd-private-29544dd479044cf3a1aba0ff5f5af001-vgauthd.service-37GJ3e
drwx------. 3 root root   17 1月   4 18:26 systemd-private-29544dd479044cf3a1aba0ff5f5af001-vmtoolsd.service-BZPrDh
-rw-------. 1 root root   0 12月   28 05:36 yum.log


·解壓縮到指定目錄下:bzip2 -d -c

[root@localhost d6z]# bzip2 -d -c /tmp/1.txt.bz2 > 3.txt
[root@localhost d6z]# ll -h
總用量 4.9M
-rw-r--r--. 1 root root 1.7M 1月   3 22:20 1.txt
-rw-r--r--. 1 root root 1.7M 1月   3 22:56 2.txt
-rw-r--r--. 1 root root 1.7M 1月   4 21:35 3.txt
[root@localhost d6z]# ll -h /tmp/
總用量 616K
-rw-r--r--. 1 root root  163K 1月   4 21:32 1.txt.bz2
-rw-r--r--. 1 root root  433K 1月   3 22:51 1.txt.gz
drwxr-xr-x. 2 root root   45 1月   4 21:35 d6z
-rwx------. 1 root root  836 12月   28 05:59 ks-script-ThyP1C
-rw-r--r--. 1 root root  10K 12月   31 23:18 passwd
drwx------. 3 root root   17 1月   4 18:26 systemd-private-29544dd479044cf3a1aba0ff5f5af001-chronyd.service-gea3cL
drwx------. 3 root root   17 1月   4 18:26 systemd-private-29544dd479044cf3a1aba0ff5f5af001-vgauthd.service-37GJ3e
drwx------. 3 root root   17 1月   4 18:26 systemd-private-29544dd479044cf3a1aba0ff5f5af001-vmtoolsd.service-BZPrDh
-rw-------. 1 root root   0 12月   28 05:36 yum.log


·設定壓縮級別:bzip2 -壓縮級別(1-9) 文件名

[root@localhost d6z]# bzip2 -9 1.txt
[root@localhost d6z]# du -sh 1.txt.bz2
164K1.txt.bz2

(bzip2默認壓縮級別就是9)


·查看壓縮文件內容:bzcat 壓縮文件名

[root@localhost d6z]# bzcat 1.txt.bz2

內容過多,不詳細展示


疑問:gzip壓縮過的文件用bzip2工具能解壓縮嗎?或者bzip2壓縮過的文件用gzip解壓?

[root@localhost d6z]# gzip -d 1.txt.bz2

gzip: 1.txt.bz2: unknown suffix -- ignored

[root@localhost d6z]# bunzip2 /tmp/1.txt.gz

bunzip2: Can't guess original name for /tmp/1.txt.gz -- using /tmp/1.txt.gz.out

bunzip2: /tmp/1.txt.gz is not a bzip2 file.

答案當然是不可以~!





6.4 xz壓縮工具


·壓縮命令:xz 文件名 / xz -z 文件名 (不能壓縮目錄)

[root@localhost d6z]# xz 1.txt
[root@localhost d6z]# ll -h
總用量 3.4M
-rw-r--r--. 1 root root  56K 1月   3 22:20 1.txt.xz        ##壓縮級別很高
-rw-r--r--. 1 root root 1.7M 1月   3 22:56 2.txt
-rw-r--r--. 1 root root 1.7M 1月   4 21:35 3.txt


·解壓縮命令:xz -d 壓縮文件名 / unxz 壓縮文件名

[root@localhost d6z]# unxz 1.txt.xz
[root@localhost d6z]# ll -h
總用量 4.9M
-rw-r--r--. 1 root root 1.7M 1月   3 22:20 1.txt
-rw-r--r--. 1 root root 1.7M 1月   3 22:56 2.txt
-rw-r--r--. 1 root root 1.7M 1月   4 21:35 3.txt



·設定壓縮級別:xz -級別 文件名 (1-9,默認6)

[root@localhost d6z]# xz -9 1.txt
[root@localhost d6z]# ll -h
總用量 3.4M
-rw-r--r--. 1 root root  56K 1月   3 22:20 1.txt.xz
-rw-r--r--. 1 root root 1.7M 1月   3 22:56 2.txt
-rw-r--r--. 1 root root 1.7M 1月   4 21:35 3.txt


·查看壓縮文件內容:xzcat 壓縮文件名

[root@localhost d6z]# xzcat 1.txt.xz

內容過多,不詳細展示


·壓縮到指定目錄:xz -c 文件名 > 壓縮文件絕對路徑

[root@localhost d6z]# xz -c 1.txt > /tmp/1.txt.xz
[root@localhost d6z]# ll
總用量 4992
-rw-r--r--. 1 root root 1700160 1月   3 22:20 1.txt         ##被壓縮的文件不會被刪除
-rw-r--r--. 1 root root 1700160 1月   3 22:56 2.txt
-rw-r--r--. 1 root root 1700160 1月   4 21:35 3.txt
[root@localhost d6z]# ll /tmp/
總用量 672
-rw-r--r--. 1 root root   166901 1月   4 21:32 1.txt.bz2
-rw-r--r--. 1 root root   442631 1月   3 22:51 1.txt.gz
-rw-r--r--. 1 root root   57088 1月   4 22:00 1.txt.xz
drwxr-xr-x. 2 root root     45 1月   4 21:59 d6z
-rwx------. 1 root root    836 12月   28 05:59 ks-script-ThyP1C
-rw-r--r--. 1 root root  10152 12月   31 23:18 passwd
drwx------. 3 root root     17 1月   4 18:26 systemd-private-29544dd479044cf3a1aba0ff5f5af001-chronyd.service-gea3cL
drwx------. 3 root root     17 1月   4 18:26 systemd-private-29544dd479044cf3a1aba0ff5f5af001-vgauthd.service-37GJ3e
drwx------. 3 root root     17 1月   4 18:26 systemd-private-29544dd479044cf3a1aba0ff5f5af001-vmtoolsd.service-BZPrDh
-rw-------. 1 root root     0 12月   28 05:36 yum.log



·解壓縮到指定目錄:xz -d -c 壓縮文件絕對路徑 > 文件名

[root@localhost d6z]# xz -d -c /tmp/1.txt.xz > 4.txt
[root@localhost d6z]# ll /tmp/
總用量 672
-rw-r--r--. 1 root root  166901 1月    4 21:32 1.txt.bz2
-rw-r--r--. 1 root root  442631 1月    3 22:51 1.txt.gz
-rw-r--r--. 1 root root  57088 1月    4 22:00 1.txt.xz       ##被解壓縮的文件不會被刪除
drwxr-xr-x. 2 root root    58 1月    4 22:01 d6z
-rwx------. 1 root root   836 12月    28 05:59 ks-script-ThyP1C
-rw-r--r--. 1 root root  10152 12月   31 23:18 passwd
drwx------. 3 root root     17 1月   4 18:26 systemd-private-29544dd479044cf3a1aba0ff5f5af001-chronyd.service-gea3cL
drwx------. 3 root root     17 1月   4 18:26 systemd-private-29544dd479044cf3a1aba0ff5f5af001-vgauthd.service-37GJ3e
drwx------. 3 root root     17 1月   4 18:26 systemd-private-29544dd479044cf3a1aba0ff5f5af001-vmtoolsd.service-BZPrDh
-rw-------. 1 root root     0 12月   28 05:36 yum.log
[root@localhost d6z]# ll
總用量 6656
-rw-r--r--. 1 root root 1700160 1月   3 22:20 1.txt
-rw-r--r--. 1 root root 1700160 1月   3 22:56 2.txt
-rw-r--r--. 1 root root 1700160 1月   4 21:35 3.txt
-rw-r--r--. 1 root root 1700160 1月   4 22:01 4.txt           ##被解壓出的文件



2018-1-5 4周4次課 壓縮工具 gzip、bzip2、xz