Linux便利コマンド : tar

うめだ
2026-02-13
2026-02-13
目次

はじめに

みなさま、tarコマンドを活用されていますでしょうか?

ディレクトリ構成毎ファイルをアーカイブして、バックアップデータとして、tarファイルを作成します。

作成したtarファイルを別のサーバーで展開することで、同じディレクトリ構成が複製されます。

パーミッション、タイムスタンプも維持されますので、バックアップとして最適です。

そんなアーカイブを作成するコマンドを紹介します。

環境

OS : AlmaLinux 8
tarバージョン : 1.30

使い方

事前に、サンプルファイルとして以下を作成しておきました。

$ find
.
./AAA
./AAA/aaa.txt
./BBB
./BBB/bbb.txt
./CCC
./CCC/ccc.txt
$
$ find -type f
./AAA/aaa.txt
./BBB/bbb.txt
./CCC/ccc.txt
$
$ find -type f | xargs cat
aaa
bbb
ccc
$

これから紹介するオプションは以下です。

c アーカイブを作成
t アーカイブの中身を一覧で表示
r 指定したファイルをアーカイブに追加
d アーカイブと実際のファイルとの差分を表示
delete アーカイブから指定したファイルを削除
x アーカイブからファイルを展開


まずは、アーカイブを作成してみます。

