1. 程式人生 > >linux常見的幾種壓縮命令tar,gz,zio,bz2

linux常見的幾種壓縮命令tar,gz,zio,bz2

腳本執行 gzip 常見 解壓 相同 打包 書寫 自己 zip

Linux下壓縮、解壓命令五花八門,不像在windows下一個winrar打遍天下無敵手,清一色的.rar .zip格式。

比如,Linux下常用的tar tar.gz tar.bz2 .Z等等不一而足。而每種壓縮和解壓方式所耗CPU時間和壓縮比率也差異甚大。在此我一一列舉,希望不當之處,敬請各位指教。 --------------------------------------------------------------------------------------------- 1 各種壓縮 解壓命令Demo (1) tar 僅僅做打包動作,相當於歸檔處理,不做壓縮;解壓也一樣,只是把歸檔文件釋放出來。

打包歸檔: tar -cvf demo.tar demo (demo為需要歸檔的目錄、文件路徑,demo.tar存放在當前腳本執行的目錄下) tar -cvf demo.tar demo1 demo2 demo3 (demo1,demo2,demo3歸檔到一個目錄)

釋放解壓: tar -xvf demo.tar (解壓至當前shell執行目錄下) tar -xvf demo.tar -C /path (/path 解壓至其它路徑)

(2)tar.gz tgz (tar.gz和tgz只是兩種不同的書寫方式,後者是一種簡化書寫,等同處理) Linux下使用非常普遍的一種壓縮方式,兼顧了壓縮時間(耗費CPU)和壓縮空間(壓縮比率) 其實這是對(1)的tar包進行gzip算法的壓縮

打包壓縮: tar -zcvf demo.tgz (demo為shell執行路徑下的目錄)

釋放解壓: tar -zxvf demo.tar (解壓至當前shell執行目錄下) tar -zxvf demo.tar -C /path (/path 解壓至其它路徑)

(3)tar.bz Linux下壓縮比率較tgz大,即壓縮後占用更小的空間,使得壓縮包看起來更小。但同時在壓縮,解壓的過程卻是非常耗費CPU時間。

打包壓縮: tar -jcvf demo.tar.bz demo (demo為shell執行路徑下的目錄)

釋放解壓: tar -jxvf demo.tar.bz (解壓至當前shell執行目錄下) tar -jxvf demo.tar.bz -C /path (/path 解壓至其它路徑)

(4) tar.bz2 較tar.bz有著更快速的效率。所使用的命令與(3)相同,不再贅述。

(5) .gz 壓縮: gzip -d demo.gz demo

解壓: gunzip demo.gz

(6) .Z 壓縮: compress files

解壓: uncompress demo.Z

(7) tar.Z 壓縮: tar -Zcvf demo.tar.Z demo

解壓: tar -Zxvf demo.tar.Z

(8) .zip 壓縮: zip -r demo.zip demo (demo為目錄)

解壓: zip demo.zip

(9) .rar 壓縮: rar -a demo.rar demo

解壓: rar -x demo.rar ---------------------------------------------------------------------------------------- 2 各種壓縮比率,占用時間對比

為了保證能夠讓壓縮比率較為明顯,需選取一個內容較多、占用空間較大的目錄作為Demo。我將自己Ubuntu 9.10中/user/local整個目錄作為範例,/user/local內所有文件總計大小為877.7MB。

在此,我們定義 壓縮比率=原內容大小/壓縮後大小,壓縮比率越大,則表明壓縮後占用空間的壓縮包越小

(1).tar tar -cvf local.tar /usr/local 打包後 local.tar: 892.6MB, 耗費時間:55 s (秒)。此實驗打包後.tar後反倒比原來文件內容更大,出乎意料! 壓縮比率為877.7/892.6=0.98(居然不是相同,等於1!)

tar -xvf local.tar 釋放877.7MB(與原/usr/local大小完全相同,符合預期),耗費時間:78 s,比打包耗時

對於.tar而言,打包比釋放較為快速,但打包後的.tar比原目錄內容所占空間要大。

(2) .tgz tar -zcvf local.tgz /usr/local 打包後 local.tgz: 344.1MB, 耗費時間: 146 s (秒)。此實驗說明.tgz壓縮到50%以下的空間,具體為 壓縮比率=877.7/344.1 =2.55

tar -zxvf local.tar 解壓877.7MB,耗費時間: 56 s。 此與.tar 正相反,解壓比打包省時了很多,接近到打包時間的三分之一。

(3) .tar.bz tar -jcvf local.tar.bz /usr/local 打包後local.tar.bz: 318.4 MB 耗費時間:330 s(即5 m 30 s,非常之漫長!) 壓縮比率為877.7/318.4=2.76

相對於.tgz的壓縮得更小巧,但優勢並不大,CPU耗費時間卻多了兩倍多。

tar -xcvf local.tar.bz 解壓877.7 MB,耗費時間: 128 s。 此與.tgz相似,解壓比打包省時很多,接近打包時間的三分之一。

(4) .tar.bz2 tar -jcvf local.tar.bz2 /usr/local 打包後local.tar.bz: 318.4 MB 耗費時間: 302 s 壓縮比率為877.7/318.4=2.76

綜上結果,初步結論:

綜合起來,在壓縮比率上: tar.bz2>tgz>tar 占用空間與壓縮比率成反比: tar.bz2<tgz<tar 耗費時間(打包,解壓) 打包:tar.bz2>tgz>tar 解壓: tar.bz2>tar>tgz 從效率角度來說,當然是耗費時間越短越好

因此,Linux下對於占用空間與耗費時間的折衷多選用tgz格式,不僅壓縮率較高,而且打包、解壓的時間都較為快速,是較為理想的選擇。

結論:

再一次印證了物理空間與時間的矛盾(想占用更小的空間,得到高壓縮比率,肯定要犧牲較長的時間;反之,如果時間較為寶貴,要求快速,那麽所得的壓縮比率一定較小,當然會占用更大的空間了)。 一般情況下不會有太大的影響: 個人一般喜歡使用:tar.gz壓縮

linux常見的幾種壓縮命令tar,gz,zio,bz2