平時工作中大多用解壓縮命令,要是遇到壓縮就現查(這不是一個好習慣),於是整理下Linux下建立與解壓zip、tar、tar.gz和tar.bz2檔案及他們之間壓縮率對比,在自己的腦袋記憶體空間有限又不經常使用的時候以便於備忘。現整理如下:
目前Linux下常見的壓縮檔副檔名:
*.Z compress程式壓縮的檔案(最早期使用),壓縮後取代源檔案;
*.zip 一個誇平台的檔案打包程式,適用於Linux、windows和Mac OS系統;
*.bz2 bzip2程式壓縮的檔案;
*.gz gzip程式壓縮的檔案;
*.tar tar程式打包的檔案,並沒有壓縮;
*.tar.gz tar程式打包的檔案,並經過gzip程式的壓縮;
*.tar.bz2 tar程式打包的檔案,並經過bzip2程式壓縮。
Tips:所謂副檔名只是大家約定的通用格式,是為了更方便的能一眼識別出是什麼壓縮類型,當然你可以打包或壓縮為任意格式的尾碼名,只要你願意。
A)*.zip格式是大家最常見的一種,它具有誇作業系統平台性,可以同時在windows、Linux和Mac Os上使用。
大家可以用zip格式壓縮那些需要共用給windows使用者的檔案。
壓縮與解壓.ZIP格式的檔案:
[root@local tmp]$ zip -r test.zip tmp
adding: test/ (stored 0%)
adding: test/data-file (deflated 24%)
adding: test/r (deflated 51%)
下面是如果解壓一個zip文檔:
[root@local tmp]$ rm -rf test #為測試解壓,先刪除目前的目錄下的tmp檔案
[root@local tmp]$ unzip test.zip
Archive: test.zip
creating: test/
inflating: test/data-file
inflating: test/rB)
壓縮與解壓*.tar*、.tar.gz、*.tar.bz2 格式的檔案及對比:
Tar是在Linux中使用得非常廣泛的文檔打包格式。它的好處就是它只消耗非常少的CPU以及時間去打包檔案,他僅僅只是一個打包工具,並不負責壓縮,壓縮是由gzip與bzip2來實現的。
因此把*.tar*、.tar.gz、*.tar.bz2 放到一起來舉例:
比如我們要把目錄/var/tmp下的test目錄打包壓縮到目前的目錄
[root@local tmp]$ tar -cvf test.tar test ### 僅打包,不壓縮
[root@local tmp]$ tar -zcvf test.tar.gz test ### 打包後以gzip壓縮
[root@local tmp]$ tar -jcvf test.tar.bz2 test ### 打包後以bzip2壓縮
[root@local tmp]$ ll test.tar* ### 對比壓縮後檔案大小
-rw-r--r-- 1 Lee mock 10240 01-18 17:05 test.tar
-rw-r--r-- 1 Lee mock 357 01-18 17:06 test.tar.bz2
-rw-r--r-- 1 Lee mock 327 01-18 17:05 test.tar.gz
如何解壓縮包:
[root@local tmp]$ tar -xvf test.tar
[root@local tmp]$ tar -xvf test.tar.gz
[root@local tmp]$ tar -jxvf test.tar.bz2
上面測試中,每次要刪除解壓後的test檔案後解壓打其他目錄,因為如果不定義解壓後目錄路徑和名字則預設解壓到目前的目錄並以把壓縮包名稱作為檔案夾名字。如果要解壓到其他目錄(如:/var/tmp/find)則如下:
[root@local tmp]$ tar -jxvf test.tar.bz2 -C /var/tmp/find
關於tar.gz和tar.bz2壓縮率的問題:
*.tar.gz 在壓縮時不會佔用太多CPU的,而且可以得到一個非常理想的壓縮率。也會被簡寫成tgz。
*.tar.bz2網上好的資料說這種壓縮格式是壓縮率最好的、它比前面的方式要佔用更多的CPU與時間。
但是經過上面的實驗顯示發現test.tar.gz的大小竟然比test.tar.bz2的更小(這是否意味者*.tar.gz擁有更小的壓縮率)
如下附上這次測驗的檔案包(點擊檔案名稱下載):
Test檔案夾中的2個檔案: data-file 和 r
test.tar test.tar.gz test.tar.bz2