web-dev-qa-db-ja.com

ソースの更新中にrsyncを使用しても安全ですか?

Rsyncの実行中に変更される可能性があると想定して、ソースファイルシステムがマウントされて書き込み可能である場合にrsyncを使用しても安全ですか?競合状態では最新の変更を取得できないと思いますが、破損のリスクはありますか?

20
brianmearns

rsyncの使用は、読み取り/書き込みマウントされたファイルシステムではかなり安全です。 rsyncが開始されると、ファイルリストが作成され、それらのファイルのコピーが開始されます。このファイルリストは実行中に更新されません。次に、実際のデータがコピーされます。

これは、ファイルが変更されるとafterrsyncがファイルリストを作成したときに、-newの内容をコピーすることを意味します。ただし、rsyncがファイルリストを作成した後、新しいファイルがaddedの場合、この新しいファイルはコピーされません。 rsyncがファイルのリストを作成した後でファイルがdeletedの場合、rsyncはそのファイルをコピーできなかったことを警告します。 rsyncはスナップショットではないことに注意してください。これは、どの時点でrsyncがデータをコピーしたかを判断するのが難しいことを意味します。

一方、ファイルシステムまたはボリュームマネージャのスナップショット(ZFSやLVMを使用するなど)は即座に作成され、明確に定義された時点でのファイルシステムの一貫したスナップショットであり、別のホストにコピーできます。 rsyncはこの種の一貫性を提供しません。

編集:コメントで指摘されているように、rsyncが実際にファイルを破損する可能性があります。 rsyncがファイルの読み取りを開始し、同時にアプリケーションがそのファイルを書き込んでいる場合、ファイルが破損する可能性があります。

21
Marco