tarでアーカイブを作るときに特定のファイルを対象外にする方法 †
以下のようにtarでアーカイブを作るときに特定のファイル(ディレクトリ)を対象外にする方法を記します。
tar czvf アーカイブファイル名 対象ディレクトリ等
対象外(除外)するためのtarのオプション †
manコマンドでtarを見ると以下、2つのオプションがあります。
man tar からの抜粋
--exclude FILE
ファイルFILEを除外する
-X, --exclude-from FILE
FILEに記載されているファイルを除外する
--exclude オプションを利用すれば特定のファイル(ディレクトリ)を除外できる †
tarコマンドの--excludeオプションを利用すれば、特定のディレクトリを対象外にすることができます。
以下のディレクトリとファイル構成で--excludeオプションを試してみます。
$ find linux
linux
linux/ubuntu
linux/ubuntu/ubuntu.txt
linux/debian
linux/debian/debian.txt
linux/centos
linux/centos/centos.txt
- 特定拡張子のファイルを除外する
この例は、各ディレクトリに拡張子.txtと.datが存在しています。
拡張子.datのを除外してtarアーカイブを作成してみます。
$ find linux
linux
linux/ubuntu
linux/ubuntu/ubuntu.txt
linux/ubuntu/ubuntu.dat
linux/debian
linux/debian/debian.txt
linux/debian/debian.dat
linux/centos
linux/centos/centos.dat
linux/centos/centos.txt
拡張子.datを除外するにはいかのようにします。
tar czvf linux.tar.gz linux --exclude linux/*.dat
実行結果を以下に記します。
拡張子.datが除外されています。
$ tar czvf linux.tar.gz linux --exclude linux/*.dat
linux/
linux/ubuntu/
linux/ubuntu/ubuntu.txt
linux/debian/
linux/debian/debian.txt
linux/centos/
linux/centos/centos.txt
--exclude-from FILE でFILEに指定したファイルを除外する †
tarコマンドの--exclude-from FILEオプションを利用すれば、FILEに記述したファイルを対象外にすることができます。
以下のディレクトリとファイル構成で--exclude-from FILEを試してみます。
$ find linux
linux
linux/ubuntu
linux/ubuntu/ubuntu.txt
linux/ubuntu/ubuntu.dat
linux/debian
linux/debian/debian.txt
linux/debian/debian.dat
linux/centos
linux/centos/centos.dat
linux/centos/centos.txt
- ubuntuディレクトリを含むファイルを除外する
除外ファイル(tar-excludde)は以下のように設定しました。
$ cat tar-exclude
linux/ubuntu
以下、実行結果です。
$ tar czvf linux.tar.gz linux --exclude-from tar-exclude
linux/
linux/debian/
linux/debian/debian.txt
linux/debian/debian.dat
linux/centos/
linux/centos/centos.dat
linux/centos/centos.txt
- ubuntuディレクトリを含むファイルを除外し拡張子.txtを除外する
除外ファイル(tar-excludde)は以下のように設定しました。
$ cat tar-exclude
linux/ubuntu
linux/*.txt
以下、実行結果です。
$ tar czvf linux.tar.gz linux --exclude-from tar-exclude linux/
linux/debian/
linux/debian/debian.dat
linux/centos/
linux/centos/centos.dat
尚、上記 man tar の抜粋に記されている通り、--exclude-from は -X と記述しても同様の動作となります。