USA
ルートフォルダとサブフォルダがあります。は除外されたサブフォルダCalifornia
ですが、その中にtarバックアップに含めたい特定のファイルがあります。このファイルをと呼びましょう。Texas
Texas
Austin
どうすればいいですか?
答え1
順序が重要です。 tarを2回実行する必要はありません。
tar cvf dest.tar USA/Texas/Austin --exclude=USA/Texas USA
GNU tar 1.29でテストされました。
答え2
tarを2回実行しますか?まず、テキサス以外のファイルを抽出しますか?
答え3
BSDやGNU tarを使ってこの作業を便利にする方法がわかりません。 (不便な点は、ディレクトリ自体を除外するのではなく、含めるファイルを除くディレクトリ内のすべてのファイルを除外することです。)
比較的簡単にできます。公園、これはPOSIXのcpioとtarを置き換えます。 Paxはどこでも使用できますが、一部のLinuxディストリビューションには基本インストールの一部として含まれていません。
Paxは、同じツールであるオプションを使用して除外と名前の変更を管理します-s
。ファイル名を空の文字列に変更すると除外されます。オプションは-s
順番に処理され、ファイルが一致すると、そのファイルの後続のオプションは処理されません(g
サフィックスが使用されていない限り)。したがって、一致する除外ルールの前にファイル名を自分の名前に変更して、ファイルの除外を取り消すことができます。
pax -w >foo.tar -s '!^USA/Texas/Austin$!&!' -s'!^USA/Texas/.*!!' USA
答え4
次のようにtar
コマンドを組み合わせて実行できます。find
tar cf USA.tar $(find USA/* -type d ! -path "*Texas*" -o -path "USA/Texas/Austin")