XZ Utils

XZ Utils（以前のLZMA Utils）はフリーなコマンドライン可逆圧縮ソフトウェアのセットであり、LZMAとxzを含んでいる。Unix系オペレーティングシステムおよび、バージョン5.0以降のMicrosoft Windowsに対応している。
xzはgzipとbzip2のような代替ソフトウェアよりもより高い圧縮率になる。 伸長速度はbzip2より速いが、gzipよりも遅い。圧縮はgzipよりもだいぶ遅くなることがあり、高圧縮ではbzip2よりも遅い。圧縮されたファイルが多くの回数使われるときに最も有用となる。
XZ Utilsは大まかに2つの構成要素からなる。
様々なコマンドラインのショートカットがある。例えばlzma（xz --format=lzma）、unxz（xz --decompress。gunzipに類似している）、そしてxzcat（unxz --stdout。zcatに類似している）。
XZ Utilsは"xz"と"lzma"ファイル形式の両方を圧縮・伸長できるが、LZMA形式は今やレガシーであるため、 XZ Utilsはxz形式をデフォルトとして圧縮する。
実装.
ファイル形式の性質と同じようにソフトウェアの振る舞いもまた、Unix圧縮ツールのgzipとbzip2に似た動作になるように設計されている。これはIgor PavlovのLZMA-SDKのUnix移植版から構成されており、Unix環境とその通常の構造と振る舞いに対してシームレスに組み込むためになじむようにされている。
xzは2014年のバージョン5.2.0以降、マルチスレッド圧縮をサポートしている（codice_1フラグ）。2019年時点ではスレッド化された伸長はまだ実装されていない。ファイルがスレッドに対して与えられた設定よりも十分に大きくはないか、あるいは使用しているスレッドがメモリ使用制限を超過しているならば、定義されているよりも少ないスレッド数になることがありうる。
ちょうどgzipとbzipのように、xzとlzmaは入力として単一のファイル（またはデータストリーム）を圧縮することしかできない。複数のファイルを単一のアーカイブへ束ねることはできない。それをするためには、最初にtarのようなアーカイブするプログラムを使用する。
アーカイブを圧縮する:
 xz my_archive.tar # 結果はmy_archive.tar.xzへ
 lzma my_archive.tar # 結果はmy_archive.tar.lzmaへ
アーカイブを伸長する:
 unxz my_archive.tar.xz # 結果はmy_archive.tarへ
 unlzma my_archive.tar.lzma # 結果はmy_archive.tarへ
tarのGNU実装のバージョン1.22以降ではtarballのlzmaやxzへの透過的な圧縮をサポートしており、xz圧縮についてはcodice_2またはcodice_3、LZMA圧縮ではcodice_4が使用できる。
アーカイブを作成して圧縮する:
 tar -c --xz -f my_archive.tar.xz /some_directory # 結果はmy_archive.tar.xzへ
 tar -c --lzma -f my_archive.tar.lzma /some_directory # 結果はmy_archive.tar.lzmaへ
アーカイブを伸長してその内容を展開する:
 tar -x --xz -f my_archive.tar.xz # 結果は/some_directoryへ
 tar -x --lzma -f my_archive.tar.lzma # 結果は/some_directoryへ
開発と採用.
XZ Utilsの開発はTukaani Projectで行われている。Mike KeznerをリーダーとしてかつてSlackwareをベースとしたLinuxディストリビューションをメンテナンスしていた小さなグループだった。
xzとliblzmaのすべてのソースコードはパブリックドメインでリリースされている。XZ Utilsソースコード配布物は、付加的に、複数のGPLバージョンの対象となる、いくつかのオプションスクリプトとサンプルプログラムを含んでいる。
特に、配布されているXZ Utilsソフトウェアが含んでいるGPLスクリプトとソースコードの一覧は以下のとおりである。
結果としてxzとliblzmaのバイナリはパブリックドメインだが、例外的にオプションのLGPL 実装は統合されていない。
バイナリはFreeBSD、Linuxシステム、Microsoft Windows、そしてFreeDOSで利用できる。Fedora、Slackware、Ubuntu、そしてDebianを含む多くのLinuxディストリビューションがソフトウェアパッケージの圧縮にxzを使用している。Arch Linuxは以前はパッケージの圧縮にxzを使用していたが、2019年12月27日以降は、パッケージはZstandardで圧縮されている。GNUのFTPアーカイブもまたxzを使用している。