6.22 6.1-6.4
壓縮文件和普通文件的區別:
壓縮完成後文件變小;
網絡傳輸時占用的帶寬資源變少;
Linux下常見的壓縮文件後綴名:
.zip/.gz/.bz2/.xz/.tar.gz/.tar.bz2/.tar.xz
Linux下文件後綴名不決定由什麽程序打開該文件,只是純粹的名稱;
但為了方便區分,需要將相應的壓縮文件寫成約定好的後綴名;
6.2 gzip壓縮工具
[root@hyc-01-01 ~]# find /etc/ -type f -name *.conf -exec cat {} >> 1.txt \;
查找/etc/目錄下f類型且文件名為*.conf的文件,對查找到的文件執行cat,並將cat
[root@hyc-01-01 ~]# find /etc/ -type f -name *.conf -exec cat {} >> 1.txt \;
[root@hyc-01-01 ~]# du -sh 1.txt
256K 1.txt
[root@hyc-01-01 ~]# find /etc/ -type f -name *.conf -exec cat {} >> 1.txt \;
[root@hyc-01-01 ~]# du -sh 1.txt
512K 1.txt
[root@hyc-01-01 ~]# find /etc/ -type f -name *.conf -exec cat {} >> 1.txt \;
[root@hyc-01-01 ~]# du -sh 1.txt
1.0M 1.txt
[root@hyc-01-01 ~]# find /etc/ -type f -name *.conf -exec cat {} >> 1.txt \;
[root@hyc-01-01 ~]# du -sh 1.txt
1.0M 1.txt
[root@hyc-01-01 ~]# find /etc/ -type f -name *.conf -exec cat {} >> 1.txt \;
[root@hyc-01-01 ~]# du -sh 1.txt
2.0M 1.txt
文件大小增加量不正常:
由以上執行可知,每次執行find後文件大小增加256K,所以從512K到1.0M至少需要執行兩次find,但上面僅執行了一次find即為1.0M
512K到1.0M和1.0M到2.0M以及1.0M到1.0M在文件增大時增加的空間中存在空隙,此時文件被壓縮,再被解壓則文件大小可能會與壓縮前文件大小不同
[root@hyc-01-01 ~]# wc -l 1.txt
32524 1.txt 統計文件總行數
[root@hyc-01-01 ~]# ls
111 1.txt 222 3.txt anaconda-ks.cfg.1 hyc2 ls2 test.txt 新建文本文檔.txt
[root@hyc-01-01 ~]# gzip 1.txt
[root@hyc-01-01 ~]# ls
111 222 anaconda-ks.cfg.1 ls2 新建文本文檔.txt
1.txt.gz 3.txt hyc2 壓縮後目錄中的1.txt消失,出現壓縮包1.txt.gz
[root@hyc-01-01 ~]# du -sh 1.txt.gz
320K 1.txt.gz 壓縮後文件大小
[root@hyc-01-01 ~]# gzip -d 1.txt.gz 加壓壓縮包
[root@hyc-01-01 ~]# du -sh 1.txt
1.3M 1.txt 解壓前文件大小2.0M,解壓後文件大小1.3M
壓縮後再解壓縮會將文件的空隙擠壓掉,所以解壓後的文件比原文件小
[root@hyc-01-01 ~]# wc -l 1.txt
32524 1.txt 文件行數與原先相同
指定gzip壓縮級別:
[root@hyc-01-01 ~]# gzip -1 1.txt 指定壓縮時的級別為1
[root@hyc-01-01 ~]# du -sh 1.txt.gz
380K 1.txt.gz
默認gzip執行6級別的壓縮,級別越高壓縮的越小,壓縮耗費的CPU資源越多
[root@hyc-01-01 ~]# gunzip 1.txt.gz 解壓縮,作用與-d相同
[root@hyc-01-01 ~]# gzip -9 1.txt
[root@hyc-01-01 ~]# du -sh 1.txt.gz
320K 1.txt.gz
執行到一定級別後,級別再高,壓縮文件也不會變的更小
[root@hyc-01-01 ~]# file 1.txt.gz 顯示一個文件的壓縮信息
1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Sat Jun 23 21:52:17 2018, max compression 提供的信息包括壓縮使用的工具、被壓縮文件的名稱、文件最後修改時間、使用的壓縮級別(max compression最高級)
[root@hyc-01-01 ~]# zcat 1.txt.gz
先解壓壓縮文件再查看文件內容,查看壓縮文件時使用zcat,此時cat無效
[root@hyc-01-01 ~]# gunzip -c 1.txt.gz > /tmp/2.txt.t
-c 指定解壓縮包時原壓縮包不消失
> 指定解壓縮後的文件保存的路徑及文件名(可以不指定文件名則使用默認)
gzip不能壓縮目錄
6.3 bzip2壓縮工具
同樣不能壓縮目錄;
一般比gzip壓縮的更小;
[root@hyc-01-01 ~]# yum install -y bzip2 安裝bzip2
[root@hyc-01-01 ~]# bzip2 1.txt 壓縮1.txt
[root@hyc-01-01 ~]# du -sh
248K . 一般壓縮的比gzip更小,gzip壓縮為320K
[root@hyc-01-01 ~]# bzip2 -d 1.txt.bz2 bzip2解壓縮
[root@hyc-01-01 ~]# bunzip2 1.txt.bz2
[root@hyc-01-01 ~]# bzip2 -c 1.txt > /tmp/3.txt.bz2 指定壓縮文件路徑、名稱且保留原文件
[root@hyc-01-01 ~]# du -sh /tmp/3.txt.bz2
132K /tmp/3.txt.bz2
[root@hyc-01-01 tmp]# bzip2 -d -c 3.txt.bz2 > /root/4.txt 指定解壓的路徑、文件名稱且保留解壓包
[root@hyc-01-01 tmp]# cd
[root@hyc-01-01 ~]# du -sh 4.txt
1.3M 4.txt
bzip2的壓縮級別:
[root@hyc-01-01 ~]# bzip2 4.txt
[root@hyc-01-01 ~]# du -sh 4.txt.bz2
132K 4.txt.bz2
[root@hyc-01-01 ~]# bunzip2 4.txt.bz2
[root@hyc-01-01 ~]# bzip2 -9 4.txt
[root@hyc-01-01 ~]# du -sh 4.txt.bz2
132K 4.txt.bz2
bzip2默認壓縮級別即為9
[root@hyc-01-01 ~]# cat 4.txt 發現文件無法正常查看
[root@hyc-01-01 ~]# file 4.txt 查看後發現文件類型為bz2壓縮包
4.txt: bzip2 compressed data, block size = 900k
[root@hyc-01-01 ~]# file 1.txt 顯示文件為普通文本,可以cat
1.txt: UTF-8 Unicode text, with very long lines
查看壓縮包的文件內容:
[root@hyc-01-01 ~]# bzcat 4.txt.bz2
6.4 xz壓縮工具
[root@hyc-01-01 ~]# xz 1.txt
[root@hyc-01-01 ~]# du -sh 1.txt.xz
52K 1.txt.xz
[root@hyc-01-01 ~]# xz -d 1.txt.xz 解壓縮
[root@hyc-01-01 ~]# xz 1.txt
[root@hyc-01-01 ~]# unxz 1.txt.xz 解壓縮
[root@hyc-01-01 ~]# xz -c 1.txt > /tmp/1.txt.xz 壓縮並保留原文件,將壓縮包放到指定位置
[root@hyc-01-01 ~]# ls /tmp/1.txt.xz
/tmp/1.txt.xz
[root@hyc-01-01 ~]# ls 1.txt
1.txt
[root@hyc-01-01 ~]# xz -d -c /tmp/1.txt.xz > ./4.txt 解壓到指定位置並保留原文件
[root@hyc-01-01 ~]# ls 4.txt
4.txt
[root@hyc-01-01 ~]# xzcat /tmp/1.txt.xz 查看xz壓縮包內容
[root@hyc-01-01 ~]# xz 1.txt
[root@hyc-01-01 ~]# du -sh 1.txt.xz
52K 1.txt.xz
[root@hyc-01-01 ~]# unxz 1.txt.xz
[root@hyc-01-01 ~]# xz -9 1.txt
[root@hyc-01-01 ~]# du -sh 1.txt.xz
52K 1.txt.xz
xz默認使用9級最高級壓縮級別
6.22 6.1-6.4