tar コマンドの使い方と応用例

—

by

in

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 はシンプルながらも多機能で、圧縮・除外・増分バックアップなどさまざまなシーンで活躍します。基本オプションと組み合わせ技を覚えるだけで、日常的なファイル管理やサーバ運用が格段に楽になります。