目錄
一、壓縮打包介紹
二殃饿、gzip壓縮工具
三谋作、bzip2壓縮工具
四、xz壓縮工具
一乎芳、壓縮打包介紹
簡(jiǎn)單的說(shuō)遵蚜,壓縮文件就是經(jīng)過(guò)壓縮軟件壓縮的文件帖池,壓縮的原理是把文件的二進(jìn)制代碼壓縮,把相鄰的0,1代碼減少吭净,比如有000000睡汹,可以把它變成6個(gè)0 的寫(xiě)法60,來(lái)減少該文件的空間寂殉。
使用壓縮文件囚巴,不僅可以節(jié)省磁盤(pán)空間,而且可以在文件傳輸時(shí)節(jié)省網(wǎng)絡(luò)寬帶友扰。
在Linux下彤叉,壓縮文件最好加上后綴名,這是為了判斷壓縮文件是由哪種壓縮工具所壓縮的村怪,而后才能正確地解壓縮這個(gè)文件秽浇。
常見(jiàn)的壓縮文件有:
- Windows下:.rar,.zip.实愚,7z
- Linux下:.zip兼呵,.gz,.bz2腊敲,.xz击喂,.tar.gz,.tar.bz2碰辅,tar.xz
下面是Linux下常見(jiàn)的后綴名所對(duì)應(yīng)的壓縮工具:
.gz:表示由gzip壓縮工具壓縮的文件懂昂。
.bz2:表示由bzip2壓縮工具壓縮的文件。
.tar:表示由tar打包程序打包的文件(tar并沒(méi)有壓縮功能没宾,只是把一個(gè)目錄合并成一個(gè)文件)凌彬。
.tar.gz:可以理解為先由tar打包,然后再由gzip壓縮循衰。
.tar.bz2:可以理解為先由tar打包铲敛,然后再由bzip2壓縮。
.tar.xz:可以理解成先由tar打包会钝,然后再xz壓縮伐蒋。
二、gzip壓縮工具
gzip命令的格式為gzip [ -d# ] filename迁酸,其中#為1~9的數(shù)字先鱼。
-d:該參數(shù)在解壓縮時(shí)使用。
-#:表示壓縮等級(jí)奸鬓,1為最差焙畔,9為最好,6為默認(rèn)串远。
我們通過(guò)一個(gè)例子來(lái)說(shuō)明gzip的用法宏多,首先創(chuàng)建一個(gè)大文件:
[root@minglinux-01 ~]# mkdir /tmp/8
[root@minglinux-01 ~]# cd /tmp/8
[root@minglinux-01 8]# find /etc/ -type f -name "*.conf" -exec cat {} >>1.txt \; //多執(zhí)行幾次
[root@minglinux-01 8]# ls
1.txt
[root@minglinux-01 8]# du -sh 1.txt
2.2M 1.txt
[root@minglinux-01 8]# wc -l 1.txt
43204 1.txt
find /etc/ -type f -name "*.conf" -exec cat {} >>1.txt \;
這行命令是查找/etc/目錄下所有.conf文件并把這些文件的內(nèi)容全部追加到1.txt文件中儿惫,我們可以重復(fù)執(zhí)行這行命令幾次使這個(gè)文件變更大一些。這個(gè)大文件用來(lái)進(jìn)行之后的壓縮操作伸但。
下面使用gzip壓縮和解壓文件姥闪,命令如下:
[root@minglinux-01 8]# gzip 1.txt
[root@minglinux-01 8]# ls
1.txt.gz
[root@minglinux-01 8]# du -sh 1.txt.gz
440K 1.txt.gz
[root@minglinux-01 8]# gzip -d 1.txt.gz
[root@minglinux-01 8]# ls
1.txt
[root@minglinux-01 8]# du -sh 1.txt
1.7M 1.txt
上例我們看到壓縮再解壓后的1.txt文件變小了,這是因?yàn)槲募旧碛幸恍┨摰目臻g砌烁,當(dāng)壓縮再解壓就把這些虛的空間就被擠掉了筐喳。
指定壓縮級(jí)別為1時(shí)執(zhí)行壓縮,壓縮文件為520k函喉,比之前的440k要大避归,示例如下:
[root@minglinux-01 8]# du -sh 1.txt
1.7M 1.txt
[root@minglinux-01 8]# gzip -1 1.txt
[root@minglinux-01 8]# ls
1.txt.gz
[root@minglinux-01 8]# du -sh 1.txt.gz
520K 1.txt.gz
命令gzip -d
后面跟壓縮文件表示解壓壓縮文件。gzip不支持壓縮目錄管呵,壓縮目錄時(shí)會(huì)報(bào)錯(cuò)梳毙,示例命令如下:
[root@minglinux-01 8]# cd ..
[root@minglinux-01 tmp]# gzip 8/
gzip: 8/ is a directory -- ignored
[root@minglinux-01 tmp]# ls 8/
1.txt.gz
使用gzip -c
把壓縮后的文件輸出到標(biāo)準(zhǔn)輸出設(shè)備,不去更動(dòng)原始文件捐下。示例命令如下:
[root@minglinux-01 8]# gzip -c 1.txt > /tmp/1.txt.gz
[root@minglinux-01 8]# ls
1.txt
[root@minglinux-01 8]# ls /tmp/1.txt.gz
/tmp/1.txt.gz
[root@minglinux-01 8]# file !$
file /tmp/1.txt.gz
/tmp/1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Sun Sep 30 22:59:36 2018
同樣账锹,解壓時(shí)也可以保留壓縮文件并將解壓后的文件輸出到指定路徑下:
···
[root@minglinux-01 8]# gzip -d -c /tmp/1.txt.gz > /tmp/8/2.txt
[root@minglinux-01 8]# ls
1.txt 2.txt
[root@minglinux-01 8]# wc -l 1.txt 2.txt
43204 1.txt
43204 2.txt
86408 總用量
[root@minglinux-01 8]# du -sh *.txt
1.7M 1.txt
1.7M 2.txt
···
三、bzip2壓縮工具
bzip2命令的格式為bzip2 [ -dz ] filename坷襟,它只有-z(壓縮)和-d(解壓縮)兩個(gè)常用選項(xiàng)奸柬。壓縮級(jí)別有1~9,默認(rèn)級(jí)別是9婴程。bzip2比gzip壓縮更狠廓奕,耗費(fèi)cpu資源會(huì)更多。
系統(tǒng)中bzip2未安裝档叔,先執(zhí)行yum install -y bzip2
安裝桌粉。
使用bzip2壓縮和解壓的示例命令如下:
[root@minglinux-01 8]# bzip2 1.txt
[root@minglinux-01 8]# du -sh 1.txt.bz2
168K 1.txt.bz2
[root@minglinux-01 8]# bzip2 -d 1.txt.bz2
[root@minglinux-01 8]# ls
1.txt 2.txt
bzip2命令同樣也不可以壓縮目錄,壓縮目錄時(shí)會(huì)報(bào)錯(cuò)衙四。支持使用bzip2 -c
保留源文件并輸出壓縮文件到指定路徑铃肯。
四、xz壓縮工具
xz命令的格式為xz [-dz] filename传蹈,用法跟bzip2一樣押逼。
使用xz壓縮和解壓文件的示例命令如下:
[root@minglinux-01 8]# xz 1.txt
[root@minglinux-01 8]# ls
1.txt.xz 2.txt
[root@minglinux-01 8]# du -sh 1.txt.xz
60K 1.txt.xz
[root@minglinux-01 8]# xz -d 1.txt.xz
[root@minglinux-01 8]# ls
1.txt 2.txt
可以看到xz壓縮得更狠,比gzip卡睦、bzip2命令的壓縮文件更小宴胧。
xz命令同樣也不可以壓縮目錄漱抓,壓縮目錄時(shí)會(huì)報(bào)錯(cuò)表锻。同樣的,xz也支持-c選項(xiàng)乞娄。
[root@minglinux-01 8]# xz /tmp/8
xz: /tmp/8: Is a directory, skipping