開いているファイルを別のデバイスに移動

開いているファイルを別のデバイスに移動

私は大容量(〜200 GB)の出力ファイルを生成するアプリケーションを実行しており、実行には約35時間かかります(現在は約12時間かかります)。アプリケーションはファイルを一度開いた後、書き込まれるまでファイルを開いたままにします。さらに、アプリケーションはファイルへの多くのランダムアクセス書き込み(つまり、順次書き込みではありません)を実行します。

現在、ファイルはローカルハードドライブに保存されていますが、完了したら別のデバイス(ネットワークドライブ、SMB経由でマウントされたNTFS)に移動することにしました。

時間を節約し、後でファイルを移動したくない場合は、プログラムを中断し、現在部分的に完了したファイルを別のデバイスに移動し、いくつかのトリックを実行してからプログラムを再起動して、新しい場所を使用する方法はありますか?

答えは「いいえ」と確信しています。でも、聞いてみたいと思いました。時には素晴らしいトリックがあります...

ベストアンサー1

tailファイルはランダムに作成されるため、他のソリューションを公開すると心が痛くなります。増分転送アルゴリズムを使用して機能し、ファイルの変更された部分のみを転送して転送時間を節約できるため、ここでのアイデアはrsync有望です。 2つのローカルファイルで実行するrsyncと、rsyncデフォルトではモードになりますが、--whole-fileこれは望むものではありません。

提案

rsync -av --inplace --no-whole-file /your/local/file.dat /your/remote/file.dat

...または(CIFSインストールが増分転送に同意しない場合)、pureを使用してくださいrsync

rsync -av --inplace --no-whole-file /your/local/file.dat remoteserver:/your/directory/file.dat

したがって、200 GB ファイルがいっぱいになったら、このコマンドを複数回実行する必要があります。実行するたびに、リモートファイルは徐々に更新されます。これは、ソースファイルがランダムに更新された場合にも機能します。たぶん15分ごとに実行できます。その後、pidが完了すると再実行され、これは急速な増分増加になります。

おすすめ記事