rsyncを使用すると、一部のファイルの破損(つまり、ファイルの内容がソースファイルと一致しない)が発生します。同期中に書いた場合、ファイルが破損する可能性があることは理解していますが、書かれているようではありません。腐敗が発生する可能性がある他の状況はありますか?
1. ファイルは同時に複数の rsync プロセスによって同期されています。
これは不要で潜在的に危険なことのようです。しかし、我々はこれが必要だと仮定します。 2 つの rsync プロセスがソースを 2 つの別々の一時ファイルに同期したいと思います。完了するたびにアトミック名を変更して、ターゲットファイルを一時ファイルに置き換えます。これがどのように腐敗につながるのか理解できません。ワーストケースのシナリオでは、古い rsync が最後に完了し、ターゲットファイルが潜在的に古いバージョンのファイルと同期していることがわかります。
2. 同期中にソースファイルが移動または名前変更されます。
つまり、他のファイルの名前が現在同期されているファイルと同じ名前に変更されます。ソース側のrsyncプロセスがソースファイルを一度だけ開くと仮定すると、これがどのように破損する可能性があるのかわかりません。ソースを置き換えるためにファイル名を変更すると、rsync ですでに開かれているファイルは変更されません。変更されていないソースソースで引き続き実行する必要があります(プロセスが作成されていないと仮定)。
rsyncがどのように機能するかについて間違った仮定をした可能性があります。エラーがあれば、いつでも修正してください。
答え1
ここで問題は正確に何ですか?
rsync
意味のある助けを得るには、通貨パターンの詳細を追加する必要があります。私はrsync
何年も問題なく使用しています。表に見えるダメージはすべてこのマルチツールの不適切な使用によるものと見ても構わないようです。合格できない場合は、-c
修正rsync
時間とサイズに基づいてスキップされます。を通過してもパスも-c
通過し、ファイルが受信者の最新バージョンである場合はrsync
更新されません。渡さ-u
れると、ターゲットファイルはその場所で更新されます。私は、次の例があることを示すためにこれらの例を提示します。--inplace
rsync
たくさんオプションrsync
を呼び出す方法の詳細を追加する必要がありますrsync
。
同期中に書いた場合、ファイルが破損する可能性があることは理解していますが、書かれているようではありません。
推測するのではなく、inotify
ファイルがいつでも1つのプロセスによってのみ更新されたことを確認するために実行(ファイルが含まれているディレクトリなど)を試してみてはいかがでしょうか。