History

為什麼 tar 存檔格式切換到 xz 壓縮來代替 bzip2 以及 gzip 呢?

  • January 27, 2020

越來越多tar的檔案使用xz基於 LZMA2 的格式進行壓縮,而不是傳統的bzip2(bz2)壓縮。事實上, kernel.org於 2013 年 12 月 27 日發布了一個較晚的“再見 bzip2公告,表明核心原始碼將從此時以 tar.gz 和 tar.xz 格式發布 - 並在網站的首頁上發布直接提供的是tar.xz.

是否有任何具體原因可以解釋為什麼會發生這種情況以及gzip在這種情況下的相關性是什麼?

對於通過 Internet 分發檔案,以下事項通常是優先事項:

  1. 壓縮比(即壓縮器使數據變得多小);
  2. 解壓時間(CPU要求);
  3. 解壓記憶體要求;和
  4. 兼容性(解壓程序的普及程度)

壓縮記憶體和 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)。

2:F21 系統範圍更改:lbzip2 作為預設 bzip2 實現

引用自:https://unix.stackexchange.com/questions/108100