| この記事の要点 |
|
このカテゴリについて
アーカイブ・圧縮系は「複数のファイルを 1 つにまとめる」役割と「サイズを縮める」役割の 2 つを担います。ZIP は両者を一体化していますが、Unix 文化では tar(アーカイブ専用)と gzip / bzip2 / xz(ストリーム圧縮)を組み合わせる流儀が伝統です。tar.gz(.tgz)はその代表例。
圧縮アルゴリズムの選択は速度 vs 圧縮率のトレードオフです。最高圧縮の xz は CPU 時間を多く消費し、現代のサーバーでは Facebook 製の zstd(.zst)が「速度も圧縮率も両立」として急速に普及しています。Linux カーネルのアーカイブ、Debian パッケージ、PostgreSQL のバックアップなど、業界標準が次々と zstd に移行しています。
アーカイブ・圧縮形式で扱う主な拡張子
| 拡張子 | 概要 |
|---|---|
.zip | PKWARE 由来。Windows / macOS が標準対応 |
.tar | アーカイブのみ(圧縮なし)。Unix 標準 |
.gz / .tgz | gzip 圧縮。Web レスポンス圧縮にも使われる |
.bz2 / .tbz2 | bzip2。gzip より高圧縮、遅い |
.xz / .txz | xz (LZMA2)。さらに高圧縮、最遅 |
.zst | Zstandard。Facebook 製、現代の事実標準候補 |
.7z | 7-Zip フォーマット。AES-256 暗号化対応 |
.rar | WinRAR の独自形式。プロプライエタリ |
.lzh | 吉崎栄泰氏作。日本では 90 年代に主流だった |
.cab | Microsoft Cabinet。Windows インストーラーで使用 |
用途別の使い分け
| 目的 | 推奨形式 | 理由 |
|---|---|---|
| 一般ユーザーへの配布 | .zip | Windows / 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 のような相対パスを許すと、任意の場所にファイルが書き込まれます。多言語の解凍ライブラリで度々発見されている脆弱性で、独自の解凍ロジックは避けるか、必ずパスを正規化してから書き出します。
関連カテゴリ・記事
- ファイル拡張子とは(概論)
- zip ファイルやディレクトリをzip形式に圧縮する
- unzip zip ファイルを解凍する
- 実行ファイル・パッケージ — deb/rpm との関係
子ページ
同階層のページ
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15