## はじめに
`tar`はLinuxで最も広く使われるアーカイブツールです。複数のファイルをまとめて1つのファイルにし、gzip/bzip2/xzと組み合わせて圧縮まで行えます。バックアップ、デプロイ、ログ管理など幅広い場面で活用します。
本記事ではtarの基本操作から、圧縮形式の使い分け、特定ファイルの抽出、増分バックアップまでを解説します。
## 症状・背景
– ディレクトリ全体をひとつのファイルに圧縮したい
– .tar.gz/.tar.bz2ファイルを展開したい
– アーカイブの中身を確認してから展開したい
– バックアップを定期的に圧縮保管したい
## 手順・設定方法
### ステップ1: アーカイブを作成する
“`bash
# gzip圧縮でアーカイブ作成(最もよく使う)
tar -czf archive.tar.gz /path/to/dir/
# bzip2圧縮でアーカイブ作成
tar -cjf archive.tar.bz2 /path/to/dir/
# xz圧縮でアーカイブ作成
tar -cJf archive.tar.xz /path/to/dir/
# 圧縮なしでアーカイブのみ
tar -cf archive.tar /path/to/dir/
“`
### ステップ2: アーカイブを展開する
“`bash
# gzip圧縮を展開
tar -xzf archive.tar.gz
# 展開先ディレクトリを指定
tar -xzf archive.tar.gz -C /opt/restore/
# bzip2圧縮を展開
tar -xjf archive.tar.bz2
# xz圧縮を展開
tar -xJf archive.tar.xz
# 形式を自動判定して展開(GNU tar)
tar -xf archive.tar.gz
“`
### ステップ3: 中身を確認・部分展開する
“`bash
# アーカイブの内容を一覧表示
tar -tzf archive.tar.gz
# 詳細情報付き一覧(パーミッション、サイズ等)
tar -tvzf archive.tar.gz
# 特定のファイルのみ展開
tar -xzf archive.tar.gz path/to/file.txt
# パターンにマッチするファイルを展開
tar -xzf archive.tar.gz –wildcards ‘*.conf’
“`
### ステップ4: 実運用での応用例
“`bash
# 特定パターンを除外してアーカイブ
tar -czf backup.tar.gz /var/www –exclude=’*.log’ –exclude=’cache/’
# パイプでSSHに送って展開
tar -czf – /data | ssh user@host ‘tar -xzf – -C /backup’
# 日付付きバックアップファイル名
tar -czf backup-$(date +%Y%m%d).tar.gz /var/www/
# 差分ファイル確認(展開せず)
tar -dzf archive.tar.gz
“`
## 注意事項
– 絶対パスでアーカイブすると展開時に`/`から始まるため、相対パスを推奨
– `-C`で展開先を指定する際、ディレクトリが存在しないとエラーになる
– パイプで転送中のtarはエラーが握りつぶされることがあるため確認が必要
– rootファイルシステムのバックアップは`–one-file-system`オプションを使う
## まとめ
1. **作成**は`tar -czf 出力ファイル 対象パス`の形式
2. **展開**は`tar -xzf ファイル`または`-C 展開先`で場所を指定
3. **確認**は`-t`(list)で展開前に中身をチェック
4. **除外**は`–exclude`、**SSH転送**はパイプと組み合わせて活用
関連記事:
– [gzip・bzip2・xzで圧縮・展開する方法](/articles/linux-gzip-bzip2-xz)
– [zipとunzipコマンドの使い方](/articles/linux-zip-unzip-command)
– [rsyncでディレクトリを同期する方法](/articles/linux-rsync-sync)



