Rsyncの実行中に変更される可能性があると想定して、ソースファイルシステムがマウントされて書き込み可能である場合にrsync
を使用しても安全ですか?競合状態では最新の変更を取得できないと思いますが、破損のリスクはありますか?
rsync
の使用は、読み取り/書き込みマウントされたファイルシステムではかなり安全です。 rsync
が開始されると、ファイルリストが作成され、それらのファイルのコピーが開始されます。このファイルリストは実行中に更新されません。次に、実際のデータがコピーされます。
これは、ファイルが変更されるとafterrsync
がファイルリストを作成したときに、-newの内容をコピーすることを意味します。ただし、rsync
がファイルリストを作成した後、新しいファイルがaddedの場合、この新しいファイルはコピーされません。 rsync
がファイルのリストを作成した後でファイルがdeletedの場合、rsyncはそのファイルをコピーできなかったことを警告します。 rsync
はスナップショットではないことに注意してください。これは、どの時点でrsync
がデータをコピーしたかを判断するのが難しいことを意味します。
一方、ファイルシステムまたはボリュームマネージャのスナップショット(ZFSやLVMを使用するなど)は即座に作成され、明確に定義された時点でのファイルシステムの一貫したスナップショットであり、別のホストにコピーできます。 rsync
はこの種の一貫性を提供しません。
編集:コメントで指摘されているように、rsync
が実際にファイルを破損する可能性があります。 rsyncがファイルの読み取りを開始し、同時にアプリケーションがそのファイルを書き込んでいる場合、ファイルが破損する可能性があります。