【Linuxコマンド】tar コマンドの使い方とよく使うオプション

概要

 
tar コマンドは、複数のファイルやディレクトリを 1 つのアーカイブファイルにまとめたり、そのアーカイブを展開するためのコマンドです。
もともとはテープ装置向けのアーカイブツールですが、現在はバックアップや配布用パッケージ作成に広く使われています。
 

tar 自体は「まとめる・ほどく」機能であり、圧縮は gzipbzip2xz などと連携して行います。
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/restore
tar 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 optionlong optiondescription
-c--create新しい tar アーカイブを作成する
-x--extract既存の tar アーカイブを展開する
-t--listtar アーカイブの内容(収録ファイル)を一覧表示する
-f--fileアーカイブファイル名を指定する(必ず直後にファイル名を指定する)
-v--verbose処理中のファイル名など詳細情報を表示する
-z--gzipgzip を用いて圧縮・解凍を行う(.tar.gz や .tgz 向け)
-j--bzip2bzip2 を用いて圧縮・解凍を行う(.tar.bz2 向け)
-J--xzxz を用いて圧縮・解凍を行う(.tar.xz 向け)
-C--directory指定したディレクトリに移動してから処理を行う または展開先ディレクトリを指定する
-p--preserve-permissions展開時に元ファイルのパーミッション(権限)を保持して復元する
--same-owner展開時にアーカイブに記録された所有者情報を可能な限り維持して復元する
--numeric-owner展開時に所有者を名前ではなく UID/GID で扱い復元する
--exclude指定したパターンに一致するファイルやディレクトリをアーカイブ対象から除外する
--exclude-from指定したファイル内に列挙されたパターンを除外対象として扱う
--wildcards--exclude や --include のパターンをワイルドカードとして解釈する
--remove-filesアーカイブ作成後に元ファイルを削除する(移動に近い挙動になるため慎重に使用する)
-h--helptar コマンドの使い方(ヘルプ)を表示して終了する
--versiontar コマンドのバージョン情報を表示して終了する
 

ここでは Linux 環境で一般的に利用される GNU tar の主なオプションだけを TablePress の表としてまとめている想定です。
実際に使用できるオプションや挙動は、tar のバージョンやディストリビューションによって異なる場合があるため、
本番環境で使用する前に man tar で最新の仕様を確認してください。

ブログランキングに参加しています。クリックして応援していただけると嬉しいです。




人気ブログランキング


ブログランキング・にほんブログ村へ

にほんブログ村