ファイルfileA.big(900mb)をB位置からC位置にコピーするとき、cp操作中にプロセスの35%がfileA.bigに新しい情報が追加され、900MBから930MBに大きくなるとどうなりますか?
最終コピー(例:場所CのfileA.big)の結果は何ですか?
コピーが約70%に達し、元のファイルが更新されましたが、今回は400 MBに切り捨てられた(つまり、コピーの進行状況が切り捨てポイントを超えた場合)、最終コピーの結果はどうなりますか?
ext3/ext4 ファイルシステムの Linux オペレーティングシステムを表します。影魔法などはありません。ちょうど普通の古いcpです。バックアップ用にライブCouchDBファイルをコピーすることは好奇心を引き起こしましたが、特定のユースケースではなく一般的なシナリオに興味がありました。
ベストアンサー1
Patrickの声明はやや正確ですが、その理由は次のとおりです。 UNIXでファイルをコピーする方法は次のとおりです。
- でもう少しバイトを読んでください
fileA
。 - ファイルの終わりに到達(または通過)してバイトを取得できない場合は、操作は終了です。
- それ以外の場合はバイトを書き、
fileB
ステップ1に戻ります。
これを知り、それがとても簡単であることを知っているので、いくつかの極端なケースを見てみましょう。
ファイルの終わりを見つけたら、コピーは完了です。コピー中はファイルが大きくなりますが、コピーするよりも遅い速度で増加するとします。コピープログラムは元のファイルサイズを超え続けます。元のファイルサイズに達すると、ファイルにはより多くのコンテンツが含まれるためです。しかし、ある時点でファイルの終わりまで追いつくと、もはやバイトを読み取ることができないため、終わりに達したことがわかります。今。そのため、ファイルが大きくなってもすぐに終了します。
ファイルが切り捨てられると、コピープログラムは「うわー、ファイルの終わりを過ぎました!」と言って終了します。
ファイルの一部がデータベースプログラムによってランダムに更新される場合:-) データは同時にコピーされないため、コピーには古いデータと新しいデータが混在しています。その結果、コピーが破損する可能性があるため、ライブデータベースのコピーを作成するのは一般的に良い考えではありません。
(しかし私はCouchDBに慣れておらず、この種の破損に抵抗するようにデータベースを設計することは可能ですが、絶対に確信する方が良いでしょう。)