2 つの場所からのパス/ファイルのサブセットの変更を同期するのが好きです。一部のバージョン管理ツールがリストするように、すべての変更のパスがありますが、それらに何が起こったのかについての情報はありません。簡単に聞こえますが、ほとんど不可能に思えます..注意事項は次のとおりです。
複数のソース引数を使用し、それらを/./
likeで固定する
rsync -a --delete /some/path/./file1 /some/path/./subfolder/file2 host:/some/path
これは、ソース側にもう存在しない、移動または削除されたファイルを除いて機能します。これらは rsync による苦情であり、ターゲット側では削除されません。
そこで、複数のソースの代わりにフィルターを使用してみ--include=/subfolder/file1 --exclude=*
ました。ただし、ディレクトリを省略すると再帰が停止するため、最上位で停止し、ファイルを同期しません。
--include=*/
そのため、再帰を再度有効にするために、exclude ステートメントの前に追加しました。次に、リストにないフォルダーはすべて同期されます。そのメタデータが同期されます。また、-v
どこにでもあるすべてのフォルダーの乱雑な出力になってしまいます。
-m
そのため、一部の人々が示唆しているように、「空の」ディレクトリを除外することを追加しました(実際には空ではありませんが、除外によってそのようにレンダリングされます)。ただし、--delete
すべてのディレクトリが削除対象としてリストされているため、これは と相互作用します。他のフィルターとは対照的に-m
、一致する空のディレクトリも削除リストに入れているようです。
今、私はアイデアを使い果たしています...