GZIP アーカイブ形式

GZIP は、ファイルの圧縮と解凍に使用される一般的なファイル形式およびソフトウェア アプリケーションです。これは、1990 年代初頭に Jean-Loup Gailly と Mark Adler によって無料のオープンソース圧縮アルゴリズムとして開発されました。 「GZIP」という名前は GNU ZIP の略で、GNU プロジェクトとの関連を示しています。
GZIP 圧縮は、ファイルのサイズを削減することで機能し、ネットワーク経由での転送やディスクへの保存を容易にします。繰り返されるデータ文字列を参照に置き換えることによって圧縮を実現し、それによって冗長性と全体的なファイル サイズを削減します。 GZIP は、HTML、CSS、JavaScript、XML、JSON などのテキストベースのファイルの圧縮に特に効率的ですが、他の種類のファイルの圧縮にも使用できます。

GZIPアーカイブ情報について

GZIP アーカイブ情報は、GZIP 圧縮アルゴリズムを使用して圧縮されたファイル内に含まれるメタデータとデータを指します。 GZIP アーカイブには通常、ファイル属性、タイムスタンプ、圧縮方法、解凍やファイルの復元に必要なその他の関連データなどの情報が含まれています。このメタデータは、圧縮ファイルを適切に識別して処理するために重要です。
さらに、GZIP アーカイブ情報には、圧縮レベル、チェックサム、圧縮中に使用される追加のフラグやオプションなど、圧縮プロセス自体に関する詳細も含まれる場合があります。この情報は、圧縮データを解凍するときに圧縮データの整合性と正確性を保証するために不可欠です。全体として、データの保存、ネットワーク経由の送信、またはアーカイブの目的を問わず、圧縮ファイルを効果的に管理および操作するには、GZIP アーカイブ情報を理解することが不可欠です。

GZIP アーカイブ形式の進化

GZIP アーカイブ形式のルーツは、Jean-loup Gailly と Mark Adler が GNU プロジェクトの一環として GZIP 圧縮アルゴリズムを開発した 1980 年代後半にあります。 GZIP は GNU ZIP の略で、GNU プロジェクト内での起源を反映しています。目標は、さまざまなコンピュータ システム間の互換性を維持しながら、ファイルのサイズを効率的に削減できる圧縮ツールを作成することでした。
Jean-loup Gailly と Mark Adler は、初期の Unix システムに搭載されていた圧縮ユーティリティに代わる無料のプログラムとしてこのプログラムを開発しました。これは GNU プロジェクトの一部として設計されたため、gzip の「g」が付いています。最初のリリースであるバージョン 0.1 は 1992 年 10 月 31 日に一般公開され、続いて 1993 年 2 月にバージョン 1.0 が公開されました。

GZIP 構造

GZIP は、LZ77 コーディング技術とハフマンコーディング技術を統合した DEFLATE アルゴリズムを利用します。 DEFLATE は、当時普及していた圧縮および同様のアーカイブ ユーティリティの有効性を制限する特許によって制限されていた LZW およびその他の圧縮アルゴリズムに代わるものとして開発されました。 GZIP ファイル形式は、次の 3 つの主要な部分で構成される明確に定義された構造に従います。

  • ヘッダー (10 バイト): このセクションには、アーカイブとその内容に関する重要な情報が記載されています。ヘッダーデータの内訳は次のとおりです
  • マジックナンバー (4 バイト): これにより、ファイルが GZIP アーカイブとして識別されます。これには、解凍ツールが認識する特定の 16 進値 (1f 8b) が含まれています。
  • 圧縮方法 (1 バイト): このバイトは通常、値 8 を保持し、GZIP で使用される DEFLATE 圧縮アルゴリズムを示します。
  • ヘッダー フラグ (1 バイト): これらのフラグは、ファイル名のエンコードやコメントの存在など、解凍の特定の側面を制御します。
  • 作成時間 (4 バイト): このセクションには、アーカイブが作成された時間を示す Unix タイムスタンプが保存されます。
  • CRC-32 (4 バイト): この巡回冗長検査値は、解凍中のエラー検出に使用されます。これは非圧縮データに基づいて計算され、解凍ソフトウェアが抽出されたファイルの整合性を検証できるようになります。

この形式の利点

  • 可逆圧縮: GZIP は、情報を失わずにデータを圧縮します。一部の圧縮技術とは異なり、解凍後に元のファイルを完全に再構築できます。これは、データの整合性の維持が不可欠な重要なドキュメント、画像、またはコードにとって非常に重要です。
  • 幅広い互換性: GZIP の最大の強みの 1 つは、広く普及していることです。これは、ほとんどのオペレーティング システム、アーカイブ ユーティリティ (WinRAR、7-Zip)、および Web サーバーでサポートされています。これにより、特定のソフトウェアを必要とせずに、さまざまなプラットフォームで GZIP ファイルを簡単に開くことができます。また、GZIP は、Unix ベースのシステム、Linux、Windows、macOS などのさまざまなオペレーティング システムで広くサポートされています。このクロスプラットフォーム互換性により、GZIP 圧縮ファイルをさまざまな環境間でシームレスに作成および解凍できることが保証されます。
  • ストリーム可能な圧縮: GZIP はストリーム圧縮をサポートしているため、ファイル全体が処理されるのを待つことなく、その場でファイルを圧縮または解凍できます。これにより、ネットワーク通信やデータ バックアップ操作など、データが継続的に生成または送信されるシナリオに適しています。
  • オープン スタンダード: GZIP は、ファイル圧縮のためのオープンで広く採用されている標準であり、仕様は公開されています。このオープン性により、さまざまなソフトウェア アプリケーションやシステム間の相互運用性と互換性が促進され、GZIP 圧縮ファイルを操作するためのツールとライブラリの活発なエコシステムが促進されます。 GZIP の使用は通常は簡単です。多くのツールやソフトウェアは、この形式のファイルを自動的に圧縮または解凍します。さらに、解凍プロセスは効率的であり、必要なリソースは最小限です。

