特定ディレクトリを除外してtarアーカイブを作る
何をしたいかというと、
[bata64@Server ~]$ find pl pl pl/総合順位表.csv pl/ShinMasuzawa pl/ShinMasuzawa/config pl/ShinMasuzawa/config/config.pl pl/ShinMasuzawa/config/config.BAK pl/ShinMasuzawa/Build.PL ~中略~ pl/Masuzawa pl/Masuzawa/EXCEL_TEST pl/Masuzawa/EXCEL_TEST/新増沢方式審査用紙tmp.csv pl/Masuzawa/EXCEL_TEST/新増沢方式審査用紙.csv pl/Masuzawa/EXCEL_TEST/新増沢方式審査用紙.xlsx pl/Masuzawa/EXCEL_TEST/新増沢方式審査用紙tmp.xlsx pl/Masuzawa/EXCEL_TEST/Bata pl/Masuzawa/EXCEL_TEST/Bata/GetData.BAK pl/Masuzawa/EXCEL_TEST/Bata/GetData.pm pl/Masuzawa/EXCEL_TEST/Bata/CSV.BAK ~略~
[bata64@Server ~]$ tar cf /var/tmp/pl.tar pl
とすれば良いですが、当然plディレクトリ以下の全てのディレクトリ、ファイルを含めたアーカイブファイルである「pl.tar」が出来上がります。
このとき、「pl/Masuzawa」以下のディレクトリとファイル以外をtarアーカイブしたい場合は以下のようにします。
除外ディレクトリを書いたテキストファイル(除外ディレクトリ記載ファイル)を用意する
[bata64@Server ~]$ vi ~bata64/xfile
とかで編集し、
pl/Masuzawa
と記入します。複数ある場合は改行区切りで、
pl/Masuzawa pl/sirakaba/aozora/minamikaze pl/sen/masao
みたいに書いていけば良いです。
がポイントです。
除外ディレクトリ記載ファイルを指定してtarアーカイブ作成
/export/home/bata64/pl
である場合、
/export/home/bata64/
に移動する、という事です。
その上で、-Xオプションをつけて除外ディレクトリ記載ファイルを指定してtarアーカイブを作成します。
[bata64@Server ~]$ tar cfX /var/tmp/pl.tar ~bata64/xfile pl
これでOK。本当に除外されているかどうかを知りたければ-vオプションつけて
[bata64@Server ~]$ tar cfvX /var/tmp/pl.tar ~bata64/xfile pl
として標準出力を目視でがんばるか、出来上がったtarアーカイブを-tオプションで眺めればよいと思います。
[bata64@Server ~]$ tar tfv /var/tmp/pl.tar
注意点
私はSolarisだいすきっ子ですので以下の環境で試しました。
SPARC Solaris10 1/13 SPARC Solaris8 10/01
すると、
- Solaris10の場合/usr/sfw/bin/gtarでは成功
- Solaris8に別途インストールしたGNU tar(バージョン1.13)ではエラーが出ず成功したように見えるが除外されていない
- Solaris8のOSバンドル tarでは成功
という結果になりました。Solarisで試して上手く行かないなー、という方はtarのバージョンとかを疑ってみてはいかがでしょう。
なお、カーネル2.6台のLinuxとかSolaris11にバンドルされているGNU tarの場合は大体成功します(というかいまどきのOSであれば大体大丈夫でしょう)。