5.

ZIP / TAR / GZ / 7z / RAR / Zstandard など圧縮形式の比較と選び方

編集
この記事の要点
  • アーカイブ(複数ファイルを 1 つに束ねる)+ 圧縮(サイズを小さくする)の 2 機能
  • ZIP は両方を 1 つで行う。tar + gz/bz2/xz は分離(Unix 流儀)
  • 圧縮率: gzip < bzip2 < xz < zstd(速度はその逆)
  • 配布の事実標準は ZIP。ソースコードは tar.gz / tar.xz。Mac は dmg、Linux は deb/rpm
  • ZipSlip 脆弱性: 解凍時にパスを検証しないと ../ で任意の場所に書き込み可能

このカテゴリについて

アーカイブ・圧縮系は「複数のファイルを 1 つにまとめる」役割と「サイズを縮める」役割の 2 つを担います。ZIP は両者を一体化していますが、Unix 文化では tar(アーカイブ専用)と gzip / bzip2 / xz(ストリーム圧縮)を組み合わせる流儀が伝統です。tar.gz.tgz)はその代表例。

圧縮アルゴリズムの選択は速度 vs 圧縮率のトレードオフです。最高圧縮の xz は CPU 時間を多く消費し、現代のサーバーでは Facebook 製の zstd.zst)が「速度も圧縮率も両立」として急速に普及しています。Linux カーネルのアーカイブ、Debian パッケージ、PostgreSQL のバックアップなど、業界標準が次々と zstd に移行しています。

アーカイブ・圧縮形式で扱う主な拡張子

拡張子概要
.zipPKWARE 由来。Windows / macOS が標準対応
.tarアーカイブのみ(圧縮なし)。Unix 標準
.gz / .tgzgzip 圧縮。Web レスポンス圧縮にも使われる
.bz2 / .tbz2bzip2。gzip より高圧縮、遅い
.xz / .txzxz (LZMA2)。さらに高圧縮、最遅
.zstZstandard。Facebook 製、現代の事実標準候補
.7z7-Zip フォーマット。AES-256 暗号化対応
.rarWinRAR の独自形式。プロプライエタリ
.lzh吉崎栄泰氏作。日本では 90 年代に主流だった
.cabMicrosoft Cabinet。Windows インストーラーで使用

用途別の使い分け

目的推奨形式理由
一般ユーザーへの配布.zipWindows / macOS が標準で開ける
ソースコード公開.tar.gz / .tar.xzパーミッションとシンボリックリンクを保持
大量データのアーカイブ.tar.zst速度と圧縮率のバランス最強
パスワード保護.7z / .zip (AES-256)AES-256 暗号化対応
HTTP レスポンスgzip / br (Brotli)ブラウザがネイティブ展開
Docker レイヤ.tar.gz (or zstd)OCI 標準

セキュリティ注意: ZipSlip / Tar Slip

解凍時にエントリパスをチェックせず ../../etc/passwd のような相対パスを許すと、任意の場所にファイルが書き込まれます。多言語の解凍ライブラリで度々発見されている脆弱性で、独自の解凍ロジックは避けるか、必ずパスを正規化してから書き出します。

関連カテゴリ・記事

編集
Post Share
子ページ
  1. ZIP(.zip)
  2. TAR(.tar)
  3. GZ / GZIP(.gz / .tgz)
  4. 7z(.7z)
  5. RAR(.rar)
  6. BZ2 / BZIP2(.bz2 / .tbz2)
  7. XZ / LZMA2(.xz / .txz)
  8. Zstandard(.zst / .zstd)
  9. CAB(.cab)
  10. LZH(.lzh / .lha)
同階層のページ
  1. ファイル拡張子とは
  2. テキスト・ドキュメント形式
  3. 画像形式
  4. 音声・動画形式
  5. アーカイブ・圧縮形式
  6. 実行ファイル・パッケージ
  7. プログラミング・スクリプト
  8. Web・データ・設定
  9. データベース・データ交換
  10. フォント
  11. システム・仮想化

最近更新/作成されたページ