LZ アーカイブ形式

LZ は、効率的なデータ圧縮を目的として設計されたアーカイブ形式で、主にストレージ容量の削減とデータ転送の最適化が重要な環境で使用されます。 Lempel-Ziv (LZ) 圧縮アルゴリズムを活用したこの形式は、速度とリソース効率を重視して大量のデータを圧縮できることで知られています。 LZ アーカイブは、高速な圧縮と解凍サイクルを必要とするシナリオで特に人気があり、ソフトウェア配布とリアルタイム データ処理の両方に適しています。

LZ アーカイブの一般情報

LZ アーカイブ は、主要な圧縮方法として Lempel-Ziv アルゴリズムを利用する圧縮ファイル形式です。速度とシンプルさで知られる LZ アーカイブは、最大圧縮率よりも効率的な圧縮を優先します。そのため、リアルタイム データ処理や組み込みシステムなど、迅速な圧縮と解凍が必要なアプリケーションに適しています。 .lz 拡張子は、LZ 圧縮ファイルの最も一般的な拡張子です。 hile LZ アーカイブは迅速な圧縮を提供しますが、圧縮率とメタデータに関する制限により、大規模なデータセットのアーカイブやファイル属性の保存にはあまり適していません。 ZIP、gzip、XZ などの最新の圧縮形式は、機能とパフォーマンスが強化されているため、多くのアプリケーションで LZ に取って代わりました。

LZ アーカイブの歴史

  • 1977: LZ 圧縮の基礎は、LZ77 アルゴリズムを導入したイスラエルのコンピューター科学者のアブラハム レンペルとジェイコブ ジブによって築かれました。これは、スライディング ウィンドウを使用して繰り返しのデータ パターンを圧縮する、可逆データ圧縮に広く採用された最初のアルゴリズムです。
  • 1978: Lempel と Ziv は、辞書ベースのアプローチを利用した LZ77 を改良した LZ78 アルゴリズムを導入しました。このアルゴリズムは圧縮効率をさらに高め、その後の多くの圧縮技術に影響を与えました。
  • 1984: Terry Welch は、LZ78 アルゴリズムを基にして LZW (Lempel-Ziv-Welch) を開発しました。LZW (Lempel-Ziv-Welch) は、Unix 圧縮コマンドおよび GIF 画像形式での使用を通じて普及しました。 LZW は、商用アプリケーションで最初に広く使用された圧縮アルゴリズムの 1 つです。
  • 1990 年代: LZ アルゴリズムのバリアントは進化を続け、7z や XZ などの形式で使用される、 LZMA (Lempel-Ziv-Markov チェーン アルゴリズム) などのより高度な圧縮方法の開発につながりました。より高い圧縮率を提供します。
  • 2000 年代: LZ ベースの圧縮技術、特に LZW は多くのファイル形式やプロトコルに組み込まれるようになりましたが、GIF など一部の圧縮技術では、その使用に影響を与える特許関連の問題が発生しました。
  • 2010 年代: LZ ベースのアルゴリズム、特に LZMA とそのバリアントは、現代の圧縮ソフトウェアの基礎であり、高い圧縮効率と妥当なパフォーマンスのバランスを保っています。これらは、ソフトウェアの配布、アーカイブ、データ ストレージで引き続き広く使用されています。
  • 2020 年代: LZ 形式は、特に速度とシンプルさが優先される環境において、信頼性が高く効率的な圧縮の選択肢であり続けます。

LZアーカイブの特徴

LZ アーカイブ形式は単純な構造に準拠しており、広範な機能よりも速度を優先します。ここで、LZ アーカイブの基本構造は、古い圧縮ファイルを操作したり、圧縮テクノロジーの進化を評価したりするために重要です。

  • 単一ファイルの圧縮: 通常は、単一のファイルを .lz アーカイブに圧縮します。
  • LZWアルゴリズム: Lempel-Ziv-Welch圧縮方式を採用。
  • メタデータの欠如: 元のファイルに関するメタデータが限られているか、アーカイブ内に保存されません。
  • シンプルさ: このフォーマットの単純な構造は、高速な圧縮および解凍速度に貢献します。

LZ アーカイブの圧縮方法

