Top>Linux>コマンド>tar

コマンド
tar

説明
Linuxユーザには必須のコマンド。アーカイブの作成と圧縮・伸長をおこなう。
また、テープデバイス等への書きこみも可能となっている。
オプションが多く多様な使用形態が可能となっているが、ここではポピュラーなものを掲載する。

書式
tar [オプション] <ディレクトリ・ファイル>

オプション(操作モード)
-A:アーカイブへtarファイルを追加する。
-c:新しいアーカイブを作成する。
-d:アーカイブとファイル・システムの差分ととる。
--delete:アーカイブファイルから指定ファイルを削除する。(テープデバイス上のアーカイブは除く)
-r:アーカイブの最後にファイルを追加する。
-t:アーカイブの内容の一覧を表示する。
--test-label:アーカイブのボリュームラベルのテストを行う。
-u:アーカイブファイルの同名ファイルより新しいものだけを追加する。
-x:アーカイブからファイルを取り出す。

オプション(共通)
-f:指定したアーカイブ・ファイル・デバイスを使用する。
-j:bzip2を経由してアーカイブをフィルタする。
-v:処理対象のファイルの一覧を詳しく表示する。
-z:gzipを経由してアーカイブをフィルタする。
※他多数

留意事項
1.アーカイブ対象に/がつく場合(/homeなど)は/が除かれてアーカイブされる。アーカイブから特定ファイルを削除する場合(オプション --delete)も /を除いた形で指定する必要がある。またアーカイブ後に検証を行う場合(オプション -w)、ディレクトリ・ファイルの先頭に/がつく場合は/がのぞかれた 形でアーカイブされるが比較の際にも/が除かれたものを比較しようとするのでカレントディレクトリが/となっていない場合はエラーとなるので 注意が必要である。変更状態をチェックする場合(オプション -d)も同様の考慮が必要となる。
なお先頭の/を取り除かないオプション(-P)もある。

2.アーカイブファイルが圧縮されている場合に、アーカイブファイルに新しいファイルを追加したり、またアーカイブファイルから特定ディレクトリ・ファイルを 削除しようとする場合は直接はできないので、いったん伸長しtarファイルにしてからオペレーションする必要がある。

3.-hオプションを指定しない場合はシンボリックリンクのみをアーカイブする。-hオプションを指定するとリンク先までアーカイブする。

使用方法1 - gzipで圧縮されたアーカイブファイルを展開する。
tar zxvf <アーカイブファイル名.tar.gz>

(例) tar zxvf backup.tar.gz
backup.tar.gzファイルを展開する。

使用方法2 - bzip2で圧縮されたアーカイブファイルを展開する。
tar jxvf <アーカイブファイル名.tar.bz2>

(例) tar jxvf backup.tar.bz2
backup.tar.gz2ファイルを展開する。

使用方法3 - アーカイブファイルを展開する(圧縮なし)。
tar xvf <アーカイブファイル名.tar>

(例) tar xvf backup.tar
backup.tar ファイルを展開する。

使用方法4 - アーカイブファイルから特定のファイル(ディレクトリ)を取り出す。
tar xvf <アーカイブファイル名.tar> <展開対象ファイル(ディレクトリ)>

(例) tar xvf backup.tar tmp
backup.tarファイルからtmpディレクトリを取り出す。
※圧縮ファイルから取り出す場合はアーカイバーでフィルターするオプション(z,jなど)を追加する。

使用方法5 - アーカイブファイルを作成する(圧縮なし)。
tar cvf <アーカイブファイル名.tar> <ディレクトリ・ファイル>

(例) tar cvf backup.tar /home
/home ディレクトリを backup.tar ファイルにアーカイブする。

使用方法6 - gzipで圧縮されたアーカイブファイルを作成する。
tar cvfz <アーカイブファイル名.tar.gz> <ディレクトリ・ファイル>

(例) tar cvfz backup.tar.gz /home
/home ディレクトリを backup.tar.gz ファイルにアーカイブする。

使用方法7 - bzip2で圧縮されたアーカイブファイルを作成する。
tar cvfj <アーカイブファイル名.tar.bz2> <ディレクトリ・ファイル>

(例) tar cvfj backup.tar.bz2 /home
/home ディレクトリを backup.tar.bz2 ファイルにアーカイブする。

使用方法8 - アーカイブファイルの内容を一覧表示する。
tar tf <アーカイブファイル名>

