rsync dir-mergeはローカルフィルタとリモートフィルタの影響を受けます。

rsync dir-mergeはローカルフィルタとリモートフィルタの影響を受けます。

Webサーバーにファイルをアップロードするには、--deleteでrsyncを使用しています。構成ファイルなので除外したいファイルがあります。構成/特殊ファイルを除外するために、ディレクトリ全体に.rsync-filterファイルを分散させるために「dir-merge」フィルタを使用しています。

これは簡単なようですが、私に問題がありました。

多くの調査の最後に、私の問題は、.rsync-filterを使用してローカルからファイルを除外すると、ファイルがまだリモートで削除されることです。〜しない限りリモコンに対応する.rsync-filterが既にあります。

これが実際に意味するのは、ファイルを除外するために.rsync-filter(ローカル)を作成すると、rsyncがまだリモートからファイルを削除することです。しかし、.rsync-filterもリモコンにコピーするので、次回試してみるとする正しく除外してください。

だから私の質問は(少し広範囲)です。そうですか?マニュアルページでこれについての言及はどこにありますか?これらすべてが私にとってはちょっと反直感的なようです!

ああ、それでは、「e」merge|dir-merge修飾子は何をしますか? (「e」修飾子は、マージされたファイルを転送から除外します)。確かに「e」修飾子を使用すると、rsyncが期待どおりに機能しない可能性が高くなります。

ベストアンサー1

私の質問に答えて、rsyncがどのように機能するのか理解できません!

基本的にローカルrsyncがすべてを実行していると思います。何を削除するかを決定する受信者を除くすべての操作をほとんど実行します。これに対する副作用は、ディレクトリごとにマージされたファイルを使用している場合、マージされたファイル自体がアップロードされるまで、受信者はこれらの事実を知ることができないことです。

私の最初の考えは、最初にrsyncを実行することでした。いいえ削除してマージされたファイルを同期し、rsyncを再実行してください。そして正しく機能していることを確認するには、削除してください。しかし、--delete-after問題を解決することがわかりました。

私を混乱させるもう1つのことは、この機能を使用すると、除外されたファイルが削除され続けることです。これは練習の実行であり、受信者はまだ同期されていないマージさ--delete-after--dry-runたファイルのフィルタリング規則を(これまで)知らないからです。

最後に、dir-mergeの「e」修飾子はマージされたファイルのアップロードを除外します--delete

おすすめ記事