這裡討論為什麼 bzip2 壓縮格式會漸漸被 xz 取代?那 gzip 又如何?
在 UNIX/Linux 社群中,傳統上如果要壓縮檔案通常都是使用 tar 加上 gzip 的壓縮方式,而後來 gzip 漸漸被 bzip2 所取代,而現在有越來越多人改用以 LZMA2 為基礎的 xz 來壓縮 tar 檔,連 kernel.org 也從 2013 年的年底開始,同時採用 tar.gz 與 tar.xz 兩種壓縮格式釋出 Linux 核心原始碼,而位於首頁的超連結則是直接使用 tar.xz 這個格式,以往的 tar.bz2 則是直接被捨棄。
解壓縮所需要的時間與記憶體空間通常不是重點,因為使用者可以選擇比較好的電腦來解壓縮,而且解壓縮的動作只需要一次,就算解壓縮的過程比較慢一些,通常也都是在可接受的範圍之內。
剩下的就是壓縮率以及相容性的問題,傳統上的 gzip 無庸置疑是相容性最好的壓縮格式,現在應該每一種 UNIX/Linux 系統都可以解壓縮這種格式,所以如果若要確保每一位使用者都可以解壓縮,gzip 是首選。
而在壓縮率上,最新的 tar.xz 壓縮率是最好的,不過它跟 tar.bz2 比較起來,雖然 CPU 用的比較少,不過卻需要較大的記憶體空間 (當然需要的記憶體跟壓縮的參數會有相關,壓縮率設定比較高時,所需要的記憶體也會比較多),而且普及率也比較低。
如果要看詳盡的壓縮格式測試報告,可以參考 Quick Benchmark。
基於以上的原因,我們會有以下的結論:
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