gzipはファイル形式であり、ファイル圧縮プログラムでもあります。このプログラムはDeflateアルゴリズムを使用して、 gzipファイル形式を用いて単一ファイルを圧縮および解凍します。
gzip は、圧縮アルゴリズムであるLZWがUnisysとIBMの特許で保護されていたため、 1992 年にcompressプログラムのフリーソフトウェア代替としてリリースされました。 [ 4 ]これらの特許は 2003 年と 2004 年まで有効でした。[ 5 ] Jean-Loup Gailly がgzip ファイル形式を設計し、[ 6 ]後に RFC 1952 で規定され、[ 7 ]最初に gzip プログラムを作成しました。Mark Adler が解凍部分を作成しました。gzip は現在GNUプロジェクトによって開発されています。[ 8 ]
ファイル形式はストリーミングアルゴリズムによって解凍できるため、 Webプロトコル、データ交換、ETL (標準パイプ内)などのストリームベースのテクノロジーで一般的に使用されています。

gzipファイル(下の表に記載)は、10バイトのヘッダー、オプションの追加ヘッダーフィールド、Deflateで圧縮されたデータ、および8バイトのトレーラーで構成されます。
複数のストリームが連結される場合もありますが(gzip ファイルは、元々 1 つのファイルであったかのように単純に解凍されて連結されます)、[ 10 ]通常は単一のファイルのみが圧縮されます。[ 11 ]圧縮アーカイブは通常、ファイルのコレクションを単一のtarアーカイブ( tarballとも呼ばれます)に組み立て、[ 12 ]次にそのアーカイブを gzip で圧縮することによって作成されます。最終的な圧縮ファイルには通常、拡張子.tar.gz、.tgz、.gz、 または が付きます.gzip。
gzip は、同じくDEFLATE を使用するZIPアーカイブ形式と混同してはならない。ZIP 形式は外部アーカイバなしでファイルのコレクションを保持できるが、ファイルを個別に圧縮し、ファイル間の冗長性 (ソリッド圧縮)を利用できないため、同じデータを保持する圧縮tarballよりもコンパクトではない。gzip ファイル形式は、拡張子が の LZW に基づく compress ユーティリティの形式とも混同してはならない。ただし、gunzip ユーティリティはファイルを解凍することができる。[ 13 ].Z.Z
プログラムのさまざまな実装が作成されています。最もよく知られているのは、Lempel-Ziv コーディング (LZ77) を使用した GNU プロジェクトの実装です。OpenBSDのgzipのバージョンは、実際にはcompressプログラムであり、OpenBSD 3.4 で gzip フォーマットのサポートが追加されました。この特定のバージョンの「g」はgratisを意味します。[ 16 ] FreeBSD、DragonFly BSD、NetBSD は、GNU バージョンの代わりに BSD ライセンスの実装を使用しています。これは実際には、 GNU 実装のオプションと互換性があるように意図されたzlibのコマンドライン インターフェイスです。[ 17 ]これらの実装は元々NetBSDから来ており、bzip2と Unix packフォーマットの解凍をサポートしています。
3~8%優れた圧縮率を実現する代替圧縮プログラムとして、Zopfliがあります。これは、より徹底的なアルゴリズムを用いてgzip互換の圧縮を実現しますが、圧縮に要する時間は長くなります。解凍時間には影響しません。
pigzMark Adler によって書かれたこのツールは、gzip と互換性があり、利用可能なすべての CPU コアとスレッドを使用することで圧縮を高速化します。[ 18 ]
アーカイブの最初の損傷部分より前のブロック内のデータは通常完全に読み取り可能です。損傷によって破壊されなかったブロックのデータは、困難な回避策によって復元できる場合があります。[ 19 ]
ほとんどの Linux ディストリビューションに含まれるtarユーティリティは、 zオプションを渡すことで .tar.gz ファイルを解凍できます。例: tar -zxf file.tar.gz。ここで、は解凍を指示し、は抽出を意味し、は抽出元の圧縮アーカイブ ファイルの名前を指定します。オプションで、( verbose ) は抽出中のファイルを一覧表示します。[ 20 ]-z-x-f-v
zlibライブラリはgzipファイル形式をサポートしています。[ 21 ]
gzip形式はHTTP圧縮で使用され、これはワールドワイドウェブ上でHTMLやその他のコンテンツの送信を高速化するために使用される技術です。これはRFC 2616で規定されているHTTP圧縮の3つの標準形式の1つです。このRFCではzlib形式(「DEFLATE」と呼ばれる)も規定されていますが、これはgzip形式と同じですが、gzipはヘッダーとトレーラーの形で11バイトのオーバーヘッドを追加します。それでも、Internet Explorerは標準を正しく実装しておらず、RFC 1950で規定されているzlib形式を処理できないため、zlibよりもgzip形式が推奨されることがあります。 [ 22 ]
1990年代後半以降、ブロックソートアルゴリズムに基づくファイル圧縮ユーティリティであるbzip2は、gzipの代替として一定の人気を集めています。これは、特にソースコードやその他の構造化テキストの場合、かなり小さなファイルを生成しますが、メモリと処理時間を犠牲にします(最大4倍)。[ 23 ]
AdvanceCOMP、Zopfli、libdeflate、および7-Zipは、gzip互換ファイルを作成できます。これは、gzip自体よりも圧縮率の高い内部DEFLATE実装を使用することで実現されますが、リファレンス実装と比較してプロセッサ時間を多く消費します。
2023年に発表された研究では、gzipなどの単純な可逆圧縮技術をk近傍法分類器と組み合わせることで、自然言語処理におけるテキスト分類のための深層ニューラルネットワークに代わる魅力的な代替手段を作成できることが示されました。このアプローチは、 GPUハードウェアを必要としないなど、リソース要件が低いため、BERTなどの従来のアプローチと同等、場合によってはそれを上回ることが示されています。[ 24 ]
{{cite journal}}: CS1 maint: postscript (リンク)。開発ソースやその他の情報については、savannah.gnu.orgのGzipプロジェクトページをご覧ください。
。このプログラムは、compressで使用されているLZWアルゴリズムをカバーしているUnisysとIBMの特許のため、compressの代替として開発されました。
の米国 LZW 特許番号 4,558,302 は 2003 年 6 月 20 日に失効し、英国、フランス、ドイツ、イタリアの対応する特許は 2004 年 6 月 18 日に失効し、日本の対応する特許は 2004 年 6 月 20 日に失効し、カナダの対応する特許は 2004 年 7 月 7 日に失効しました。
Jean-Loup Gailly は gzip フォーマットを設計し、
...
。GNU Gzipは、もともとJean-Loup GaillyがGNUプロジェクトのために作成した人気のデータ圧縮プログラムです。Mark Adlerが解凍部分を作成しました。
gunzipは現在、gzip、zip、compress、packで作成されたファイルを解凍できます。入力フォーマットの検出は自動で行われます。
ここで説明する形式のすべてのマルチバイト数値は、最下位バイトが最初に格納されます (メモリ アドレスの下位に)。
このライブラリは、gzip (.gz) 形式のファイルの読み書きもサポートしています
...