tar コマンドは、複数のファイルやディレクトリを 1 つのアーカイブファイルにまとめたり、そのアーカイブを展開するためのコマンドです。
もともとはテープ装置向けのアーカイブツールですが、現在はバックアップや配布用パッケージ作成に広く使われています。
tar 自体は「まとめる・ほどく」機能であり、圧縮は gzip や bzip2、xz などと連携して行います。
Linux では .tar.gz(gzip)、.tar.bz2(bzip2)、.tar.xz(xz)といった形式のアーカイブがよく使われます。
tar [オプション] アーカイブファイル名 ファイルやディレクトリ...tar [オプション] アーカイブファイル名 -C 展開先ディレクトリ
基本的な操作は以下の 3 つです。
- -c : アーカイブの作成(create)
- -x : アーカイブの展開(extract)
- -t : アーカイブ内容の一覧(list)
これに対して、-f でアーカイブファイル名、-v で詳細表示、-z / -j / -J で圧縮形式を指定していくイメージです。
・ディレクトリを tar アーカイブにまとめる(圧縮なし)
tar cvf backup.tar /etc
/etc 以下を backup.tar というアーカイブにまとめます。
c は作成(create)、v は詳細表示(verbose)、f はファイル(file)を意味します。
作成中のファイル名が一覧で表示されるため、何が含まれているかを確認しながら作業できます。
・tar アーカイブの内容を一覧表示する
tar tvf backup.tar
backup.tar の中身を一覧表示します。
t(list)により、「どのファイルがアーカイブされているか」を事前に確認できます。
・tar アーカイブを展開する
tar xvf backup.tar
backup.tar をカレントディレクトリに展開します。
x(extract)により、アーカイブ内のファイルやディレクトリが再現されます。
意図しない場所に展開しないように、実行前にカレントディレクトリを確認しておきましょう。
・gzip 圧縮付きの tar.gz を作成する
tar czvf backup.tar.gz /var/www
/var/www を gzip 圧縮付きの backup.tar.gz として作成します。
z が gzip 圧縮を意味します。
ディレクトリ丸ごとのバックアップや、アプリケーション一式の配布に定番の形式です。
・tar.gz を展開する(gzip 圧縮付き)
tar xzvf backup.tar.gz
gzip 圧縮された backup.tar.gz を展開します。
tar xvf backup.tar.gz でも展開できる環境が多いですが、明示的に -z を付ける方が分かりやすいです。
・bzip2 圧縮の tar.bz2 を展開する
tar xjvf backup.tar.bz2
j は bzip2 圧縮を意味します。
bzip2 形式の tar アーカイブを展開する場合に使用します。
・xz 圧縮の tar.xz を展開する
tar xJvf backup.tar.xz
J は xz 圧縮を意味します。
最近のディストリビューションでは、パッケージ提供ファイルとして .tar.xz が使われることも多くなっています。
・展開先ディレクトリを指定して展開する(-C)
mkdir -p /tmp/restoretar xzvf backup.tar.gz -C /tmp/restore
-C で展開先ディレクトリを指定できます。
この例では、/tmp/restore 以下にアーカイブの内容を展開します。
誤って既存ファイルを上書きしたくない場合や、一時ディレクトリで中身を確認したい場合に便利です。
・特定のディレクトリだけをアーカイブし、不要ファイルを除外する
tar czvf app_backup.tar.gz /var/www/app --exclude='*.log' --exclude='tmp/*'
–exclude を使って、ログや一時ファイルなどを除外できます。
アプリケーションのコードや設定だけをバックアップしたいときに有効です。
・カレントディレクトリ配下を相対パスでアーカイブする(-C と . の組み合わせ)
tar czvf app.tar.gz -C /var/www/app .
-C /var/www/app . とすることで、アーカイブ内のパスが ./ から始まる相対パスになります。
別環境に展開したときにパスを扱いやすくしたい場合、この形式が好まれます。
・権限や所有者情報も含めてバックアップする(root 向け)
tar czpvf etc_backup.tar.gz /etc
-p はパーミッション(権限)を保持して展開するオプションです。
root 権限でシステム設定をバックアップする場合、パーミッションや所有者情報を保持することが重要です。
環境によっては --same-owner や --numeric-owner も組み合わせます。
・アーカイブの中身のみ確認し、実際には展開しない
tar tzvf backup.tar.gz | less
中身を安全に確認したいときは、-t と -z を使って一覧だけを確認し、
その結果を less に渡して閲覧するのが定番です。
・アプリケーションや設定ファイルのバックアップ
/etc や /var/www、アプリケーションディレクトリを tar でまとめておくのは、もっとも基本的なバックアップ方法のひとつです。
権限や所有者を含めて復元したい場合は、root で tar czpvf などを使うケースが多いです。
・リリースパッケージの作成
アプリケーションのソースコードや設定を tar.gz で固めて、テスト環境や本番環境へ配布するパターンも定番です。
--exclude で不要なファイル(ログ・一時ファイル・ビルド成果物など)を除外しておくことで、パッケージをスリムにできます。
・ログや一時ディレクトリのアーカイブ
古いログや解析用データを tar でまとめてから gzip 圧縮することで、容量削減とファイル整理を同時に行えます。
logrotate などの仕組みと組み合わせて運用するケースもあります。
・環境間の移行・クローン
小規模な環境であれば、対象ディレクトリを tar で固めて別サーバへ転送し、そのまま展開して移行する、という手もよく使われます。
この場合も、権限や所有者、SELinux コンテキストなどの扱いには注意が必要です。
tar はオプションが多く見えますが、を押さえておくだけでも、
日常のバックアップ・配布・移行作業でかなりのことができるようになります。
本番環境で使う前には、必ずテスト環境で「作成 → 展開 → 差分確認」を一度試すことをおすすめします。
| short option | long option | description |
|---|---|---|
| -c | --create | 新しい tar アーカイブを作成する |
| -x | --extract | 既存の tar アーカイブを展開する |
| -t | --list | tar アーカイブの内容(収録ファイル)を一覧表示する |
| -f | --file | アーカイブファイル名を指定する(必ず直後にファイル名を指定する) |
| -v | --verbose | 処理中のファイル名など詳細情報を表示する |
| -z | --gzip | gzip を用いて圧縮・解凍を行う(.tar.gz や .tgz 向け) |
| -j | --bzip2 | bzip2 を用いて圧縮・解凍を行う(.tar.bz2 向け) |
| -J | --xz | xz を用いて圧縮・解凍を行う(.tar.xz 向け) |
| -C | --directory | 指定したディレクトリに移動してから処理を行う または展開先ディレクトリを指定する |
| -p | --preserve-permissions | 展開時に元ファイルのパーミッション(権限)を保持して復元する |
| --same-owner | 展開時にアーカイブに記録された所有者情報を可能な限り維持して復元する | |
| --numeric-owner | 展開時に所有者を名前ではなく UID/GID で扱い復元する | |
| --exclude | 指定したパターンに一致するファイルやディレクトリをアーカイブ対象から除外する | |
| --exclude-from | 指定したファイル内に列挙されたパターンを除外対象として扱う | |
| --wildcards | --exclude や --include のパターンをワイルドカードとして解釈する | |
| --remove-files | アーカイブ作成後に元ファイルを削除する(移動に近い挙動になるため慎重に使用する) | |
| -h | --help | tar コマンドの使い方(ヘルプ)を表示して終了する |
| --version | tar コマンドのバージョン情報を表示して終了する |
ここでは Linux 環境で一般的に利用される GNU tar の主なオプションだけを TablePress の表としてまとめている想定です。
実際に使用できるオプションや挙動は、tar のバージョンやディストリビューションによって異なる場合があるため、
本番環境で使用する前に man tar で最新の仕様を確認してください。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
