XZ アーカイブ形式
XZ は、主に単一ファイルの圧縮に使用される高圧縮アーカイブ形式で、優れた圧縮効率とオープンソース互換性を提供します。 XZ Utils の一部として開発されたこの形式は、LZMA2 圧縮アルゴリズムを使用することで知られており、適切な解凍速度を維持しながら高い圧縮率を実現します。 XZ アーカイブは、ソフトウェア パッケージの配布、特に Linux などの Unix 系オペレーティング システムで広く使用されています。
XZ アーカイブの一般情報
XZ アーカイブ は、保存および配布のためのファイル サイズの削減に重点を置き、効率的な圧縮を提供するように設計されています。この形式では、辞書圧縮とエントロピー コーディングを組み合わせた LZMA2 アルゴリズムが使用されており、大きなファイルの圧縮に非常に効果的です。 XZ アーカイブには通常、単一の圧縮ファイルが含まれていますが、tar などの他のツールと組み合わせてディレクトリ全体を圧縮できます。 XZ 形式は、ソフトウェアの配布、データのバックアップ、アーカイブでよく使用され、特に Linux エコシステムではソフトウェアとシステムのアップデートをパッケージ化するための標準となっています。
XZの歴史情報
- 2005: XZ フォーマットは、古い LZMA フォーマットのより効率的な後継を作成することを目的とした XZ Utils プロジェクトの一環として開発を開始しました。
- 2009: XZ Utils が正式にリリースされ、高圧縮ニーズに対応する新しい標準として XZ フォーマットが導入されました。
- 2010: XZ は Linux コミュニティで人気を博し始め、すぐにソフトウェア パッケージやシステム アーカイブを圧縮するための推奨形式になりました。
- 2011: Debian や Arch Linux などの主要な Linux ディストリビューションは、パッケージ リポジトリのデフォルトの圧縮形式として XZ を採用し始めました。
- 2014: XZ の使用は Linux を超えて拡大し、クロスプラットフォームのソフトウェア配布、特に高い圧縮率を必要とするアプリケーションで一般的になりました。
- 2020: XZ は、特に効率的な圧縮が重要な環境で、ソフトウェアのパッケージ化、データ ストレージ、配布において広く使用され続けています。
XZアーカイブの構造
XZ アーカイブ形式は単一ファイルの圧縮用に設計されており、簡単な構造を使用して高い圧縮率を実現します。 XZ アーカイブの構造の概要は次のとおりです。
- ヘッダー: ヘッダーには、フォーマットのバージョン、フラグ、使用されるオプションの拡張子など、XZ アーカイブに関するメタデータが含まれます。また、データの整合性のためのチェックサムの存在も示します。
- 圧縮データ ストリーム: XZ アーカイブの中核は圧縮データ ストリームです。このセクションには、LZMA2 アルゴリズムを使用して圧縮された実際のファイル データが含まれています。データ ストリームはブロックに分割され、効率的な圧縮と解凍が可能になります。各ブロックは個別に解凍できるため、アーカイブが部分的に破損した場合でもデータを回復できます。
- フッター: フッターには、アーカイブの整合性を検証する CRC32 チェックサムが含まれています。また、圧縮データ ストリームの終わりをマークし、迅速にアクセスするためのブロックのインデックスなどの追加情報を含めることもできます。
XZ 圧縮方法
XZ 形式は主に、高い圧縮率と適度な解凍速度で知られる LZMA2 圧縮アルゴリズムに依存しています。ここでは、XZ に関連する圧縮方法を詳しく見ていきます。
- LZMA2: これは、XZ アーカイブで使用されるデフォルトで唯一の圧縮方法です。 LZMA2 は LZ77 アルゴリズムに基づいて構築されており、高度なエントロピー コーディングが組み込まれているため、大きなファイルの圧縮が非常に効率的になります。調整可能な圧縮設定が用意されているため、ユーザーはニーズに応じて圧縮速度または圧縮率のいずれかを優先できます。
- フィルタ: LZMA2 に加えて、XZ はファイル サイズをさらに削減するために圧縮前に適用できるさまざまなオプションのフィルタをサポートしています。これには、小さな変更が繰り返されるデータの圧縮に役立つデルタ エンコーディングや、特定の命令をより圧縮可能な形式に変換することで実行可能コードの圧縮を最適化する BCJ (Branch/Call/Jump) が含まれます。
- CRC32 および SHA-256 チェックサム: それ自体は圧縮方法ではありませんが、XZ アーカイブは整合性チェックに CRC32 チェックサムを使用し、オプションで強化されたデータ検証のために SHA-256 をサポートし、圧縮データが破損または改ざんされていないことを保証します。
.xz でサポートされる操作
Aspose.Zip は、.xz アーカイブの操作に対する包括的なサポートを提供し、圧縮ファイルの管理を容易にします。できることは次のとおりです。
- 完全な抽出: 元のコンテンツの整合性と構造を維持しながら、.xz アーカイブからすべてのファイルを簡単に抽出します。
- 選択的抽出: .xz アーカイブ内の特定のファイルをターゲットにし、ファイル名またはその他の基準に基づいて正確なデータ回復または選択的な解凍を可能にします。
- データ圧縮: 効率的な LZMA2 圧縮方式を利用してファイルとディレクトリから .xz アーカイブを作成し、ファイル サイズを大幅に削減します。
- カスタム圧縮設定: 圧縮レベルやその他のパラメーターを調整して、圧縮速度とファイル サイズのバランスをとり、特定のニーズに合わせてプロセスを調整します。
.XZ ファイルの構造
.xz ファイル形式は主にデータの圧縮とパッケージ化に使用されます。 LZMA2 アルゴリズムを採用して高い圧縮率を実現します。 .xz アーカイブの構造の概要は次のとおりです。
ストリームヘッダー:
- マジック バイト: 最初の 6 バイト (FD 37 7A 58 5A 00) は、ファイルが .xz アーカイブであることを識別します。
- ストリーム フラグ: ブロック サイズや圧縮オプションなどの詳細が含まれます。
ブロックヘッダー:
- ブロック サイズ: 後続のブロックのサイズを示します。
- 圧縮方法: 使用するアルゴリズムを指定します (通常は LZMA2)。
- フィルター チェーン: 圧縮の前後に適用される追加フィルターの詳細を表示します。
圧縮データ ブロック:
- データ: LZMA2 アルゴリズムを使用して圧縮された実際のデータ。
- CRC32: 圧縮データの整合性を検証するために使用されるチェックサム。
インデックスセクション:
- インデックス データ: 各ブロックへのオフセットと非圧縮サイズを提供し、圧縮ストリーム内でのランダム アクセスを可能にします。
- インデックス CRC32: インデックス セクションの整合性を保証します。
ストリームフッター:
- ストリーム フラグ: 検証の目的でヘッダーからストリーム フラグを繰り返します。
- 逆方向サイズ: ファイルの逆方向の走査を可能にするインデックス セクションのサイズ。
- Magic Bytes: ファイルは、.xz アーカイブの終わりを示す 2 バイト シーケンス (59 5A) で終わります。
オプションのメタデータ:
- 一部の .xz アーカイブには、カスタム フィルターや暗号化などの特別な機能や拡張機能用の追加のメタデータが含まれている場合があります。
XZフォーマットの人気
.xz ファイル形式は、高い圧縮率とリソースの効率的な使用により、特に Linux およびオープンソース コミュニティで非常に人気があります。ソフトウェア パッケージの圧縮、ソース コードの配布、大規模なデータセットのアーカイブに広く使用されています。 XZ Utils ツールセットは、Linux、macOS、Windows などのさまざまなプラットフォームで .xz ファイルの作成、抽出、管理を強力にサポートします。 Windows 環境では ZIP や CAB ほど広く採用されていませんが、.xz は圧縮効果とパフォーマンスのバランスが高く評価されており、開発者やシステム管理者にとって好ましい選択肢となっています。さらに、.xz は Debian の APT や Arch Linux の Pacman などの多くのパッケージ管理システムに統合されており、ソフトウェア配布エコシステムにおけるその役割をさらに強化しています。
XZアーカイブの使用例
このセクションでは、C# と Java を使用して XZ アーカイブを圧縮および解凍する方法を示すコード例を示します。これらの例では、C# 用の Aspose.Zip などのライブラリと組み込みの XzArchive クラス (Java 環境に応じて) を利用して、XZ ファイルを操作します。
Compress XZ File via C#
using (FileStream xzFile = File.Open("data.bin.xz", FileMode.Create))
{
using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
{
using (var archive = new XzArchive(Aspose.Zip.Xz.Settings.XzArchiveSettings.FastestSpeed))
{
archive.SetSource(source);
archive.Save(xzFile);
}
}
}
Open XZ Archive via C#
using (var archive = new XzArchive("data.bin.xz"))
{
archive.Extract("data.bin");
}
Compress XZ File via C#
try (FileOutputStream xzFile = new FileOutputStream("data.bin.xz")) {
try (FileInputStream source = new FileInputStream("data.bin")) {
try (XzArchive archive = new XzArchive(XzArchiveSettings.getFastestSpeed())) {
archive.setSource(source);
archive.save(xzFile);
}
}
} catch (IOException ex) {
}
Open XZ Archive via Java
try (XzArchive archive = new XzArchive("data.bin.xz")) {
archive.extract("data.bin");
}
追加情報
人々は尋ねてきました
1. .xz はすべてのオペレーティング システムでサポートされていますか?
.xz は Linux 環境で最も一般的に使用されますが、すべての主要なオペレーティング システムでサポートされています。 XZ Utils などのツールは Windows と macOS で利用でき、 7-Zip のようなクロスプラットフォーム ツールもサポートしています.xz ファイル。
2. XZ ファイルを使用する利点は何ですか?
XZ ファイルには、高い圧縮率、システム リソースの効率的な使用、クロスプラットフォーム互換性など、いくつかの利点があります。これらは、大規模なデータセットのアーカイブ、ソフトウェア パッケージの配布、データのバックアップによく使用されます。
3. 複数のファイルを 1 つの .xz アーカイブに圧縮できますか?
のような形式とは異なります ZIP や TAR 、.xz は通常、単一のファイルを圧縮するために使用されます。複数のファイルを圧縮する場合は、まずそれらを 1 つのファイルにアーカイブする必要があります Aspose.Zip API を使用して .tar ファイルを作成 にアクセスし、.xz を使用してアーカイブを圧縮し、.tar.xz ファイルを作成します。