這裡討論為什麼 bzip2
壓縮格式會漸漸被 xz
取代?那 gzip
又如何?
在 UNIX/Linux 社群中,傳統上如果要壓縮檔案通常都是使用 tar
加上 gzip
的壓縮方式,而後來 gzip
漸漸被 bzip2
所取代,而現在有越來越多人改用以 LZMA2 為基礎的 xz
來壓縮 tar
檔,連 kernel.org 也從 2013 年的年底開始,同時採用 tar.gz
與 tar.xz
兩種壓縮格式釋出 Linux 核心原始碼,而位於首頁的超連結則是直接使用 tar.xz
這個格式,以往的 tar.bz2
則是直接被捨棄。
放在網路上提供大家下載的資料,在選擇壓縮格式的時候,通常都會考慮以下幾點因素:
- 壓縮率(compression ratio),也就是能夠將檔案壓到多小。
- 解壓縮所需要的時間,也就是需要的 CPU 計算量。
- 解壓縮所需要的記憶體空間。
- 相容性(compatibility),亦即解壓縮程式的普遍性,是不是大部分人都可以有辦法解壓縮這種格式?
解壓縮所需要的時間與記憶體空間通常不是重點,因為使用者可以選擇比較好的電腦來解壓縮,而且解壓縮的動作只需要一次,就算解壓縮的過程比較慢一些,通常也都是在可接受的範圍之內。
剩下的就是壓縮率以及相容性的問題,傳統上的 gzip
無庸置疑是相容性最好的壓縮格式,現在應該每一種 UNIX/Linux 系統都可以解壓縮這種格式,所以如果若要確保每一位使用者都可以解壓縮,gzip
是首選。
而在壓縮率上,最新的 tar.xz
壓縮率是最好的,不過它跟 tar.bz2
比較起來,雖然 CPU 用的比較少,不過卻需要較大的記憶體空間 (當然需要的記憶體跟壓縮的參數會有相關,壓縮率設定比較高時,所需要的記憶體也會比較多),而且普及率也比較低。
如果要看詳盡的壓縮格式測試報告,可以參考 Quick Benchmark。
基於以上的原因,我們會有以下的結論:
- 需要在記憶體很小的機器(如小於 128 MB)上解壓縮時,則選擇
gzip
格式。 - 需要在很簡單、沒有什麼工具可用的機器上解壓縮時,則選擇
gzip
格式。 - 需要節省網路頻寬、縮短下載所需要的時間時,則選擇
xz
格式。
由於在這幾種狀況下,bzip2
通常都不是首選,所以後來 bzip2
就被淘汰了。
以下是三種壓縮格式的指令,給大家參考。
tar.gz
壓縮 tar.gz
:
tar zcvf file_name.tar.gz dir_name
解壓縮 tar.gz
:
tar zxvf file_name.tar.gz
tar.bz2
壓縮 tar.bz2
:
tar jcvf file_name.tar.bz2 dir_name
解壓縮 tar.bz2
:
tar jxvf file_name.tar.bz2
tar.xz
壓縮 tar.xz
:
tar Jcvf file_name.tar.xz dir_name
解壓縮 tar.xz
:
tar Jxvf file_name.tar.xz
參考資料:Stack Exchange
LJason
学习了,谢谢分享
林博仁
感謝分享