LZ アーカイブ形式は、そのシンプルさと速度で知られる Lempel-Ziv (LZ) アルゴリズムを利用しており、迅速な圧縮と解凍が重要なシナリオで推奨されます。以下は、LZ に関連する圧縮方式の概要です。

  1. Lempel-Ziv アルゴリズム: LZ アーカイブ形式の中核は、繰り返されるシーケンスをより短いコードに置き換えることによってデータの冗長性を特定して排除する可逆圧縮方式である LZ アルゴリズムに基づいています。 LZ アルゴリズムは、データを処理するときにシーケンスの辞書を構築することで機能し、大規模で反復的なデータセットの効率的な圧縮を可能にします。この方法は、データ パターンが一貫していて予測可能なシナリオで特に効果的です。
  2. スライディング ウィンドウ手法: LZ アルゴリズムは通常、固定サイズのウィンドウが入力データ ストリーム上を移動して反復シーケンスを見つけるスライディング ウィンドウ メカニズムを採用します。このアプローチにより、アルゴリズムは大幅な圧縮を達成しながら、管理可能な辞書サイズを維持できます。スライディング ウィンドウは、圧縮効率とメモリ使用量のバランスをとるのに役立ち、LZ 方式がリソースが限られたシステムに適したものになります。
  3. チェックサムとエラー検出: LZ 形式は圧縮に重点を置いていますが、圧縮データの整合性を確保するために CRC32 などの基本的なチェックサム メカニズムも組み込んでいる場合があります。これらのチェックサムは、保存中または送信中に発生する可能性のあるエラーを検出するのに役立ち、解凍されたデータが正確で破損していないことを保証します。
  4. オプションの拡張機能: 一部の実装では、ランレングス符号化 (RLE) やデルタ符号化などの追加技術を使用して LZ 圧縮方法を拡張でき、圧縮データのサイズをさらに削減できます。これらのオプションの拡張機能は、アーカイブ内の特定の種類のデータに適用され、画像や実行可能コードなどの特定のコンテンツ タイプをより効率的に圧縮できます。

.lz サポートされている操作

Aspose.Zip は、.lz アーカイブの操作に対する包括的なサポートを提供し、圧縮ファイルの管理を容易にします。できることは次のとおりです。

  • 完全な抽出: 元のコンテンツの整合性と構造を維持しながら、.lz アーカイブからすべてのファイルを簡単に抽出します。
  • 選択的抽出: .lz アーカイブ内の特定のファイルをターゲットにし、ファイル名またはその他の基準に基づいて正確なデータ回復または選択的な解凍を可能にします。
  • データ圧縮: 効率的な LZMA2 圧縮方式を利用してファイルとディレクトリから .lz アーカイブを作成し、ファイル サイズを大幅に削減します。
  • カスタム圧縮設定: 圧縮レベルやその他のパラメーターを調整して、圧縮速度とファイル サイズのバランスをとり、特定のニーズに合わせてプロセスを調整します。

.LZ ファイルの構造

Lzip 形式は複数のファイルを圧縮せず、メタデータも保存しないため、tar ユーティリティと組み合わせて使用​​されることがよくあります。Lzip アーカイブ形式は効率と速度に重点を置いて設計されており、迅速な圧縮と解凍を容易にする階層構造を利用しています。 Lzip アーカイブは、アーカイブに 1 つずつ保存された 1 つまたは複数のメンバーで構成されます。 Lzip メンバーの構造には次のコンポーネントが含まれます。

  1. ブロックヘッダー:

    • マジック ナンバー: Lzip アーカイブの始まりを知らせる固有の識別子で、ファイルが有効な Lzip 形式として認識されるようにします。
    • バージョン情報: 使用される Lzip のバージョンを示します。これは、さまざまな解凍ツールとの互換性をさらに確保するのに役立ちます。これで、値は「1」になりました。
    • 辞書サイズ: このフィールドは、今後のデータ ブロックに使用される LZMA 圧縮の詳細に関する情報を提供します。
  2. 圧縮データ ブロック:

    • 圧縮ペイロード: LZ アーカイブの中核であり、このセクションには圧縮されたデータ ストリームが含まれます。 Lempel-Ziv-Markov 連鎖アルゴリズムは、元のデータを繰り返しシーケンスを表す一連のコードに処理し、ファイル サイズを大幅に削減します。同じ圧縮アルゴリズムが xz 形式と 7z 形式でサポートされています。
  3. ブロックフッター:

    • チェックサム/ハッシュ: 圧縮データの整合性を検証するために、チェックサム (CRC32 など) または暗号化ハッシュ (SHA-256 など) が含まれています。これにより、アーカイブが送信中または保存中に改ざんされたり破損したりしていないことが保証されます。
    • データサイズ: このブロック内に圧縮された元のファイルのサイズ。
    • メンバー サイズ: 圧縮されたサイズとオフセットを持つ分散インデックスの一部。これにより、ブロックを個別に抽出できます。

.LZ ファイルの構造

