結論から
- Gzipは任意のデータを1個以上の連続したメンバーとして格納する可逆圧縮データ形式であり、ランダムアクセスと完全なファイルシステムメタデータには対応しません。
- GZまたはGZIPファイルはGNU gzipなどのgzip互換展開ツールで開きます。Windowsではgzip対応を明記したローカルのアーカイブツールを選び、内容を展開します。macOSでは対応するGUIツールまたはGNU gzipを使います。スマートフォンではgzip対応のファイルアプリを選び、圧縮バイトを直接表示するのではなく展開操作を行います。準拠した展開ツールは1F 8Bと圧縮方式を確認し、任意フィールドを適切に読み飛ばして全メンバーを順番に処理します。完全性が重要ならCRC-32も検証します。
- 入手元が不明なGZIPファイルは信頼しないでください。CRC-32は偶発的な破損の検出に役立ちますが、内容の安全性は証明しません。Gzipは悪意のある実行コードを含む任意のバイナリデータを格納でき、不正な入力ではフラグや長さに似たフィールドに任意の値が入る可能性があります。防御的に解析し、必要ならチェックサムを検証し、展開物を自動実行しないでください。
Gzip圧縮データ(.gz/.gzip)
GzipはJean-Loup GaillyとMark Adlerが、CPUの種類、OS、ファイルシステム、文字集合をまたいで圧縮データを交換するために設計した形式です。通常はDEFLATE圧縮を使います。各メンバーはヘッダー、任意の追加・名前・コメントフィールド、圧縮ブロック、CRC-32と展開後サイズの2^32を法とする値を含むトレーラーで構成されます。識別バイトは1F 8B、登録MIMEタイプはapplication/gzipです。
GZIPを別のアーカイブ形式へ変換するには、まず全メンバーを展開し、復元されたバイトから変換先のアーカイブを作成します。gzipの展開自体は可逆ですが、元から保存されていないメタデータは復元できません。gzipは保護属性や所有者属性を表現せず、元ファイル名からディレクトリ部分を省き、小文字へ正規化する場合があります。
開き方
GZまたはGZIPファイルはGNU gzipなどのgzip互換展開ツールで開きます。Windowsではgzip対応を明記したローカルのアーカイブツールを選び、内容を展開します。macOSでは対応するGUIツールまたはGNU gzipを使います。スマートフォンではgzip対応のファイルアプリを選び、圧縮バイトを直接表示するのではなく展開操作を行います。準拠した展開ツールは1F 8Bと圧縮方式を確認し、任意フィールドを適切に読み飛ばして全メンバーを順番に処理します。完全性が重要ならCRC-32も検証します。
GZまたはGZIPファイルはGNU gzipなどのgzip互換展開ツールで開きます。Windowsではgzip対応を明記したローカルのアーカイブツールを選び、内容を展開します。macOSでは対応するGUIツールまたはGNU gzipを使います。スマートフォンではgzip対応のファイルアプリを選び、圧縮バイトを直接表示するのではなく展開操作を行います。準拠した展開ツールは1F 8Bと圧縮方式を確認し、任意フィールドを適切に読み飛ばして全メンバーを順番に処理します。完全性が重要ならCRC-32も検証します。
GZIPを別のアーカイブ形式へ変換するには、まず全メンバーを展開し、復元されたバイトから変換先のアーカイブを作成します。gzipの展開自体は可逆ですが、元から保存されていないメタデータは復元できません。gzipは保護属性や所有者属性を表現せず、元ファイル名からディレクトリ部分を省き、小文字へ正規化する場合があります。
安全チェック
入手元が不明なGZIPファイルは信頼しないでください。CRC-32は偶発的な破損の検出に役立ちますが、内容の安全性は証明しません。Gzipは悪意のある実行コードを含む任意のバイナリデータを格納でき、不正な入力ではフラグや長さに似たフィールドに任意の値が入る可能性があります。防御的に解析し、必要ならチェックサムを検証し、展開物を自動実行しないでください。
送り主が分からない、拡張子が二重になっている、中身が拡張子と合わない——一つでも当てはまるなら、開く前に確かめてください。
変換するときは
GZIPを別のアーカイブ形式へ変換するには、まず全メンバーを展開し、復元されたバイトから変換先のアーカイブを作成します。gzipの展開自体は可逆ですが、元から保存されていないメタデータは復元できません。gzipは保護属性や所有者属性を表現せず、元ファイル名からディレクトリ部分を省き、小文字へ正規化する場合があります。
元ファイルではなくコピーを変換し、変換後に画質・メタデータ・レイアウトを元と見比べてください。
よくある質問
GZIPファイルとは何で、何に使う形式ですか?
異なるコンピューター環境や記憶環境の間でデータを交換するための可逆圧縮形式です。通常はDEFLATEを使い、1個以上のメンバーを連続して格納できます。
GZファイルを開いて展開するにはどうすればよいですか?
GNU gzipなどのgzip互換展開ツールを使います。ツールは1F 8Bと圧縮方式を確認し、任意フィールドを読み飛ばして全メンバーを順番に処理する必要があります。
WindowsでGZIPファイルを開くにはどうすればよいですか?
gzip対応を明記したWindows用ローカルアーカイブツールを選び、展開操作を行います。完全性が重要ならCRC-32を確認し、展開物を自動実行しないでください。
macOSでGZファイルを開くにはどうすればよいですか?
gzip互換のGUIツールまたはGNU gzipを使って展開します。Gzipはストリーム指向のため、通常はデータを順番に展開します。
スマホでGZIPファイルを展開するにはどうすればよいですか?
gzip対応を明記したモバイル用ファイルアプリを選び、展開機能を使います。種類が不明な展開ファイルは自動実行しないでください。
GZIPファイルが開かない、または破損と表示されるのはなぜですか?
先頭が1F 8Bか、圧縮方式が対応対象かを確認します。CRC-32不一致、途中で切れたメンバー、不正な任意フィールド、圧縮ブロックの損傷が原因になり、修復が難しい場合があります。
.gzと.gzipの違いは何で、どちらの拡張子を使うべきですか?
両方の拡張子がGzip圧縮データに使われますが、RFC 6713が登録している拡張子はgzです。登録拡張子が必要なら.gzを使い、それ以外は受け取り側の命名規則に従います。内部形式は1F 8Bで識別します。
GZIPをZIPへ変換する方法と、失われる可能性がある情報は何ですか?
gzipメンバーを展開し、復元バイトから変換先アーカイブを作ります。データバイトは可逆ですが、所有者・保護属性、名前から省かれたディレクトリ、小文字化前の表記は必ずしも復元できません。
メールやダウンロードで受け取ったGZIPファイルを展開しても安全ですか?
必ずしも安全ではありません。CRC-32は偶発的な破損の検出用であり、gzipには悪意のある実行コードを含む任意のバイナリを格納できます。防御的に解析し、自動実行を避けてください。
GZIPファイルは複数メンバーとランダムアクセスに対応しますか?
1個以上のメンバーを連続して格納できます。一方、展開後データの任意位置へ直接移動する機能はなく、通常はストリームとして処理します。
GZIPファイルをアップロードせずに確認できますか?
はい。端末上のローカルなgzip互換ツールでヘッダーを読み取るかメンバーを展開すれば、遠隔サービスへ送信せずに確認できます。
有効なGZIPヘッダーと正しいCRC-32があればデータは信頼できますか?
いいえ。1F 8Bは形式を識別し、CRC-32は偶発的な破損の検出に役立つだけです。内容の出所、意図、安全性は証明しません。
関連する形式
参考資料
RFC 1952: GZIP File Format Specification Version 4.3 · RFC Editor / IETF publication
RFC 6713: The application/zlib and application/gzip Media Types · RFC Editor / IETF publication
IANA Media Types Registry · Internet Assigned Numbers Authority