ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
TAR(Tape ARchive、ター)は 1979 年、Unix V7 で磁気テープにファイルをバックアップする目的で作られた極めて古いアーカイブ形式です。当時のテープ装置は「ヘッダ + データを連続して書き込む」逐次アクセスデバイスだったため、TAR も ヘッダ → データ → ヘッダ → データ …… という素直なストリーム構造になっています。ランダムアクセス索引(セントラルディレクトリのようなもの)を持たないのが ZIP との大きな違いです。
TAR 自体は 圧縮しません。複数のファイルとディレクトリを 1 つのストリームにまとめ、Unix のファイル属性(パーミッション、所有者 UID/GID、タイムスタンプ、シンボリックリンク、ハードリンク、デバイスファイルなど)をすべて保持することに特化しています。圧縮が必要なら、出力ストリームをそのまま gzip / bzip2 / xz / zstd に流す ―― これが tar.gz, tar.bz2, tar.xz, tar.zst の正体です。
「まとめる」と「圧縮する」を直交した別ツールにする Unix 哲学を体現した存在で、現在もソースコード配布(Linux カーネル、GNU ツール群、各種 OSS)、サーバのバックアップ、Docker イメージレイヤなど、Unix 系の世界では空気のように使われています。
内部構造とマジックナンバー
TAR は 512 バイト固定ヘッダ + ファイルデータ(512 バイト境界にゼロ埋め) という素朴な構造を繰り返します。ヘッダにはファイル名、モード、UID、GID、サイズ、mtime、チェックサム、タイプフラグ(通常ファイル / シンボリックリンク / ディレクトリ / FIFO 等)が固定オフセットで並びます。アーカイブの終端は 512 バイトのゼロブロックが 2 つ連続することで示されます。
形式にはいくつかバリエーションがあります。
- v7 tar — 1979 年オリジナル。ファイル名 100 バイト制限
- ustar(POSIX.1-1988) — マジック
"ustar\0" + "00"がオフセット 257 に入る。ファイル名 256 バイトまで - pax(POSIX.1-2001) — 拡張ヘッダで任意長ファイル名・任意属性。UTF-8 対応
- GNU tar 拡張 — sparse file、incremental backup、ロングネームなど独自拡張
ZIP のような単一バイト列のマジックナンバーは 先頭にはなく、オフセット 257 にある "ustar" 文字列で判別するのが一般的です。file コマンドもこの位置を見ています。
主な用途
- Linux カーネルや OSS のソースコード配布(kernel.org の
linux-*.tar.xzなど) - サーバの完全バックアップ(パーミッションや所有者情報の保持が必須なため)
- Docker イメージレイヤ(OCI Image Spec はレイヤを tar.gz で持つ)
- ホームディレクトリの引っ越し、設定ファイルのスナップショット
- chroot や Linux コンテナ rootfs の配布
関連形式との比較
| 形式 | 圧縮率 | 速度 | パーミッション保持 | 暗号化 | 備考 |
|---|---|---|---|---|---|
| tar(非圧縮) | なし | 非常に速い | 完全 | なし | 圧縮は別ツール |
| tar.gz | 中 | 速い | 完全 | なし | 事実標準 |
| tar.xz | 高い | 遅い | 完全 | なし | カーネル配布で主流 |
| tar.zst | 高い | 速い | 完全 | なし | Arch/Debian で採用拡大 |
| ZIP | 中 | 速い | 不完全 | AES-256 | Windows/Mac 標準 |
コマンド・ツール
# 圧縮なしの tar を作成
tar cvf archive.tar mydir/
# tar.gz を作成(z オプションが gzip)
tar czvf archive.tar.gz mydir/
# tar.gz を展開
tar xzvf archive.tar.gz
# tar.xz を展開(J オプションが xz)
tar xJvf archive.tar.xz
# tar.zst を展開(--zstd を明示)
tar --zstd -xvf archive.tar.zst
# 中身一覧(展開せず確認)
tar tzvf archive.tar.gz
# 特定パターンを除外して圧縮
tar czvf backup.tar.gz --exclude='*.log' --exclude='node_modules' mydir/
# 展開時にトップディレクトリを 1 階層削る(よくある src/foo を foo/ にする)
tar xzvf project-1.0.tar.gz --strip-components=1 -C /usr/local/src/
# 展開先を指定
tar xzvf archive.tar.gz -C /opt/
# 標準出力にストリーム → ssh 経由でリモートに転送
tar czvf - mydir/ | ssh user@host 'cat > backup.tar.gz'
注意点・落とし穴
- 圧縮率を上げたいなら xz か zst — ソース配布は
.tar.xzが事実標準。バックアップ速度重視なら.tar.zst -T0でマルチスレッド圧縮。 - パストラバーサル(tar slip) — ZIP と同様、
../を含むファイル名を検証せず展開するライブラリは危険。GNU tar は通常../を含むパスを拒否するが、自作プログラムや古い言語ライブラリで実装する場合は要注意。 - シンボリックリンク経由の上書き — 展開先に既にシンボリックリンクがあると、リンク先のファイルを上書きされる攻撃が成立する。GNU tar の
--no-overwrite-dirや-k(既存ファイルを書き換えない)で防御する。 - Windows での扱い — Windows 10 1803 以降は
tar.exeが標準搭載されたが、パーミッションは正しく扱えない。WSL / Git Bash / 7-Zip の利用が無難。 - 所有者情報 — root で作った tar を一般ユーザーが展開すると uid/gid が変わる。
--no-same-ownerを付けると展開ユーザー権限になる。 - 大容量ファイル — tar 自体に 8GB 制限などの歴史的制約があったが、現代の pax/GNU 拡張形式では事実上無制限。
関連リンク
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?