このエントリーをはてなブックマークに追加


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
  • centosを除外する 以下のようにするとcentosディレクトリを含むcentos以下のファイルが除外されます。
    tar czvf linux.tar.gz linux --exclude linux/centos
    実行結果を以下に記します。
    centosディレクトリが除外されています。
    $ tar czvf linux.tar.gz linux --exclude linux/centos
    linux/
    linux/ubuntu/
    linux/ubuntu/ubuntu.txt
    linux/debian/
    linux/debian/debian.txt
  • centos, ubuntu を除外する 以下の例はcentos, ubuntuを除外した例です。
    $ tar czvf linux.tar.gz linux --exclude linux/centos --exclude linux/ubuntu
    linux/
    linux/debian/
    linux/debian/debian.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 と記述しても同様の動作となります。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:28:02