tarアーカイブに除外されたディレクトリのサブディレクトリを含める

tarアーカイブに除外されたディレクトリのサブディレクトリを含める

USAルートフォルダとサブフォルダがあります。は除外されたサブフォルダCaliforniaですが、その中にtarバックアップに含めたい特定のファイルがあります。このファイルをと呼びましょう。TexasTexasAustin

どうすればいいですか?

答え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")

関連情報