私はrsync
、次のようにリモートフォルダツリーを再帰的に同期するために使用します。
/folderA/a1/cache
/folderA/a1/cache/A1
/folderA/a1/cache/A2
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder/cache
/folderB/cache/
/folderB/b1/somefolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache/B1
/folderB/b1/somefolder/yetanotherfolder/cache/B2
フォルダツリーがどのように見えるかはわかりませんが、時間が経つと変わります。だから私がしたいのは、rsync
上記の作業を再帰的に行うことです。入らないようにするフォルダ「キャッシュ」とここに含まれるすべてのサブフォルダ:
/folderA/a1
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder
/folderB/
/folderB/b1/somefolder
/folderB/b1/somefolder/yetanotherfolder/
どんな提案がありますか?
答え1
--exclude
あなたは旗が欲しいです。たとえば、ローカル rsync は次のようになります。
rsync -a --exclude cache/ src_folder/ target_folder/
本当に簡単です。除外ルールは、cache
ツリーの名前が付けられたディレクトリと一致します。最後に、/
ディレクトリと一致するように強制し、名前付きファイルを除外しないようにしますcache
。
パスを一致させることもできます。次のツリーが与えられたら:
a1/cache/
b1/cache/
sub/a1/cache/
--exclude a1/cache/
一致a1/cache
がsub/a1/cache
一致しませんb1/cache
。そして--exclude /a1/cache/
唯一の一致ですa1/cache
。
rsyncフィルタリングでできることははるかに多いです。 rsyncのマニュアルページで、特に「FILTER RULES」セクションと「PATTERN MATCHING RULES」セクションを見つけてください--exclude
。--include
--filter