Xz (ファイルフォーマット)

xz は、データ圧縮プログラムのひとつ、およびその圧縮データのフォーマットである。LZMA/LZMA2圧縮アルゴリズムを利用している。xz自身にアーカイブ機能はないのでアーカイブする場合はtarと組み合わせて使用するのが一般的であるtarとxzを組み合わせて作成されたアーカイブファイルの拡張子は.tar.xzとなる。。xzの登場以前より使われていたgzip、bzip2と比較すると、圧縮時にはより多くの時間とメモリを消費するが、圧縮率では概ね優位で、また伸張速度もgzipより多少遅いがbzip2よりは速い傾向にある。このことから、特にアーカイブ配布用途として、tarとgzipを組み合わせて作成する場合やtarとbzip2を組み合わせる場合と並んで採用され、bzip2を置き換えるケースも増えているLinuxやFreeBSDの配布など。。

 実装 
XZ Utilsはxzファイルを作成・展開するxzコマンドと、プログラムからxzファイルを扱うためのliblzmaを含んでいる。XZ Utilsバージョン4.999.9beta以降の実装では、GNU LGPL及びGNU GPLでライセンスされている。過去のソフトウェア（例えば、liblzma）はパブリックドメインである。

GNU tarはバージョン1.22から、gzipやbzip2と同様に、透過的にxzファイルを使用することができる。bsdtarでも利用可能。

7-Zipはバージョン9.04betaからxzをサポートしている。

 批判 
lzipの作者は、xzは以下の設計上の理由で長期的なアーカイブ用途に不適切であるという見解を示した。

 バージョン情報がないなど、実装間の安全な相互運用性が保証されていない
 拡張性には不合理性があり、問題がある
 フラグや長さフィールドの保護が脆弱である
 LZMA2はオリジナルのLZMAよりデータロスに対して安全でなく効率が悪い
 無駄な機能を含んでおり、破損の誤認識を増加させる
 末尾のデータに関して一貫性のない挙動を示す
 エラー検出はbzip2、gzip、lzipに比べ数倍精度が低い

 用途の例 
 GNU Core Utilitiesバージョン7.1以上GNU Coreutils files（バージョン7.1以上のファイルが.tar.xzとなっているものがあることを参照）やLinuxカーネルIndex of /pub/linux/kernel（2011年10月頃から採用され、xzが存在しなかった時期にリリースされたバージョンにも遡って.tar.xzアーカイブが提供されている）のソースコードのアーカイブの圧縮。
 Fedora（Fedora 12から開始された）、FreeBSD、Slackware Linux、CRUX、Funtoo、Debian (.deb) などの圧縮パッケージ。Arch LinuxやUbuntuもかつては使用していたがZstandardに切り替えた。

 バックドア 

XZ Utils 5.6.0, 5.6.1 にバックドアが仕掛けられていることが判明した。sshdの認証を突破して不正にアクセスされる可能性が有る。発覚直後にGitHubのリポジトリがGitHubにより非公開化されたが、2024-07-22現在は再び公開されている。

 参照 

 XZ Utils
 LZMA2
 可逆圧縮
 lzip

 参考文献 

 外部リンク 
 Decompressors: Add XZ decompressor module - 肥大化しつつある昨今のLinuxカーネル向けに、新たなカーネルイメージ圧縮専用モジュールとしてxzが採用された（2.6.38以降）。

Category:解凍ソフト
Category:データ圧縮規格
Category:UNIXのソフトウェア