linux的壓縮指令的源檔案隻能有一個,這意味在壓縮之前不得不先将要壓縮的所有檔案打包成一個包,然後再壓縮包,這樣來完成對多個檔案的壓縮。是以在了解解壓縮之前就必須先了解打包指令。
linux的打包一般都是通過tar指令來完成的,通過man tar,可以得到一些資訊,tar來完成不同的動作是通過指定不同的參數來完成的,通常使用的也就是——x/c,這兩個參數,它們的字面含義是c——create,x——extract,建立和分包提取,另外還有一些不常用的參數,比如a,将tar添加到另外一個tar包的末尾,t,列出包中的檔案,-c,将工作目錄切換到指定的目錄下,指定這個參數就可以将解壓後的檔案放到指定的目錄當中去了,等。另外有一個重要的參數f,這個參數可以打包的結果放在一個檔案當中。
下面舉兩個簡單的例子說明打包和分包提取:
1.打封包件,現在有3個檔案,檔案名分别是fiel1,file2,file3,把這三個檔案打包成file.tar.
-c,打包模式,-f指定将要建立的打包結果存放檔案。
2.解封包件,現在有一個包file.tar,将它解包。
-x,解包模式,-f指定tar封包件。
講完打包,接着将壓縮,壓縮的作用毋庸置疑,一旦一件事物變的更為簡單之後,各方面的操作就更為簡單,linux的壓縮一般有幾種方式,它們是gzip壓縮,bzip2壓縮,xz壓縮。它們的輸入都隻有一個,下面講一個執行個體,分别用這三種壓縮方式來壓縮file.tar,然後壓縮好的壓縮檔案再分别用這三種方式解壓,生成xfile.tar,由于分别對單純的解壓和壓縮并不是本文的重點,是以有些參數就不着重介紹,但需要的時候會簡單的介紹下。
1.用gzip操作
壓縮:gzip file.tar (如想将檔案壓縮到指定的檔案當中去,可用"gzip -c file.tar > xxx",來完成,以下相同)
解壓: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
對于壓縮來講,壓縮率顯然是首要關注點,就壓縮率而言,xz>bzip2>gzip,一般情況下xz能比bzip2高出15%的壓縮率,比gzip高出30%的壓縮率,但是另外的有一些東西在具體的場合下還是需要關心的,比如cpu占有率,xz雖然壓縮比高,但是它的耗時卻是最多的,這意味着占用了更多的cpu時間片,是以在選擇壓縮算法的時候還應該考慮到現在的首要關注點是什麼,以此來選擇壓縮算法。
上面分别講解了打包和解壓縮這兩個過程,但這兩個過程是分開的,在通常情況下,這兩個過程不會分開,而是用tar包一步将多個檔案打包壓縮成一個壓縮包,下面将分别使用tar指令調用這三種壓縮方式來完成一步将多個檔案打包壓縮成一個壓縮包。
1.用tar調用gzip将file1,file2,file3生成壓縮包
2.用tar調用bzip2将file1,file2,file3生成壓縮包
3.用tar調用xz将file1,file2,file3生成壓縮包
對于上面的文字,有點需要注意,那就是字尾名并不是必須的,linux當中字尾名都不是必須的,這應該是一個基礎點,之是以指定字尾名是為了便于差別,也友善一些粗糙的識别程式。
閱讀完上面的文字,我相信對linux的壓縮應該有一定程度的掌握,其實最重要的還是要學會閱讀man page,裡面應有盡有,隻是過全就會過于複雜,不太适合初學者
<b>原文釋出時間為:2013-04-27</b>
<b>本文來自雲栖社群合作夥伴“linux中國”</b>