ソースが安全に更新されている間にrsyncを使用していますか?


19

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


1
変更が発生した場合の整合性(データファイルと関連するメタデータファイル、ログなどのファイル間)または破損(単一ファイル内)が心配ですか?
CVn

良い点は、ファイル間の一貫性を考慮していなかったことです。私はrsyncそれについて何も本当にできるとは思いませんが、スナップショットだけができますが、ファイル内の破損についてもっと心配しています。
ブライアンマーンズ

回答:


20

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

つまり、ファイルリストの作成後に ファイルが変更rsyncされると、新しいコンテンツがコピーされます。ただし、ファイルリストが作成された後に新しいファイルが追加rsyncされると、この新しいファイルはコピーされません。ファイルのリストを作成した後にファイルが削除さrsyncれると、rsyncはそのファイルをコピーできなかったことを警告します。rsyncスナップショットではないことに注意してください。これは、どの時点でrsyncデータをコピーしたかを判断するのが難しいことを意味します。

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

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


2
削除されたファイルに関するメモを追加しました。ボリュームマネージャースナップショット+ rsyncの提案が可能であれば、おそらくこれをもう1つ支持します。この答えが欠けていると思うのは、コピー元のファイルがコピー中に変更されたときのrsyncの動作だけです。しかし、それでうまく処理できるとは思いません。
CVn

同意した。特定のファイルに一貫性を持たせたい場合は、オペレーティングシステムのサポートが必要ですか?
トールビョーンラヴンアンデルセン

1
この答えは、ソース側のアプリケーションが最初に一時ファイルに書き込み、次にそれを所定の場所に移動する場合に適用されます。rsyncがたまたまそのファイルを読み取っている間に、アプリケーションが書き込み用に既存のファイルを開くと、rsyncは古いバージョンと新しいバージョンの破損したミックスをコピーする場合があります。
ジル 'SO-悪であるのをやめる'

@Gillesそれを指摘してくれてありがとう。回答を更新しました。これはrsyncのに関連しているか、これはに発生した任意の別のアプリケーションが同じファイルに書き込みながら読み込むアプリケーション?
マルコ

1
@Marco両方が何らかのロックプロトコルを使用しない限り、どのアプリケーションでも発生します(unixには強制ロックはなく、アドバイザリロックのみ、つまり誰もが使用している場合にのみ機能するロック)。同時変更が懸念される場合にファイルを変更する通常のプロトコルは、一時ファイルを書き込んでから所定の場所に移動することです。
ジル 'SO-悪であるのをやめる'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.