LZフォーマットの人気

Lempel-Ziv 圧縮アルゴリズムに基づいた LZ アーカイブ形式は、データ圧縮の世界の基礎テクノロジーです。このツールが広く採用されているのは、そのシンプルさ、効率性、そして特に繰り返しパターンを持つデータに対して大幅な圧縮率を達成できる能力によるものです。 LZ ベースの圧縮方法はさまざまなファイル形式や圧縮ツールに組み込まれており、LZ 形式はデータの保存、送信、アーカイブのプロセスにおいて多用途で不可欠なコンポーネントとなっています。 LZMA や Brotli などの新しい圧縮アルゴリズムが登場していますが、圧縮速度と効率のバランスにより、LZ 形式は依然として重要な意味を持ち続けています。
UNIX および Linux 環境では、LZ 圧縮は、tar、ソフトウェア配布およびデータ バックアップ用の圧縮アーカイブを作成します。多数の圧縮ユーティリティに統合されているため、Windows や macOS を含むさまざまなプラットフォームで継続的に使用できるようになりました。 LZ 形式は、ZIP や GZIP などの他の圧縮形式ほど広く認識されていないかもしれませんが、データ圧縮テクノロジへの影響は否定できず、高速で信頼性の高い圧縮が必要なさまざまなシナリオで使用され続けています。

LZアーカイブの使用例

このセクションでは、C#、Java、Python.NET を使用して LZ アーカイブを圧縮して開く方法を示すコード例を示します。これらの例では、LzipArchive などのライブラリとクラスを使用して LZ ファイルを管理し、最新のプログラミング環境での LZ 圧縮の実際の使用法を示しています。

Compresses a file into .LZ archive using the LzipArchive class in C#.

    using (LzipArchive archive = new LzipArchive())
    {
        archive.SetSource("data.bin");
        archive.Save("data.bin.lz");
    }

Extract LZip Archive using C#

    using (FileStream sourceLzipFile = File.Open("data.bin.lz", FileMode.Open))
    {
        using (FileStream extractedFile = File.Open("data.bin", FileMode.Create))
        {
            using (LzipArchive archive = new LzipArchive(sourceLzipFile))
            {
                archive.Extract(extractedFile);
            }
        }
    }

Compresses a file into .LZ archive using the LzipArchive class in Java.

    try (LzipArchive archive = new LzipArchive()) {
        archive.setSource("data.bin");
        archive.save("data.bin.lz");
    }

Extract LZip Archive using Java

    try (FileInputStream sourceLzipFile = new FileInputStream("data.bin.lz")) {
        try (FileOutputStream extractedFile = new FileOutputStream("data.bin")) {
            try (LzipArchive archive = new LzipArchive(sourceLzipFile)) {
                archive.extract(extractedFile);
            }
        }
    } catch (IOException ex) {
    }

Compresses a file into .LZ archive using the LzipArchive class using Python.Net

    with aspose.zip.lzip.LzipArchive() as archive:
        archive.set_source("data.bin")
        archive.save("data.bin.lz")

Extract Lzip Archive using Python.Net

    with io.FileIO("data.bin.lz", "rb") as source_lzip_file:
        with io.FileIO("data.bin", "x") as extracted_file:
            with aspose.zip.lzip.LzipArchive(source_lzip_file) as archive:
                archive.extract(extracted_file)

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

追加情報

人々は尋ねてきました

1. LZ アーカイブ形式はすべてのオペレーティング システムでサポートされていますか?

LZ アーカイブ形式は、UNIX、Linux、Windows、macOS などの複数のプラットフォームでサポートされています。 LZ アーカイブは UNIX のような環境に関連付けられるのが最も一般的ですが、LZ アーカイブを処理するツールとライブラリはすべての主要なオペレーティング システムで利用できます。

2. LZ アーカイブを使用する利点は何ですか?

LZ アーカイブは、繰り返しパターンでデータを圧縮する効率が高いことで知られており、圧縮速度とファイル サイズの削減のバランスが取れています。これらは実装が簡単なため、特にソフトウェア配布、データ バックアップ、ネットワーク送信など、高速データ圧縮のニーズに対して信頼できる選択肢となります。

3. 複数のファイルを単一の LZ アーカイブに圧縮できますか?

LZ 形式は通常、単一ファイルの圧縮に使用されます。複数のファイルを圧縮するには、まずそれらを 1 つのアーカイブ (tar を使用した tarball など) に結合し、次に、結果として得られたアーカイブ ファイルを LZ 圧縮で圧縮する必要があります。このプロセスは、UNIX および Linux 環境で一般的です。