GZIP アーカイブでサポートされる操作

Aspose.ZIP を使用すると、ユーザーは特定のエントリまたはアーカイブ全体を抽出できます。 Aspose.ZIP for .NET の場合 GzipArchiveClass を使用して .gz ファイルを開き、そのエントリを反復して目的の場所に抽出できます。 Aspose.ZIP for Java の場合 GzipArchive を使用して .gz ファイルを開いてエントリを抽出する同様のアプローチ。

GZIP ファイル - 内部構造

GZIP アーカイブは、きちんと包まれたパッケージのようなものです。これは、形式と圧縮方法を紹介する 10 バイトのヘッダーで始まります。心臓は、巧妙なアルゴリズムを使用して縮小された圧縮データ セクションにあります。最後に、8 バイトのフッターによりチェックサムを使用してデータの整合性が検証され、解凍後にファイルが安全に到着することが保証されます。

GZIP ファイル - 内部構造

内部アーカイブ構造

  • ファイル メタデータ - tar アーカイブと同様に、各ファイルには変更時間やアクセス許可などの基本情報が保存されます。ただし、このセクションは柔軟であり、ニーズに応じて、アクセス コントロール リスト (ACL) や拡張属性 (EA) などの追加の詳細を省略したり、追加したりできます。データの整合性を確保するために、通常のファイルには強力なハッシュ関数 (SHA1 など) を含めることをお勧めします。
  • 複数のコンテンツ ストリーム - 従来のアーカイブとは異なり、ファイルは内部データ ファイル内に複数のデータ ストリームを持つことができます。これは、ファイルに関連付けられた拡張属性またはリソース フォークを保存するのに役立ちます。
  • ヘッダー - 内部インデックス ファイルはファイル ヘッダーを保持し、内部データ ファイル全体に散在するヘッダーをミラーリングします。ただし、個別に保存する場合、インデックス ヘッダーはデータ ファイル内の対応するデータの開始位置を参照する必要があります。さらに、インデックス内のディレクトリ エントリには、それに含まれるファイルと、内部ファイル インデックス内の対応するオフセットがリストされます。
  • 重複メタデータの理論的根拠 - この設計選択により、効率的なデータ ストリーミング/デコードとランダム ファイル アクセスの両方が保証されます。さらに、メタデータは適切に圧縮されるため、ストレージのオーバーヘッドが最小限に抑えられます。テストによると、メタデータが占有するストレージ容量は通常 0.3% 未満であるため、トレードオフを行う価値はあります。
  • ブロック ヘッダー - ブロック ヘッダーには、外部ファイルと同様に、ブロック サイズ情報と一意の識別子のシーケンスが含まれています。

GZIP の使用例

Aspose.ZIP API を使用すると、他のサードパーティ アプリケーションを必要とせずに、アプリケーションでアーカイブを抽出できます。 Aspose.ZIP API は、GZIP アーカイブを操作するための GzipArchive クラスを提供します。

GZIP with compress only single source via C#

Such archives like GZIP, LZ, BZIP2, XZ, Z do not support entries and can compress only single source. See samples with such a compression.

    using (FileStream source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
    {
        using (GzipArchive archive = new GzipArchive())
        {
            archive.SetSource(source);
            archive.Save(«archive.gz);
        }
    }

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

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

GZIP アーカイブに関する追加情報

人々は尋ねてきました

1. GZIPとは何ですか?

GZIP (GNU zipped archive) は、保存と送信を容易にするためにファイルのサイズを縮小する一般的なファイル形式です。

2. GZIP 圧縮は ZIP などの他の形式とどう違うのですか?

GZIP は通常、特にテキストベースのファイルを圧縮する場合に、ZIP に比べて高い圧縮率を実現します。ただし、 ZIP アーカイブには複数のファイルとディレクトリのサポートが含まれていることが多く、複数のファイルをまとめてパッケージ化するための汎用性が高くなります。 。

3. GZIP は複数のファイルを 1 つのアーカイブに圧縮できますか?

GZIP は、複数のファイルやディレクトリではなく、単一のファイルを圧縮するように設計されています。ただし、tar などのツールを GZIP と組み合わせて使用​​して、tarball tar アーカイブ を作成するのが一般的です。 GZIP を使用して圧縮し、単一の圧縮ファイルを作成します。