【完全版】tarコマンドの使い方と実用例まとめ|Linux圧縮・アーカイブの基本を徹底解説
- 作成日 2026.06.22
- linux
Linuxサーバーで「複数ファイルを1つにまとめたい」「バックアップを圧縮したい」場面は頻繁にあります。デプロイ・バックアップ・ログ保管・ファイル転送など、運用業務に欠かせない仕組みが tar(テープアーカイブ)です。
しかし、tar コマンドのオプションには独特のルールがあり:
-czvfのような連結オプションの意味を覚えにくい- 「圧縮しながらアーカイブ」と「アーカイブだけ」の違いが分からない
tar.gzとtar.bz2とtar.xzどれを使えばいい?- 展開したら知らないディレクトリが大量にできた
- 特定のファイルだけ除外したい
- 進捗が見えず固まっているのか分からない
など、つまづくポイントが多いコマンドです。
本記事では、tarの使い方と実用パターンを、リファレンスとしてまとめ直しました。基本構文から、主要オプションの完全解説、圧縮形式の比較、除外・進捗表示などの応用、トラブルシューティング、50超の実用例、FAQまで完全網羅。この1本をブックマークすれば、tarに関するあらゆる疑問が解決します。
- 1. 結論:今すぐ使えるパターン10選
- 2. tar の基本構文
- 3. オプションの組み合わせ早見表
- 4. 展開先ディレクトリの指定
- 5. 圧縮対象の作り方(アーカイブ作成時の基準ディレクトリ)
- 6. 特定ファイルの除外・選択
- 7. 進捗表示・大容量ファイルの扱い
- 8. 分割アーカイブ(巨大ファイルの分割)
- 9. 所有者・権限・タイムスタンプの扱い
- 10. 圧縮形式の比較(gzip / bzip2 / xz / zstd)
- 11. tar と zip の違い
- 12. トラブルシューティング
- 13. 実用パターン集
- 14. tar 書式チェック・関連ツール
- 15. よくある質問(FAQ)
- 15.1. Q1. tar で何度試してもうまく圧縮できません
- 15.2. Q2. tar.gz と tgz の違いは?
- 15.3. Q3. 圧縮率を最優先したい
- 15.4. Q4. とにかく速く圧縮したい
- 15.5. Q5. パスワードを付けて圧縮したい
- 15.6. Q6. 特定のファイルだけ追加・更新したい
- 15.7. Q7. 展開時に上書き確認したい/したくない
- 15.8. Q8. アーカイブの中身だけ知りたい(展開せず)
- 15.9. Q9. 隠しファイル(ドットファイル)も含めたい
- 15.10. Q10. シンボリックリンクが壊れて展開される
- 15.11. Q11. tar と gzip を別々に使うのと何が違う?
- 15.12. Q12. macOSのtarはLinuxと違う?
- 16. 参考リンク・関連資料
- 17. まとめ
結論:今すぐ使えるパターン10選
時間がない方向けに、超頻出パターンを先に示します。
# ディレクトリをtar.gzに圧縮
tar -czvf archive.tar.gz /path/to/dir
# tar.gzを展開
tar -xzvf archive.tar.gz
# 展開先ディレクトリを指定
tar -xzvf archive.tar.gz -C /path/to/dest
# 中身を確認(展開せず一覧表示)
tar -tzvf archive.tar.gz
# 圧縮なしでアーカイブのみ
tar -cvf archive.tar /path/to/dir
# 特定の拡張子を除外して圧縮
tar -czvf archive.tar.gz --exclude="*.log" /path/to/dir
# bzip2形式で圧縮(gzipより高圧縮率)
tar -cjvf archive.tar.bz2 /path/to/dir
# xz形式で圧縮(最高圧縮率)
tar -cJvf archive.tar.xz /path/to/dir
# 特定ファイルだけ展開
tar -xzvf archive.tar.gz path/to/specific/file
# 進捗を表示しながら圧縮
tar -czvf archive.tar.gz --checkpoint=1000 --checkpoint-action=dot /path/to/dir
詳細は以下で順に解説します。
tar の基本構文
tar は動作モード(1つ)+ オプション(複数)+ ファイル名 + 対象パスという構成で書きます。
tar -czvf archive.tar.gz /path/to/dir
│││└── f: ファイル名を指定(次の引数がアーカイブ名)
││└─── v: verbose(処理内容を表示)
│└──── z: gzip で圧縮/展開
└───── c: アーカイブを作成(create)
動作モード(必ず1つ指定)
| モード | 意味 | 備考 |
|---|---|---|
-c | 作成(create) | 新規アーカイブを作る |
-x | 展開(extract) | アーカイブを取り出す |
-t | 一覧表示(list) | 中身を確認するだけ |
-u | 更新(update) | 既存より新しいファイルのみ追加 |
-r | 追加(append) | 既存アーカイブにファイル追加 |
-d | 差分比較(diff) | アーカイブと実ファイルを比較 |
圧縮形式の指定(任意)
| オプション | 圧縮形式 | 拡張子 |
|---|---|---|
-z | gzip | .tar.gz / .tgz |
-j | bzip2 | .tar.bz2 / .tbz2 |
-J | xz | .tar.xz / .txz |
| (指定なし) | 圧縮なし | .tar |
よく使う補助オプション
| オプション | 意味 |
|---|---|
-v | verbose(処理ファイル名を表示) |
-f | ファイル名を指定(ほぼ必須、常に最後に置く) |
-C | 展開/作成時の基準ディレクトリを変更 |
最小単位の例
# ディレクトリ全体をgzip圧縮
tar -czvf backup.tar.gz /home/user/data
# 圧縮済みアーカイブを展開
tar -xzvf backup.tar.gz
# 中身だけ確認(展開しない)
tar -tzvf backup.tar.gz
-f オプションは常に最後に置き、直後にアーカイブ名を書くのが慣習です。-czvf archive.tar.gz のように連結して書けます。
オプションの組み合わせ早見表
圧縮しながらアーカイブ作成
# gzip(標準的、速い、そこそこの圧縮率)
tar -czvf archive.tar.gz /path/to/dir
# bzip2(gzipより圧縮率高いが遅い)
tar -cjvf archive.tar.bz2 /path/to/dir
# xz(最高圧縮率、最も遅い)
tar -cJvf archive.tar.xz /path/to/dir
# 圧縮なし(アーカイブのみ、高速)
tar -cvf archive.tar /path/to/dir
展開
# gzip展開
tar -xzvf archive.tar.gz
# bzip2展開
tar -xjvf archive.tar.bz2
# xz展開
tar -xJvf archive.tar.xz
# 圧縮形式を自動判定して展開(GNU tar)
tar -xavf archive.tar.gz
tar -xavf archive.tar.bz2
tar -xavf archive.tar.xz
⚠️ -a(auto-compress)を使うと拡張子から圧縮形式を自動判定してくれるため、-z/-j/-Jを覚えなくても済みます。GNU tar(多くのLinuxディストリビューション標準)で利用可能。
一覧表示(中身の確認)
# 圧縮形式に応じて確認
tar -tzvf archive.tar.gz
tar -tjvf archive.tar.bz2
tar -tJvf archive.tar.xz
# 自動判定版
tar -tavf archive.tar.gz
展開前に中身を確認する習慣をつけると、「知らないディレクトリが大量展開された」事故を防げます。
展開先ディレクトリの指定
# カレントディレクトリに展開(デフォルト)
tar -xzvf archive.tar.gz
# 指定したディレクトリに展開
tar -xzvf archive.tar.gz -C /opt/myapp
# 展開先がなければ事前作成
mkdir -p /opt/myapp && tar -xzvf archive.tar.gz -C /opt/myapp
⚠️ -C の直後のディレクトリは事前に存在している必要があります。存在しない場合はエラーになります。
圧縮対象の作り方(アーカイブ作成時の基準ディレクトリ)
相対パスでアーカイブを作る(推奨)
# ❌ 絶対パスのまま固める(展開時に元の絶対パスへ展開されようとする)
tar -czvf archive.tar.gz /home/user/data
# ✅ -C でディレクトリを移動してから相対パスで固める
tar -czvf archive.tar.gz -C /home/user data
-C /home/user data は「/home/userに移動してからdataをアーカイブする」という意味になり、展開時にdata/...という相対パスで取り出せます。
ディレクトリそのものを固めない(中身だけ固める)
# ディレクトリ構造ごと(dir/file1, dir/file2 ...)
tar -czvf archive.tar.gz dir/
# 中身だけ(file1, file2 ...、dirという階層を作らない)
tar -czvf archive.tar.gz -C dir .
特定ファイルの除外・選択
–exclude で除外
# 特定の拡張子を除外
tar -czvf archive.tar.gz --exclude="*.log" /path/to/dir
# 複数パターンを除外
tar -czvf archive.tar.gz --exclude="*.log" --exclude="*.tmp" /path/to/dir
# 特定ディレクトリを除外
tar -czvf archive.tar.gz --exclude="node_modules" --exclude=".git" /path/to/dir
–exclude-from でファイルから読み込み
# exclude-list.txt に除外パターンを列挙
cat << EOF > exclude-list.txt
*.log
*.tmp
node_modules
.git
EOF
tar -czvf archive.tar.gz --exclude-from=exclude-list.txt /path/to/dir
.gitignoreに近い感覚で除外リストを管理できます。
特定ファイル・ディレクトリだけ展開
# アーカイブ内の特定パスだけ展開
tar -xzvf archive.tar.gz path/to/specific/file.txt
# 特定ディレクトリ配下だけ展開
tar -xzvf archive.tar.gz path/to/specific/dir/
# ワイルドカードで展開対象を絞る(GNU tar)
tar -xzvf archive.tar.gz --wildcards "*.conf"
事前に -tzvf で中のパスを確認してから指定するのが確実です。
進捗表示・大容量ファイルの扱い
verbose で処理ファイル名を表示
tar -czvf archive.tar.gz /path/to/dir
# 処理中の各ファイル名が流れる
ファイル数が多いと大量に流れて逆に見づらいことも。
checkpoint で進捗をシンプルに表示
# 1000ファイルごとに . を1つ表示
tar -czvf archive.tar.gz --checkpoint=1000 --checkpoint-action=dot /path/to/dir
pv コマンドと組み合わせて進捗バー表示
# pv がインストールされている場合
tar -cf - /path/to/dir | pv -s $(du -sb /path/to/dir | awk '{print $1}') | gzip > archive.tar.gz
進捗確認(実行中の別ターミナルから)
# tar プロセスにSIGUSR1を送ると進捗を表示(一部環境)
kill -USR1 $(pgrep tar)
分割アーカイブ(巨大ファイルの分割)
split コマンドと組み合わせる
# 1GBごとに分割しながら圧縮
tar -czvf - /path/to/dir | split -b 1G - archive.tar.gz.part-
# 分割されたファイル一覧
ls archive.tar.gz.part-*
# archive.tar.gz.part-aa
# archive.tar.gz.part-ab
# ...
分割ファイルの結合と展開
# 結合してから展開
cat archive.tar.gz.part-* | tar -xzvf -
# または結合してファイル化してから展開
cat archive.tar.gz.part-* > archive.tar.gz
tar -xzvf archive.tar.gz
メール添付やUSBメモリ転送など、サイズ上限がある媒体への転送時に便利です。
所有者・権限・タイムスタンプの扱い
権限・所有者を保持する
# root権限で実行すると所有者情報も保持される
sudo tar -czvf archive.tar.gz /path/to/dir
# 展開時も所有者を復元(root権限必要)
sudo tar -xzvf archive.tar.gz
所有者を指定して展開(権限を変える)
# 展開時の所有者を強制指定
tar -xzvf archive.tar.gz --owner=www-data --group=www-data
タイムスタンプを保持/更新
# 元のタイムスタンプを保持(デフォルト)
tar -xzvf archive.tar.gz
# 展開時刻に更新したい場合は touch を併用
tar -xzvf archive.tar.gz && find . -newer archive.tar.gz -exec touch {} \;
シンボリックリンクの扱い
# シンボリックリンクの実体を辿って固める
tar -czvhf archive.tar.gz /path/to/dir
# リンクをリンクのまま固める(デフォルト)
tar -czvf archive.tar.gz /path/to/dir
-h(--dereference)を付けるとリンク先の実体をアーカイブに含めます。
圧縮形式の比較(gzip / bzip2 / xz / zstd)
最近のLinuxではzstdもよく使われます。
圧縮率・速度の比較
| 形式 | 圧縮率 | 圧縮速度 | 展開速度 | CPU負荷 | 用途 |
|---|---|---|---|---|---|
gzip (-z) | 普通 | 速い | 速い | 低 | 一般用途、デフォルト選択 |
bzip2 (-j) | 高い | 遅い | 普通 | 中 | 圧縮率重視、時間に余裕あり |
xz (-J) | 最高 | 最も遅い | 普通 | 高 | 配布用、長期保管 |
zstd (--zstd) | 高い | 非常に速い | 非常に速い | 低〜中 | バックアップ、頻繁な圧縮 |
zstd を使う
# zstdで圧縮(GNU tar 1.31+)
tar --zstd -cvf archive.tar.zst /path/to/dir
# zstdで展開
tar --zstd -xvf archive.tar.zst
# 圧縮レベル指定(環境変数経由)
ZSTD_CLEVEL=19 tar --zstd -cvf archive.tar.zst /path/to/dir
圧縮率を比較してみる
# 同じディレクトリを各形式で圧縮してサイズ比較
tar -czf test.tar.gz /path/to/dir
tar -cjf test.tar.bz2 /path/to/dir
tar -cJf test.tar.xz /path/to/dir
tar --zstd -cf test.tar.zst /path/to/dir
ls -lh test.tar.*
使い分けの目安
- とりあえず迷ったら → gzip(
.tar.gz)。互換性・速度のバランスが良い - 配布用アーカイブ(サイズ最優先) → xz(
.tar.xz)。Linuxカーネルソース等で採用 - バックアップ(速度最優先、頻繁に実行) → zstd
- 昔ながらの環境互換性が必要 → gzip一択(bzip2/xz/zstdが使えない環境もある)
tar と zip の違い
Windowsとのファイルやり取りでzipもよく使われます。
機能比較
| 機能 | tar(.gz) | zip |
|---|---|---|
| 主な利用環境 | Linux/Unix | Windows含め全般 |
| パーミッション保持 | ◯ | △(環境依存) |
| シンボリックリンク | ◯ | △ |
| 個別ファイルアクセス | 全体展開が基本 | 個別ファイル展開が容易 |
| 暗号化 | 別途gpg等が必要 | 標準でパスワード付与可 |
| ストリーム処理 | ◯(パイプと相性良い) | △ |
| Windows標準対応 | △(要ツール) | ◯ |
zip コマンドの基本(参考)
# zip作成
zip -r archive.zip /path/to/dir
# zip展開
unzip archive.zip
# パスワード付きzip
zip -er archive.zip /path/to/dir
使い分け
- Linux/Unixサーバー間のやり取り → tar.gz
- Windowsユーザーに送る → zip
- 権限・リンクを完全保持したい → tar
- パスワード保護が簡単に欲しい → zip(またはtar+gpg)
トラブルシューティング
展開したら大量のファイルが散らばった
# 展開前に必ず中身を確認する習慣を
tar -tzvf archive.tar.gz | head -20
# 専用ディレクトリを作ってから展開
mkdir extracted && tar -xzvf archive.tar.gz -C extracted
絶対パスでアーカイブされたファイルは、展開時に元の絶対パスへ展開されようとするため要注意です。
tar: Cannot connect to C: resolve failedのようなエラー
# ❌ コロンを含むファイル名がリモート転送と誤認される
tar -czvf archive.tar.gz C:backup
# ✅ -- でオプション解釈を区切る、または ./ を先頭に付ける
tar -czvf archive.tar.gz -- C:backup
tar -czvf archive.tar.gz ./C:backup
ファイル名にコロン:が含まれると、古いtarの仕様で「リモートホスト指定」と解釈されることがあります。
文字化けするファイル名
# ロケールを指定して展開
LANG=ja_JP.UTF-8 tar -xzvf archive.tar.gz
# 文字コード変換が必要な場合(Windows由来のzipなどから変換したtar)
tar -xzvf archive.tar.gz
convmv -f sjis -t utf8 -r --notest ./extracted_dir
ディスク容量不足でエラー
# 展開前に必要容量を見積もる
tar -tzvf archive.tar.gz | wc -l # ファイル数の目安
gzip -l archive.tar.gz # 展開後サイズの目安(gzipのみ)
# 空き容量確認
df -h /path/to/dest
権限エラーで展開できない
# Permission denied が出る場合
sudo tar -xzvf archive.tar.gz -C /opt/protected/dir
# 展開先の所有者を後から変更
sudo chown -R $(whoami):$(whoami) extracted_dir
壊れたアーカイブ(途中で転送が切れた等)
# 整合性チェック(展開せず検証のみ)
gzip -t archive.tar.gz
tar -tzvf archive.tar.gz > /dev/null
# 壊れた箇所より前だけでも復旧を試みる(GNU tar)
tar -xzvf archive.tar.gz --ignore-zeros
tar: Argument list too long
# ❌ ワイルドカード展開がシェル側で多すぎる
tar -czvf archive.tar.gz /path/to/dir/*
# ✅ ディレクトリごと指定(tar内部で展開させる)
tar -czvf archive.tar.gz /path/to/dir
メモリ・CPU負荷が高すぎる(xz圧縮時)
# 圧縮レベルを下げる
tar -cvf - /path/to/dir | xz -1 > archive.tar.xz
# 並列圧縮(pixz, pigz等を使う)
tar -cvf - /path/to/dir | pigz > archive.tar.gz
tar -cvf - /path/to/dir | pixz > archive.tar.xz
pigz(parallel gzip)やpixz(parallel xz)はマルチコアを活用して圧縮を高速化します。
実用パターン集
実務でよく使う設定例を網羅します。
バックアップ系
# 日付付きでバックアップ
tar -czvf backup-$(date +%Y%m%d).tar.gz /var/www/myapp
# 除外しつつバックアップ
tar -czvf backup-$(date +%Y%m%d).tar.gz \
--exclude="*/node_modules" \
--exclude="*/.git" \
--exclude="*/cache" \
/var/www/myapp
# 増分バックアップ(前回からの差分のみ)
tar -czvf backup-incremental-$(date +%Y%m%d).tar.gz \
--listed-incremental=/var/backups/snapshot.snar \
/var/www/myapp
# データベースダンプと合わせてバックアップ
mysqldump -u root mydb > /tmp/mydb.sql
tar -czvf backup-$(date +%Y%m%d).tar.gz /tmp/mydb.sql /var/www/myapp
rm /tmp/mydb.sql
デプロイ・転送系
# サーバー間でtar経由でディレクトリコピー(SSH経由)
tar -czf - /path/to/dir | ssh user@remote "tar -xzf - -C /path/to/dest"
# rsyncの代わりにscpでアーカイブ転送
tar -czvf deploy.tar.gz -C /local/build .
scp deploy.tar.gz user@remote:/tmp/
ssh user@remote "tar -xzvf /tmp/deploy.tar.gz -C /var/www/app"
# パイプでローカル間ディレクトリコピー(cpの代替)
tar -cf - -C /source . | tar -xf - -C /destination
ログ・アーカイブ系
# 古いログをまとめて圧縮
tar -czvf logs-archive-$(date +%Y%m).tar.gz /var/log/myapp/*.log
# 圧縮後に元ログを削除
tar -czvf logs-$(date +%Y%m%d).tar.gz /var/log/myapp/*.log && \
rm /var/log/myapp/*.log
# 7日より古いログだけアーカイブ
find /var/log/myapp -name "*.log" -mtime +7 -print0 | \
tar -czvf old-logs-$(date +%Y%m%d).tar.gz --null -T -
設定ファイル・dotfiles系
# 設定ファイル一式をバックアップ
tar -czvf etc-backup-$(date +%Y%m%d).tar.gz /etc/nginx /etc/ssh /etc/systemd/system
# dotfilesをまとめてバックアップ
tar -czvf dotfiles-$(date +%Y%m%d).tar.gz -C ~ \
.bashrc .vimrc .gitconfig .ssh/config
ソースコード配布系
# .gitディレクトリを除外してソース配布用に圧縮
tar -czvf myapp-v1.0.0.tar.gz --exclude=".git" --exclude="node_modules" myapp/
# git archive を使う方が確実(gitignore等を考慮済み)
git archive --format=tar.gz -o myapp-v1.0.0.tar.gz HEAD
# ビルド成果物だけ配布用に固める
tar -czvf release-$(date +%Y%m%d).tar.gz -C dist .
システムイメージ・移行系
# システム全体をバックアップ(除外を多用)
tar -czvf system-backup.tar.gz \
--exclude=/proc \
--exclude=/sys \
--exclude=/dev \
--exclude=/tmp \
--exclude=/mnt \
--exclude=/media \
--exclude=/var/cache \
-C / .
# Dockerコンテナのエクスポートと組み合わせ
docker export mycontainer | gzip > container-backup.tar.gz
自動化・cron連携系
# 毎日深夜にtarバックアップ(crontab例)
# 0 3 * * * tar -czvf /backup/daily-$(date +\%Y\%m\%d).tar.gz /data >> /var/log/backup.log 2>&1
# 古いバックアップを自動削除しつつ作成
tar -czvf /backup/daily-$(date +%Y%m%d).tar.gz /data && \
find /backup -name "daily-*.tar.gz" -mtime +30 -delete
tar 書式チェック・関連ツール
アーカイブの中身を確認するツール
# ファイル数とサイズの概要
tar -tzvf archive.tar.gz | wc -l
tar -tzvf archive.tar.gz | awk '{sum+=$3} END {print sum}'
# 特定ファイルが含まれているか検索
tar -tzvf archive.tar.gz | grep "specific-file.txt"
file コマンドで圧縮形式を判別
# 拡張子が不明な場合に実際の形式を確認
file archive.unknown
# archive.unknown: gzip compressed data, ...
圧縮率を確認
# 元サイズと圧縮後サイズを比較
du -sh /path/to/dir
ls -lh archive.tar.gz
よくある質問(FAQ)
Q1. tar で何度試してもうまく圧縮できません
最頻出原因と確認順:
- オプションの順序:
-fは最後、直後にファイル名 - 対象パスの存在確認:
ls /path/to/dirで存在チェック - 書き込み権限: 出力先ディレクトリに書き込み権限があるか
- ディスク容量:
df -hで空き容量確認 - エラーメッセージを最後まで読む: tarは具体的なエラーを出すことが多い
Q2. tar.gz と tgz の違いは?
中身は同じです。.tgzは.tar.gzの短縮拡張子(主にWindows等で8.3文字制限があった名残)。
tar -czvf archive.tgz /path/to/dir
# archive.tar.gz と同じ形式
Q3. 圧縮率を最優先したい
tar -cJvf archive.tar.xz /path/to/dir
# xz が最も高圧縮率(ただし時間がかかる)
Q4. とにかく速く圧縮したい
# 圧縮なしが最速
tar -cvf archive.tar /path/to/dir
# 圧縮したいなら zstd か gzip
tar --zstd -cvf archive.tar.zst /path/to/dir
Q5. パスワードを付けて圧縮したい
tar単体ではパスワード保護できません。gpgと組み合わせます:
# 圧縮後に暗号化
tar -czvf - /path/to/dir | gpg -c -o archive.tar.gz.gpg
# 復号して展開
gpg -d archive.tar.gz.gpg | tar -xzvf -
Q6. 特定のファイルだけ追加・更新したい
# 既存アーカイブに追加(圧縮なしtarのみ対応)
tar -rvf archive.tar newfile.txt
# 既存より新しいファイルだけ更新
tar -uvf archive.tar /path/to/dir
⚠️ -r(追加)と-u(更新)は圧縮なしの.tarでのみ使用可能です。.tar.gz等の圧縮済みアーカイブには直接使えません。
Q7. 展開時に上書き確認したい/したくない
# 既存ファイルより新しい場合のみ上書き
tar -xzvf archive.tar.gz --keep-newer-files
# 既存ファイルは一切上書きしない
tar -xzvf archive.tar.gz -k
# 常に上書き(デフォルト動作)
tar -xzvf archive.tar.gz
Q8. アーカイブの中身だけ知りたい(展開せず)
tar -tzvf archive.tar.gz
t(list)モードなら展開せず中身の一覧・サイズ・権限が確認できます。
Q9. 隠しファイル(ドットファイル)も含めたい
# ディレクトリ指定なら隠しファイルも自動的に含まれる
tar -czvf archive.tar.gz /path/to/dir
# カレントディレクトリの中身を指定する場合は明示的に
tar -czvf archive.tar.gz -C dir .
# "." 指定で隠しファイルも含めて全部対象になる
Q10. シンボリックリンクが壊れて展開される
# リンク先の実体を含めてアーカイブ(リンク切れ対策)
tar -czvhf archive.tar.gz /path/to/dir
-hオプションでシンボリックリンクをリンク先の実体に置き換えてアーカイブします。
Q11. tar と gzip を別々に使うのと何が違う?
# tarでアーカイブしてからgzip(2ステップ、同じ結果)
tar -cvf archive.tar /path/to/dir
gzip archive.tar
# → archive.tar.gz が生成される
# tarのzオプションで一括(1ステップ、同じ結果)
tar -czvf archive.tar.gz /path/to/dir
結果は同じです。-zは内部的にgzip処理を呼び出しているだけなので、好みや用途(中間ファイルを残したいか等)で使い分けられます。
Q12. macOSのtarはLinuxと違う?
macOS標準のtarはBSD tarをベースにしており、GNU tar(Linux標準)と一部オプションの挙動が異なります。
# macOSでGNU tar相当を使いたい場合
brew install gnu-tar
gtar -czvf archive.tar.gz /path/to/dir
--excludeの解釈順序など細部で差異があるため、クロスプラットフォームで使う場合は要注意です。
参考リンク・関連資料
公式ドキュメント
- tar(1) manページ(Ubuntu) – tar コマンド公式
- GNU tar マニュアル – GNU tar 詳細仕様
- gzip(1) manページ – gzip 詳細
- xz(1) manページ – xz 詳細
関連記事(本サイト)
- crontabの書き方と実用例まとめ – 定期実行の設定方法
- Linux find オプション一覧 – findコマンドリファレンス
- Linux grep オプション まとめ – grepコマンドリファレンス
- Docker「no space left on device」エラーの対処 – 容量問題
まとめ
tarはLinuxのアーカイブ・圧縮のための基本ツール。要点を再整理します。
- 基本構文: 動作モード(
-c/-x/-t)+ 圧縮形式(-z/-j/-J)+-v+-f ファイル名 - 圧縮形式の使い分け: gzip(バランス)、bzip2(高圧縮率)、xz(最高圧縮率)、zstd(高速+高圧縮)
- 展開前に確認:
-tzvfで中身を見てから-xzvfで展開すると事故防止 - 基準ディレクトリは
-C: 相対パスでアーカイブ・展開先指定に活用 - 除外は
--exclude:.gitやnode_modulesを除いた配布用アーカイブに必須 - 巨大ファイルは分割:
splitコマンドと組み合わせる - パスワード保護はgpgと併用: tar単体には暗号化機能がない
- トラブル時:
-tzvfで整合性確認、gzip -tで破損チェック、権限・容量を疑う - 代替・比較: zip(Windows互換)、systemd/rsync(用途次第で使い分け)
これらの知識は、Linuxサーバー運用・バックアップ・デプロイ・ファイル転送など、システム管理のあらゆる場面で必須です。本記事をブックマークしておけば、いつでも適切なtarコマンドを組み立てられるようになります。
本記事は2026年6月時点の情報をもとに、GNU tar(Debian/Ubuntu標準)での動作確認に基づき作成しています。BSD tar(macOS標準)等では一部オプションの挙動が異なる場合があるため、最新の情報は公式マニュアルもあわせてご確認ください。
-
前の記事
【完全リファレンス】Linux awkコマンドの使い方|基本構文から実用例80超まで徹底解説 2026.06.21
-
次の記事
bash vs zsh 徹底比較|違い・移行方法・どちらを選ぶべきか2026年版 2026.06.22
コメントを書く