tar コマンドとは
tar は “tape archive” の略で、ファイルやディレクトリを1つのアーカイブファイルにまとめるためのユーティリティです。Linux・Unix 系 OS で標準的に利用され、バックアップや配布に頻繁に使われます。
基本的な使い方
アーカイブの作成
ディレクトリやファイルを tar アーカイブにまとめるには -c(create)オプションを使用します。
tar -cvf archive.tar /path/to/dir
オプションの意味は次の通りです。
- -c : アーカイブを作成
- -v : 詳細表示(処理中のファイル名を出力)
- -f : アーカイブファイル名を指定
圧縮付きアーカイブの作成
gzip や bzip2、xz で圧縮したアーカイブを作成したい場合は、以下のオプションを追加します。
- -z : gzip 圧縮(.tar.gz、.tgz)
- -j : bzip2 圧縮(.tar.bz2)
- -J : xz 圧縮(.tar.xz)
例)gzip 圧縮でディレクトリをアーカイブ
tar -czvf project.tar.gz src/ README.md
アーカイブの展開
作成した tar アーカイブを取り出すには -x(extract)オプションを使用します。
tar -xvf archive.tar
圧縮形式に応じてオプションを追加します。
- gzip : -z(例:
tar -xzvf project.tar.gz) - bzip2 : -j(例:
tar -xjvf backup.tar.bz2) - xz : -J(例:
tar -xJvf data.tar.xz)
アーカイブ内容の確認
アーカイブに含まれるファイル一覧だけを表示したいときは -t(list)オプションを使います。
tar -tvf archive.tar
実務で便利なテクニック
除外パターンを指定してバックアップ
特定のファイルやディレクトリを除外したい場合は –exclude オプションを利用します。
tar -czvf source.tar.gz \
--exclude='*.log' \
--exclude='tmp/' \
source/
パイプで圧縮・転送
ssh と組み合わせてリモートサーバへ圧縮データを直接送ることができます。
tar -czf - /var/www | ssh user@example.com 'cat > /backup/www.tar.gz'
増分バックアップ
前回のバックアップ以降に変更されたファイルだけを追加するには -g(snapshot file)オプションを使用します。
# 初回バックアップ
tar -czvf full_backup.tar.gz -g /tmp/snapfile /data
# 増分バックアップ
tar -czvf incr_backup.tar.gz -g /tmp/snapfile /data
まとめ
tar はシンプルながらも多機能で、圧縮・除外・増分バックアップなどさまざまなシーンで活躍します。基本オプションと組み合わせ技を覚えるだけで、日常的なファイル管理やサーバ運用が格段に楽になります。