この記事にはrsync
、少なくとも次のようないくつかの役立つ提案があります。
問題
を使用rsync --sparse works
しますが、不要なディスク書き込みが大量に発生します。50GBの長さ(1GBを使用)で10バイトを変更すると、1つまたは2つのブロックのみが書き込まれ、1GBが書き込まれます。これは低速であり、ディスクの寿命にとって好ましくない可能性があります。
使用はrsync --inplace
機能しますが、非スパースファイルが作成されます。
--sparseと--inplaceを同時に使用することはできません:-(これはrsyncでは許可されていません。
解決
--inplaceを使用して既存のスパースファイルを更新すると、ファイルはスパースなままで、少数のブロックのみが書き込まれます。rsync --inplaceがファイルを作成するときのみ、非スパースになります。
したがって、解決策は、ソースマシン上のすべてのファイルについて、対応する正確な長さの空のスパースファイルをターゲットマシンに作成することです(ファイルがまだターゲットマシンに存在しない場合)。
次に、rsync --inplaceは意図したとおりに機能し、スパースファイルをスパースにして、変更されたブロックのみをディスクに書き込みます。
したがって、私がそれを正しく読んだ場合、最初にターゲット上に空のスパースファイルを作成する必要があります。あなたはこれを行うことができます
truncate -s 3G filename
次に、を使用rsync --inplace
してファイルをコピーできます。これは一度だけ必要です。
同じ記事は、Virtsyncの使用を提案しています
巨大なファイル(仮想マシンのディスクイメージやデータベースなど)のコンテンツを同期するための49ドルの商用Linuxコマンドラインツール。
これは、この種の状況のために特別に書かれているように見えるので、お金を払う気があるなら、最善の解決策かもしれません。