初學(xué)者必看:Linux壓縮那些事兒
Linux的壓縮命令的源文件只能有一個(gè),這意味在壓縮之前不得不先將要壓縮的所有文件打包成一個(gè)包,然后再壓縮包,這樣來(lái)完成對(duì)多個(gè)文件的壓縮。所以在了解解壓縮之前就必須先了解打包命令。
Linux的打包一般都是通過(guò)tar命令來(lái)完成的,通過(guò)man tar,可以得到一些信息,tar來(lái)完成不同的動(dòng)作是通過(guò)指定不同的參數(shù)來(lái)完成的,通常使用的也就是——x/c,這兩個(gè)參數(shù),它們的字面含義是c——create,x——extract,創(chuàng)建和分包提取,另外還有一些不常用的參數(shù),比如a,將tar添加到另外一個(gè)tar包的末尾,t,列出包中的文件,-C,將工作目錄切換到指定的目錄下,指定這個(gè)參數(shù)就可以將解壓后的文件放到指定的目錄當(dāng)中去了,等。另外有一個(gè)重要的參數(shù)f,這個(gè)參數(shù)可以打包的結(jié)果放在一個(gè)文件當(dāng)中。
下面舉兩個(gè)簡(jiǎn)單的例子說(shuō)明打包和分包提?。?/p>
1.打包文件,現(xiàn)在有3個(gè)文件,文件名分別是fiel1,file2,file3,把這三個(gè)文件打包成file.tar.
tar -cf file.tar file1 file2 file3
-c,打包模式,-f指定將要?jiǎng)?chuàng)建的打包結(jié)果存放文件。
2.解包文件,現(xiàn)在有一個(gè)包file.tar,將它解包。
tar -xf file.tar
-x,解包模式,-f指定tar包文件。
講完打包,接著將壓縮,壓縮的作用毋庸置疑,一旦一件事物變的更為簡(jiǎn)單之后,各方面的操作就更為簡(jiǎn)單,Linux的壓縮一般有幾種方式,它們是gzip壓縮,bzip2壓縮,xz壓縮。它們的輸入都只有一個(gè),下面講一個(gè)實(shí)例,分別用這三種壓縮方式來(lái)壓縮file.tar,然后壓縮好的壓縮文件再分別用這三種方式解壓,生成xfile.tar,由于分別對(duì)單純的解壓和壓縮并不是本文的重點(diǎn),所以有些參數(shù)就不著重介紹,但需要的時(shí)候會(huì)簡(jiǎn)單的介紹下。
1.用gzip操作
壓縮:gzip file.tar (如想將文件壓縮到指定的文件當(dāng)中去,可用"gzip -c file.tar > xxx",來(lái)完成,以下相同)
解壓:gunzip -c file.tar.gz > xfile.tar
2.用bzip2操作
壓縮:bzip2 -c file.tar > xifle.tar.bz2
解壓:bunzip2 -cv xfile.tar.bz2 > xfile.tar
3.用xz操作
壓縮:xz -c file.tar > xfile.tar.xz
解壓:unxz -c xfile.tar.xz > xfile.tar
對(duì)于壓縮來(lái)講,壓縮率顯然是首要關(guān)注點(diǎn),就壓縮率而言,xz>bzip2>gzip,一般情況下xz能比bzip2高出15%的壓縮率,比gzip高出30%的壓縮率,但是另外的有一些東西在具體的場(chǎng)合下還是需要關(guān)心的,比如CPU占有率,xz雖然壓縮比高,但是它的耗時(shí)卻是最多的,這意味著占用了更多的CPU時(shí)間片,所以在選擇壓縮算法的時(shí)候還應(yīng)該考慮到現(xiàn)在的首要關(guān)注點(diǎn)是什么,以此來(lái)選擇壓縮算法。
上面分別講解了打包和解壓縮這兩個(gè)過(guò)程,但這兩個(gè)過(guò)程是分開(kāi)的,在通常情況下,這兩個(gè)過(guò)程不會(huì)分開(kāi),而是用tar包一步將多個(gè)文件打包壓縮成一個(gè)壓縮包,下面將分別使用tar命令調(diào)用這三種壓縮方式來(lái)完成一步將多個(gè)文件打包壓縮成一個(gè)壓縮包。
1.用tar調(diào)用gzip將file1,file2,file3生成壓縮包
tar -czvf file.tar.gz file{1,2,3}
2.用tar調(diào)用bzip2將file1,file2,file3生成壓縮包
tar -cjvf file.tar.bz2 file{1,2,3}
3.用tar調(diào)用xz將file1,file2,file3生成壓縮包
tar -cJvf file.tar.xz file{1,2,3}
對(duì)于上面的文字,有點(diǎn)需要注意,那就是后綴名并不是必須的,Linux當(dāng)中后綴名都不是必須的,這應(yīng)該是一個(gè)基礎(chǔ)點(diǎn),之所以指定后綴名是為了便于區(qū)別,也方便一些粗糙的識(shí)別程序。
閱讀完上面的文字,我相信對(duì)Linux的壓縮應(yīng)該有一定程度的掌握,其實(shí)最重要的還是要學(xué)會(huì)閱讀man page,里面應(yīng)有盡有,只是過(guò)全就會(huì)過(guò)于復(fù)雜,不太適合初學(xué)者。