増分バックアップのためにDVDに焼いた写真のリストを保存しましたが、奇妙な状況に直面しました。ファイルはDVDに焼かれていますが、tarはそうではないと言います。再現段階は次のとおりです。
mkdir tarbug && cd tarbug
mkdir -p photos/{1,2,3}
touch "photos/1/P06-23-08_15.21[1].jpg"
touch "photos/2/P06.jpg"
touch "photos/3/P01.jpg"
すべてのファイルのリストを作成します(通常DVDを焼いてリストに追加します)。
find photos -type f > list
リストのファイルを除いて、ディレクトリを表示しない新しいファイルを提供します。
tar cf - photos -X list | tar tf - | grep -v '/$'
結果:
photos/1/P06-23-08_15.21[1].jpg
ファイルリストには表示しないでください。角かっこをバックスラッシュでエスケープする必要があることを知りましたか?しかし、私はどうやって知ることができますか? tarが好きではない、または他の目的に使用しない文字のリストはありますか?
答え1
マンページを見るとtar
次のようになります。
-X, --exclude-from FILE
exclude patterns listed in FILE
情報文書に詳細が記載されています。
したがって、list
ファイル名ではなくパターンのリストでなければなりません。 ㅏ模様通常、シェルワイルドカードパターンを表します。したがって、少なくとも、*
] [
、およびは]
特別です。それ{
も事実かもしれません}
。
ドキュメントに--no-wildcards
。これにより、名前はパターンではなく文字通り一致します。--no-wildcards
前に行く必要があります-X
。
[私が確認したGNU tarです。他の tar 実装は異なる場合があります。 ]