為什麼 tar 存檔格式切換到 xz 壓縮來代替 bzip2 以及 gzip 呢?
越來越多
tar
的檔案使用xz
基於 LZMA2 的格式進行壓縮,而不是傳統的bzip2(bz2)
壓縮。事實上, kernel.org於 2013 年 12 月 27 日發布了一個較晚的“再見 bzip2 ”公告,表明核心原始碼將從此時以 tar.gz 和 tar.xz 格式發布 - 並在網站的首頁上發布直接提供的是tar.xz
.是否有任何具體原因可以解釋為什麼會發生這種情況以及
gzip
在這種情況下的相關性是什麼?
對於通過 Internet 分發檔案,以下事項通常是優先事項:
- 壓縮比(即壓縮器使數據變得多小);
- 解壓時間(CPU要求);
- 解壓記憶體要求;和
- 兼容性(解壓程序的普及程度)
壓縮記憶體和 CPU 要求不是很重要,因為您可以為此使用大型快速機器,並且只需執行一次。
與 bzip2 相比,xz 具有更好的壓縮比和更低(更好)的解壓時間。但是,在通常使用的壓縮設置下,它需要更多記憶體來解壓縮$$ 1 $$並且不那麼普遍。Gzip 使用的記憶體比任何一個都少。
因此,gzip 和 xz 格式的存檔都已發布,您可以選擇:
- 需要在記憶體非常有限(<32 MB)的機器上解壓縮:gzip。鑑於,在談論核心原始碼時不太可能。
- 需要解壓最少的可用工具:gzip
- 想要節省下載時間和/或頻寬:xz
沒有真正的因素組合可以讓您選擇 bzip2。所以它正在被淘汰。
我在一篇博文中查看了壓縮比較。我沒有嘗試複製結果,我懷疑其中一些已經改變(大多數情況下,我預計
xz
已經改進,因為它是最新的。)(在某些特定情況下,一個好的 bzip2 實現可能比 xz 更可取:bzip2 可以比 xz 更好地壓縮包含大量零和基因組 DNA 序列的文件。新版本的 xz 現在具有(可選)塊模式,允許數據恢復在損壞點和並行壓縮之後
$$ in theory $$減壓。以前,只有 bzip2 提供這些。$$ 2 $$但是這些都與核心分發無關)
1:在存檔大小中,
xz -3
大約是bzip -9
. 然後 xz 使用較少的記憶體來解壓縮。但是xz -9
(例如,用於 Linux 核心壓縮包)使用的遠不止bzip -9
. (甚至xz -0
需要更多gzip -9
)。