(例) tar tf backup.tar
tar tf backup.tar.gz
tar tf backup.tar.bz2
backup.tar, backup.tar.gz, backup.tar.bz2 に含まれるディレクトリ・ファイルのリストを表示する。
※圧縮されたファイルでも利用可能。

使用方法9 - アーカイブに含まれるファイルの変更状態をチェックする。
tar df <アーカイブファイル名>

(例) tar df /work/backup.tar
backup.tar ファイルに含まれるファイルの変更状態をチェックする。タイムスタンプを比較し変更があるもののみを表示する。
※変更・削除された場合は警告が表示される。終了コードが1となる。
※アーカイブに含まれないファイルはリストアップされない。
※圧縮されたアーカイブファイルに対しても実行可能となっている。
※先頭に/がつくディレクトリをアーカイブした場合は/が取り除かれるので注意が必要。 /homeをバックアップした場合はカレントディレクトリのhomeを検証しようとするので、カレントディレクトリを/にしてコマンドを実行する必要がある。

使用方法10 - tarファイルの最後にファイルを追加する。
tar rf <アーカイブファイル名.tar> <追加ディレクトリ・ファイル>

(例) tar rf backup.tar /home/test.txt
backup.tarファイルにhome/test.txt ファイルを追加する。
※アーカイブファイルが圧縮されている場合は直接は追加できない。

使用方法11 - tarファイルからディレクトリ・ファイルを削除する。
tar --delete -f <アーカイブファイル名.tar> <削除ディレクトリ・ファイル>

(例) tar --delete -f backup.tar /home/test.txt
backup.tarファイルからhome/test.txtファイルを削除する。
※通常の利用においてはアーカイブファイルに格納時にファイルの先頭に/がある場合は取り除かれる。
したがって削除対象のディレクトリ・ファイルを先頭の/を除いて指定する。
※アーカイブファイルが圧縮されている場合は直接は削除できない。

使用方法12 - 新しいファイルのみをアーカイブファイルの最後に追加する。
tar uf <アーカイブファイル名.tar> <追加対象ディレクトリ>

(例) tar uf backup.tar /home
backup.tar ファイルに/homeディレクトリで更新されたもののみを追加する。
※/homeディレクトリがアーカイブファイルに存在しない場合はアーカイブファイルに追加される。
※アーカイブファイルが圧縮されている場合は直接は追加できない。

使用方法13 - アーカイブファイル1にアーカイブファイル2を追加する。
tar Af <アーカイブファイル1.tar> <アーカイブファイル2.tar>

(例) tar Af backup1.tar backup2.tar
backup1.tarファイルにbackup2.tarファイルの内容を追加する。
※backup2.tarファイルにbackup1.tarファイルと同じ内容が含まれる場合は展開した際にbackup2.tarの内容で上書きされる。
この場合以前のアーカイブ内容と追加したアーカイブ内容がファイル中に存在し容量効率はあまりよくない。
※アーカイブファイルが圧縮されている場合は直接は追加できない。

使用方法14 - アーカイブ後にアーカイブしたファイルを検証する。
tar cvfW <アーカイブファイル名.tar> <ディレクトリ・ファイル>

(例) tar cvfW /work/backup.tar home
homeディレクトリをbackup.tarファイルにアーカイブし、アーカイブしたファイルを検証する。
※圧縮オプションと同時には使用できない。
※圧縮対象のディレクトリの先頭に/がつく場合はアーカイブ時に取り除かれるため検証時にエラーとなるので注意が必要。

使用方法15 - tarコマンドで差分バックアップを行う。
①フルバックアップにさきだち時刻ファイルを作成する。
# touch time_full

②フルバックアップを行う。
# tar cvfz backup_full.tar.gz /home

③差分バックアップの実行(time_fullより新しいファイルのみをアーカイブする。)
# find /home -type f -newer time_full | xargs tar cvfz backup_diff.tar.gz

※以降の差分バックアップは③を実行する。

使用方法16 - tarコマンドで増分バックアップを行う。
①フルバックアップにさきだち時刻ファイルを作成する。
# touch time_inc

②フルバックアップを行う。
#tar cvfz backup_full.tar.gz /home

③前回のタイムスタンプファイルを退避する。
#mv time_inc time_inc_prev

④今回のタイムスタンプファイルを作成する。
#touch time_inc

⑤増分バックアップの実行(time_inc_prevより新しいものだけをアーカイブする。)
#find /home -type f -newer time_inc_prev | xargs tar cvfz backup_inc_<日時>.tar.gz

※以降の増分バックアップは③~⑤を繰り返す。

最終更新日:2013/10/05

- Published By MINDKERNEL.COM -