$ tar -cvf ./data.tar ./*
./AAA/
./AAA/aaa.txt
./BBB/
./BBB/bbb.txt
./CCC/
./CCC/ccc.txt
$
$ ls -la
total 16
drwxrwxr-x  5 future future    55 Feb 11 12:50 .
drwx------ 15 future future  4096 Feb 11 12:27 ..
drwxrwxr-x  2 future future    21 Feb 11 12:45 AAA
drwxrwxr-x  2 future future    21 Feb 11 12:46 BBB
drwxrwxr-x  2 future future    21 Feb 11 12:46 CCC
-rw-rw-r--  1 future future 10240 Feb 11 12:50 data.tar
$

アーカイブの中身を確認してみましょう。

$ tar -tvf data.tar
drwxrwxr-x future/future     0 2026-02-11 12:45 ./AAA/
-rw-rw-r-- future/future     4 2026-02-11 12:45 ./AAA/aaa.txt
drwxrwxr-x future/future     0 2026-02-11 12:46 ./BBB/
-rw-rw-r-- future/future     4 2026-02-11 12:46 ./BBB/bbb.txt
drwxrwxr-x future/future     0 2026-02-11 12:46 ./CCC/
-rw-rw-r-- future/future     4 2026-02-11 12:46 ./CCC/ccc.txt
$

想定どおり、アーカイブされてそうです。

作成したアーカイブに新たなファイルを追加することができます。

新たなファイル:zzz.txt を作成します。

$ echo zzz > zzz.txt
$
$ ls -la
total 20
drwxrwxr-x  5 future future    70 Feb 11 13:10 .
drwx------ 15 future future  4096 Feb 11 12:27 ..
drwxrwxr-x  2 future future    21 Feb 11 12:45 AAA
drwxrwxr-x  2 future future    21 Feb 11 12:46 BBB
drwxrwxr-x  2 future future    21 Feb 11 13:07 CCC
-rw-rw-r--  1 future future 10240 Feb 11 13:08 data.tar
-rw-rw-r--  1 future future     4 Feb 11 13:10 zzz.txt
$

zzz.txt を追加します。

$ tar -rf data.tar ./zzz.txt

追加できたか、アーカイブの中身を確認してみましょう。

$ tar -tvf data.tar
drwxrwxr-x future/future     0 2026-02-11 12:45 ./AAA/
-rw-rw-r-- future/future     4 2026-02-11 12:45 ./AAA/aaa.txt
drwxrwxr-x future/future     0 2026-02-11 12:46 ./BBB/
-rw-rw-r-- future/future     4 2026-02-11 12:46 ./BBB/bbb.txt
drwxrwxr-x future/future     0 2026-02-11 12:46 ./CCC/
-rw-rw-r-- future/future     4 2026-02-11 13:07 ./CCC/ccc.txt
-rw-rw-r-- future/future     4 2026-02-11 13:10 ./zzz.txt
$

追加されてますね。

差分の確認もできるとのことで、zzz.txtの内容を編集してみます。

$ vi zzz.txt
$
$ cat zzz.txt
zzzZ
$

-d で差分が確認できます。

$ tar -df ./data.tar
./zzz.txt: Mod time differs
./zzz.txt: Size differs
$

タイムスタンプと、ファイルサイズに差分があると表示されましたね。

中身をもとに戻してみます。

$ vi zzz.txt
$
$ cat zzz.txt
zzz
$

再度、差分を確認してみましょう。

$ tar -df ./data.tar
./zzz.txt: Mod time differs
$

ファイルサイズは差分なしとなって、タイムスタンプのみが差分ありと表示されました。

アーカイブから任意のファイルを削除することもできます。

$ tar --delete -f ./data.tar ./zzz.txt
$
$ tar -tvf ./data.tar
drwxrwxr-x future/future     0 2026-02-11 12:45 ./AAA/
-rw-rw-r-- future/future     4 2026-02-11 12:45 ./AAA/aaa.txt
drwxrwxr-x future/future     0 2026-02-11 12:46 ./BBB/
-rw-rw-r-- future/future     4 2026-02-11 12:46 ./BBB/bbb.txt
drwxrwxr-x future/future     0 2026-02-11 12:46 ./CCC/
-rw-rw-r-- future/future     4 2026-02-11 13:07 ./CCC/ccc.txt
$

削除されましたね。続いて、ファイルを展開してみましょう。

展開するために、新たにディレクトリを作成します。

$ mkdir tmp
$
$ cd tmp/
$ ls -ltr
total 0
$

準備ができたので、ccc.txt を展開します。

$ tar -xvf ../data.tar ./CCC/ccc.txt
./CCC/ccc.txt
$
$ find -ls
141834403      0 drwxrwxr-x   3  future   future         17 Feb 11 13:16 .
202132028      0 drwxrwxr-x   2  future   future         21 Feb 11 13:16 ./CCC
203460106      4 -rw-rw-r--   1  future   future          4 Feb 11 13:07 ./CCC/ccc.txt
$

展開できましたね。


最後に、findコマンドでリストしたファイルを対象に、アーカイブすることも可能です。

$ find -type f | xargs tar -zcvf ./backup.tar.gz
./AAA/aaa.txt
./BBB/bbb.txt
./CCC/ccc.txt
./data.tar
./zzz.txt
./tmp/CCC/ccc.txt
$
$ tar -ztvf backup.tar.gz
-rw-rw-r-- future/future     4 2026-02-11 12:45 ./AAA/aaa.txt
-rw-rw-r-- future/future     4 2026-02-11 12:46 ./BBB/bbb.txt
-rw-rw-r-- future/future     4 2026-02-11 13:07 ./CCC/ccc.txt
-rw-rw-r-- future/future 10240 2026-02-11 13:14 ./data.tar
-rw-rw-r-- future/future     4 2026-02-11 13:12 ./zzz.txt
-rw-rw-r-- future/future     4 2026-02-11 13:07 ./tmp/CCC/ccc.txt
$

まとめ

いかがでしたか?

バックアップ取得のためのアーカイブ作成で重宝します。

サーバーリプレイスの際、新サーバーへ直接通信できる場合は、rsync等でデータを複製できますが、そうでない場合、作成したtarファイルを、中継サーバーを介して、新サーバーへ転送し、展開することでデータの複製が可能です。

冒頭にも記載しましたが、パーミッション、タイムスタンプ等の情報も保持されますので、環境の複製に最適です。

是非とも活用ください。