1. 程式人生 > >6.22 6.1-6.4

6.22 6.1-6.4

find utf with 網絡傳輸 strong all 完成後 打開 消失

6.1 壓縮打包介紹

壓縮文件和普通文件的區別:

壓縮完成後文件變小;

網絡傳輸時占用的帶寬資源變少;

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

執行的結果追加到文件1.txt

[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,所以從512K1.0M至少需要執行兩次find,但上面僅執行了一次find即為1.0M

512K1.0M1.0M2.0M以及1.0M1.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