Tar Gzip アーカイブ (.tar.gz)
POSIX.1 標準Tar Gzip(.tar.gz。別名 .tgz)は、Linuxおよびオープンソース界における標準的なソフトウェア配布・アーカイブパッケージ形式であり、Unix ネイティブの TAR パッケージングと汎用的な Gzip 圧縮を組み合わせています。
調査とメタデータ
オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで TAR.GZ ファイルを識別します:
バイトレベルのヘッダーシグネチャ (マジックバイト)
オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで TAR.GZ ファイルを識別します:
16進数シグネチャ (オフセット 0):
1F 8B 08ASCII表現: ..\x08
標準化: POSIX.1 ustar (RFC 1952 gzip wrapped)
技術仕様
| コンテナアーキテクチャ | POSIX ustar / GNU tar archive stream wrapped inside an RFC 1952 Gzip compression container |
| 圧縮 | Two-stage packaging: TAR serialization followed by DEFLATE compression |
| バイトエンディアン | Little-Endian gzip envelope wrapping octal POSIX tar blocks |
| 色空間 | N/A (Archive Container) |
| チャンネルと構造 | Multi-file Unix directory trees, symlinks, file ownership, and permission bits |
| 最大寸法 | Unbounded streaming archive size |
| 透過性 | 100% bit-exact lossless preservation of filesystem structures and data |
| ストリーミングとプログレッシブ | End-to-end pipeable streaming: decompress and extract simultaneously in a single pass |
技術比較マトリックス: TAR.GZ 対 競合製品
| 技術属性 | TAR.GZ (現在) | ZIP | 7Z | TAR.BZ2 |
|---|---|---|---|---|
| Unix パーミッション | 100% ネイティブな POSIX の保持 | 制限あり / 失われることが多い | 基本属性のみ保持 | 100% ネイティブな POSIX の保持 |
| 圧縮率 | 中程度 (Gzip DEFLATE) | 中程度 (ZIP DEFLATE) | 非常に高い (LZMA2) | 高い (Bzip2 BWT) |
| 展開速度 | 高速 (~300 MB/s) | 高速 (~300 MB/s) | 中程度 (~100 MB/s) | 低速 (~40 MB/s) |
| Linux エコシステム標準 | ユニバーサルなオープンソースのデフォルト | コンシューマー向けデスクトップのデフォルト | Windows 愛好家の定番 | レガシー Linux のソースリリース |
一般的な破損モードと16進数リカバリガイド
コマンドラインに「gzip: stdin: invalid compressed data--format violated」と表示される。
根本原因: Gzip カプセル内のバイト化け、またはダウンロードの途中切れ。
復旧: File2File アーカイブ抽出ツールまたは「tar -izxf broken.tar.gz」を使用して、部分的な復旧を試みる。
セキュリティ分析とパーサー攻撃ベクトル
TAR.GZ アーカイブは、不注意に展開すると、圧縮爆弾とパストラバーサル攻撃の両方のリスクを合わせ持ちます。
既知の攻撃ベクター
- 小さな .tar.gz ファイルが何テラバイトものゼロに膨れ上がる、Zip 爆弾スタイルの増幅。
- 特権ファイルを上書きするパストラバーサル(例: '../../root/.ssh/authorized_keys')。
- root 権限での展開時に不正なデバイスノードが作成される。
防御的ベストプラクティス:
歴史的背景とマイルストーン
主な利点とメリット
- オープンソースのソースコードリリース、Linux パッケージ、Docker コンテナレイヤーにおいて揺るぎない標準。
- 完全な POSIX パーミッションおよびシンボリックリンクの保持と、信頼性の高い高速な Gzip 圧縮を両立。
- 完全なストリーミング対応:一時ファイルをディスクに書き込むことなく、ネットワークパイプ経由でダウンロード、解凍、展開が可能。
技術的な制限とデメリット
- 単一のファイルを抽出するには、そのファイルの場所までアーカイブ全体を解凍する必要がある。
- .tar.xz や .tar.zst などの現代的な代替形式と比較して圧縮率が低い。
- 汎用的な .zip ファイルと比較して、レガシーな Windows システムでは直感的ではない。
興味深い技術トリビア
- 8.3形式のファイル名制限がある MS-DOS システムでは、「.tar.gz」は「.tgz」に短縮された。
- 「npm install」を実行するたびに、npm はバックグラウンドで .tgz (tar.gz) パッケージをダウンロードして展開している。
- Linux ユーザーの間では、tar.gz ファイルを展開するコマンドを覚えるための語呂合わせとして、ニーモニック「eXتق Ze File」:tar -xzf file.tar.gz が広く知られている。
よくある技術的な質問
.tar.gzと.zipの違いは何ですか?
.zipは各ファイルを個別に圧縮し、最後に中央ディレクトリを持ちます。.tar.gzは最初にすべてのファイルを1つのストリームに結合し、Linuxの完全なパーミッションとシンボリックリンクを保持します。
.tgzは.tar.gzと同じですか?
はい。.tgzは.tar.gzの単なる3文字の省略形であり、元々はDOSのような8.3形式の短いファイル名制限を持つオペレーティングシステムのために作成されました。
Windowsで.tar.gzファイルを抽出するにはどうすればよいですか?
WinRARや7-Zipをインストールすることなく、File2File.appを使用してウェブブラウザ上で直接.tar.gzファイルを抽出できます。