Gzip

gzipとは



gzipは、データ圧縮プログラムの一つであり、その圧縮データのフォーマットを指します。「GNU zip」の略称で、GNUプロジェクトによって開発・メンテナンスが行われています。多くのUNIX系OSに標準搭載されており、広く利用されています。

歴史的背景



以前広く使われていたcompressという圧縮プログラムは、LZWアルゴリズムを使用していましたが、このアルゴリズムには特許侵害の問題がありました。そのため、GNUプロジェクトは代替としてgzipを開発しました。

フォーマット



gzipのフォーマットは、RFC 1952「GZIP File Format Specification」として文書化されています。

他の圧縮形式との違い



WindowsやMS-DOS環境で一般的なZIP形式とは互換性はありませんが、圧縮方法としては両者ともDeflate法を使用しています。

概要



gzipは、Lempel-Zivアルゴリズム(LZ77)とハフマン符号を組み合わせており、従来のcompressよりも高い圧縮率を実現しています。ただし、非常に冗長なファイルの場合、compressの方が圧縮率が高いこともあります。

開発者向けにはzlibというライブラリが提供されており、gzipが広く使われる要因の一つとなりました。

gzipで圧縮されたファイルの拡張子は、慣習的に「.gz」が使われます。初期のgzipでは「.z」が使われていましたが、pack形式との混同を避けるために変更されました。1993年頃に作成された「.z」ファイルはgzipファイルである可能性が高いです。また、gzip自体はpack形式の伸長も可能です。

gzipコマンドは、標準入力からデータを受け取り、圧縮して標準出力に出力することができます(gunzipコマンドは逆の動作を行います)。これにより、ファイルの圧縮だけでなく、様々な用途に利用できます。

アーカイバ機能



gzipは、ZIPのように複数のファイルをまとめるアーカイバ機能は持っていません。複数のファイルを扱う場合は、tarファイルを作成し、それをgzipで圧縮するのが一般的です。

GNU tarには、アーカイブをgzipで圧縮する「-z」オプションが用意されています。これにより、アーカイブと圧縮を同時に行うことができます。gzip圧縮されたtarアーカイブには、「.tar.gz」または「.tgz」という拡張子が使用されます。

HTTP圧縮



HTTP 1.1では、データ圧縮により転送量を削減する機能が提供されていますが、gzipは、その圧縮フォーマットの一つとして広く利用されています。gzipの仕様はRFC 1952で定義されています。

初期に登場したバージョン1.2.4は安定版として長らく使われていましたが、4GB以上のファイルに対応していなかったため、その後バージョンアップが行われました。

現在では、圧縮・伸張速度よりも圧縮率を重視する場合、bzip2やxzなどの圧縮形式が用いられることもあります。

互換性



gzipは、zip、compress、compress -H、packで圧縮されたファイルを伸長できます。ただし、zipファイルについては、Deflate法で圧縮され、ファイルが一つしか含まれていない場合に限ります。

gzipがインストールされている環境では、gunzip、zcat、uncompressコマンドがgzipコマンドへのハードリンクとして存在することがあります。Linux Standard Baseでもこれらのコマンドは指定されています。

主なオプション



`-r`: サブディレクトリを含めて圧縮します。
`-v`: 詳細情報を表示します。
`-数字`: 圧縮率を調整します(例:-9で圧縮率を最大に、-1で圧縮速度を最大にします。デフォルトは6です)。
`-f`: 上書きを強制します。

拡張子



`.gz`: gzipで圧縮されたファイルに用いられます。
`.tar.gz`または`.tgz`: tarアーカイブをgzipで圧縮した場合に用いられます。

Media Type



2012年8月に発行されたRFC 6713で、`application/gzip`が定義され、IANAに正式に登録されました。以前は、`application/x-gzip`や`application/x-gzip-compressed`などが使われていました。

tarでアーカイブされている場合は、非公式に`application/x-tar-gz`も用いられます。

HTTP圧縮



gzipは、HTTP通信を高速化するために広く利用されている圧縮アルゴリズムです。現在では、ほとんどのサーバーソフトウェアとブラウザーがgzip圧縮に対応しています。2024年3月現在、全ウェブサイトの約50%がgzip圧縮を使用しています。

まとめ



gzipは、データ圧縮における重要なツールであり、ファイル圧縮、HTTP通信の高速化など、様々な場面で利用されています。その歴史、特徴、互換性、そして多様なオプションを理解することで、より効果的にgzipを活用することができるでしょう。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。