| 原作者 | ラッセ・コリン |
|---|---|
| 開発者 | トゥカアニプロジェクト |
| 安定リリース | 5.6.3 / 2024年10月1日 |
| リポジトリ |
|
| 書かれた | C |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | データ圧縮 |
| ライセンス | |
| Webサイト | tukaani.org/xz/ |
| ファイル名拡張子 |
.xz |
|---|---|
| インターネットメディアの種類 |
アプリケーション/x-xz |
| 魔法の数字 | FD 37 7A 58 5A 00 |
| 開発者 | ラッセ・コリン イゴール・パブロフ |
| 初回リリース | 2009年1月14日 |
| 最新リリース | 1.2.1 2024年4月8日 |
| フォーマットの種類 | データ圧縮 |
| オープンフォーマット? | はい |
| フリーフォーマット? | はい |
| Webサイト | tukaani.org/xz/format.html |
XZ Utils (旧称LZMA Utils ) は、 Unix 系オペレーティング システムおよびバージョン 5.0 以降のMicrosoft Windows用の、lzma および xz プログラムを含む、フリー ソフトウェアの コマンドライン ロスレス データ コンプレッサのセットです。圧縮/解凍には、Lempel–Ziv–Markov 連鎖アルゴリズム(LZMA) が使用されます。XZ Utils は、 Igor Pavlovの LZMA- SDKの Unix ポートとして始まり、Unix 環境とその通常の構造および動作にシームレスに適合するように適応されました。
特徴
XZ Utilsはxzおよびlzmaファイル形式の圧縮と解凍が可能です。LZMA形式はレガシー形式とみなされているため、[2] XZ Utilsはデフォルトでxzに圧縮します。
ほとんどの場合、 xz はzip、[3] gzip、bzip2などの代替手段よりも高い圧縮率を実現します。解凍速度は bzip2 よりも高速ですが、 gzip よりも低速です。圧縮は gzip よりもはるかに遅くなることがあり、高レベルの圧縮では bzip2 よりも遅くなりますが、圧縮されたファイルを何度も使用する場合に最も便利です。[4] [5]
XZ Utils は 2 つの主要コンポーネントで構成されています。
xz、コマンドラインの圧縮および解凍ツール(gzipに類似)- liblzma は、zlibに似たAPIを持つソフトウェア ライブラリです。
lzma( の場合xz --format=lzma)、unxz( の場合xz --decompress; に類似gunzip)、xzcat( の場合unxz --stdout; に類似zcat)
など、さまざまなコマンド ショートカットが存在します。
使用法
ソフトウェアの動作とファイル形式のプロパティは、どちらも一般的な Unix 圧縮ツールgzipおよびbzip2と同様に動作するように設計されています。
gzip や bzip と同様に、 xz と lzma は入力として単一のファイル (またはデータ ストリーム) のみを圧縮できます。複数のファイルを 1 つのアーカイブにまとめることはできません。これを行うには、まず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 以降では、 xz 圧縮の場合はまたはスイッチ を使用し、LZMA 圧縮の場合は
lzma および xz で圧縮された tarball を透過的にサポートします。--xz-J--lzma
アーカイブを作成して圧縮する:
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 になります
短いサフィックスを使用して圧縮および解凍してアーカイブを作成するための 1 文字の tar の例:
tar cJf keep.txz keep # アーカイブし、ディレクトリ./keep/をファイル ./keep.txz に圧縮します。tar
xJf keep.txz # 解凍し、ファイル ./keep.txz を抽出して、ディレクトリ ./keep/ を作成します。
xz は、2014 年のバージョン 5.2.0 以降、マルチスレッド圧縮 (-Tフラグ付き) [6]をサポートしています。 [7]バージョン 5.4.0 以降では、スレッド解凍が実装されています。スレッド解凍では、スレッド圧縮インターフェースによって作成されるストリーム内に複数の圧縮ブロックが必要です。ファイルが指定された設定でスレッド化するには大きすぎる場合、またはより多くのスレッドを使用するとメモリ使用量の制限を超える場合は、スレッドの数が定義よりも少なくなることがあります。[6]
xz形式
xz 形式は、前処理フィルターを許可することで lzma を改良したものです。使用されるフィルターは7zで使用されるものと似ています。7z のフィルターは LZMA SDK を介してパブリック ドメインで入手できます。
開発と採用
XZ Utils の開発は、かつてSlackwareをベースにしたLinux ディストリビューションを保守していた開発者の小グループである Tukaani プロジェクト内で行われました。選ばれた名前「XZ」は略語ではなく、データ コンプレッサーにランダムに付けられた名前のようです。公式仕様では「XZ」の意味についてどこにも言及されていません。[8] .xz ファイル形式仕様バージョン 1.0.0 は、2009 年 1 月に正式にリリースされました。[9]
xz と liblzma のソースコードはすべてパブリックドメインにリリースされています。XZ Utils ソースディストリビューションには、GNU General Public License (GPL) のさまざまなバージョンに従うオプションのスクリプトとサンプルプログラムも含まれています。[1]結果として得られるソフトウェア xz と liblzma バイナリは、オプションの LGPL getopt実装が組み込まれていない限り、パブリックドメインです。[10]
バイナリは、FreeBSD、NetBSD、Linuxシステム、Microsoft Windows、FreeDOSで利用できます。Fedora 、Slackware、Ubuntu、Debianなど、多くのLinuxディストリビューションでは、ソフトウェアパッケージの圧縮にxzを使用しています。Arch Linuxは以前はxzを使用してパッケージを圧縮していましたが、[11] 2019年12月27日現在、パッケージはZstandard圧縮で圧縮されています。[12] Fedora Linuxも、Fedora Linux 31でRPMパッケージをZstandardで圧縮するように切り替えました。[ 13] GNU FTPアーカイブもxzを使用しています。
裏口事件
2024年3月29日、マイクロソフトで働くPostgreSQL開発者のアンドレス・フロイントは、XZ Utilsにバージョン5.6.0と5.6.1に影響を与えるバックドアを発見したと発表した。tarファイルのconfigureスクリプトへの追加を介して、バックドアを設定するためのコードに圧縮されたテストファイルが追加されていた。彼は「liblzma(xzパッケージの一部)の周りでいくつかの奇妙な症状を観察した後」に調査を開始し、sshログインが「 CPUを大量に消費し、valgrindエラーが発生している」ことを発見した。[14]この脆弱性は、共通脆弱性評価システム(CVSS)スコア10(最高)を獲得した。 [15]sshd
参考文献
- ^ ab tukaani.org のライセンス「XZ Utils の最も興味深い部分 (例: liblzma) はパブリック ドメインです。パブリック ドメインの部分については、何でも好きなように行うことができます。XZ Utils の一部 (例: ビルド システムや一部のユーティリティ) は、GNU LGPLv2.1、GNU GPLv2、GNU GPLv3 などの異なるフリー ソフトウェア ライセンスの下にあります。」
- ^ LZMA Util 、 2011年1月25日取得
- ^ Vivek、Gite。「Linux で xz と tar を使用してディレクトリ全体を圧縮する方法」。
たとえば、37 MB のディレクトリを xz と zip の両方を使用して圧縮しました。圧縮後の zip ファイルのサイズは 31 MB でしたが、xz ファイルは 16 MB でした。
- ^ Henry-Stocker, Sandra (2017-12-12). 「Linux ファイル圧縮を最大限に活用する方法」. Network World . 2020-02-09閲覧。
- ^ 「Gzip vs Bzip2 vs XZ パフォーマンス比較」。RootUsers 2015-09-16 . 2020-02-09閲覧。
- ^ ab "xz、unxz、xzcat、lzma、unlzma、lzcat – .xz および .lzma ファイルを圧縮または解凍します"。Linux Manpages Online。
- ^ 「XZ Utils リリースノート」. git.tukaani.org .
- ^ 「公式XZ仕様」tukaani.org . Lasse Collin . 2024年10月8日閲覧。
- ^ Lasse Collin (2009-01-28). 「ニュース: .xz ファイル形式仕様バージョン 1.0.0 が正式にリリースされました」。
- ^ 「GPL プログラムの出力も GPL の対象となるのはどのような場合ですか?」GNU.org 。2019 年8 月 21 日閲覧。
- ^ Pierre Schmitz (2010-03-23). 「ニュース: 新しいパッケージの xz 圧縮への切り替え」.
- ^ 「Arch Linux - ニュース: パッケージ圧縮に xz ではなく Zstandard を使用するようになりました」。www.archlinux.org 。2020年 1 月 7 日閲覧。
- ^ Mach, Daniel. 「RPM を zstd 圧縮に変更/切り替える」Fedora プロジェクト Wiki 。2024年3 月 30 日閲覧。
- ^ 「oss-security - アップストリームxz/liblzmaのバックドアによりSSHサーバが侵害される」www.openwall.com . 2024年4月8日閲覧。
- ^ 「xz のバックドア」LWN.net . 2024 年 3 月 30 日閲覧。
外部リンク
- 公式サイト
- SourceForge プロジェクト ページ
