rsync、複数のrsyncプロセス、ソースファイルの移動/名前変更を使用して破損したファイル

rsync、複数のrsyncプロセス、ソースファイルの移動/名前変更を使用して破損したファイル

rsyncを使用すると、一部のファイルの破損(つまり、ファイルの内容がソースファイルと一致しない)が発生します。同期中に書いた場合、ファイルが破損する可能性があることは理解していますが、書かれているようではありません。腐敗が発生する可能性がある他の状況はありますか?

1. ファイルは同時に複数の rsync プロセスによって同期されています。

これは不要で潜在的に危険なことのようです。しかし、我々はこれが必要だと仮定します。 2 つの rsync プロセスがソースを 2 つの別々の一時ファイルに同期したいと思います。完了するたびにアトミック名を変更して、ターゲットファイルを一時ファイルに置き換えます。これがどのように腐敗につながるのか理解できません。ワーストケースのシナリオでは、古い rsync が最後に完了し、ターゲットファイルが潜在的に古いバージョンのファイルと同期していることがわかります。

2. 同期中にソースファイルが移動または名前変更されます。

つまり、他のファイルの名前が現在同期されているファイルと同じ名前に変更されます。ソース側のrsyncプロセスがソースファイルを一度だけ開くと仮定すると、これがどのように破損する可能性があるのか​​わかりません。ソースを置き換えるためにファイル名を変更すると、rsync ですでに開かれているファイルは変更されません。変更されていないソースソースで引き続き実行する必要があります(プロセスが作成されていないと仮定)。

rsyncがどのように機能するかについて間違った仮定をした可能性があります。エラーがあれば、いつでも修正してください。

答え1

ここで問題は正確に何ですか?

rsync意味のある助けを得るには、通貨パターンの詳細を追加する必要があります。私はrsync何年も問題なく使用しています。表に見えるダメージはすべてこのマルチツールの不適切な使用によるものと見ても構わないようです。合格できない場合は、-c修正rsync時間とサイズに基づいてスキップされます。を通過してもパスも-c通過し、ファイルが受信者の最新バージョンである場合はrsync更新されません。渡さ-uれると、ターゲットファイルはその場所で更新されます。私は、次の例があることを示すためにこれらの例を提示します。--inplacersyncたくさんオプションrsyncを呼び出す方法の詳細を追加する必要がありますrsync

同期中に書いた場合、ファイルが破損する可能性があることは理解していますが、書かれているようではありません。

推測するのではなく、inotifyファイルがいつでも1つのプロセスによってのみ更新されたことを確認するために実行(ファイルが含まれているディレクトリなど)を試してみてはいかがでしょうか。

関連情報