コピー時に2つの同一の非希少ファイル間のファイルサイズを比較する

コピー時に2つの同一の非希少ファイル間のファイルサイズを比較する

私は、KVMを使用してあるホストから別のホストに仮想マシンをリアルタイムで移行しています。これを行うためにWeb UIを作成しました。今進行状況バーを実装したいと思います。

私の考えは、移行中にソースとターゲットのディスクファイルサイズを比較することです。

サーバー1:

ls -ls /data/file.raw
858963 -rw------- 1 root root 21474836480 Dec 15 13:39 file.raw

サーバー2:

ls -ls /data/file.raw
698543 -rw------- 1 root root 21474836480 Dec 15 13:39 file.raw

割り当てられた値を取得し、パーセンテージとして計算します。

100 / 858963 * 698543 = 81%

美しい。しかし、問題があります。

ディスクがまれではありません。ファイルの合計サイズはです1717926 blocks。実際には858963 blocks割り当てのみがあります。したがって、リアルタイム移行はまだファイルの空白部分をコピーしていますが、進行状況バーは100%に達しました。

duとを使ってみましたstat

ディスク転送ファイルのサイズだけを取得する方法は?

ベストアンサー1

すでに提案されているようにvirsh migrationを使用するか、次のrsyncのスパースファイルサポートを利用してくださいman rsync

-S, --sparse Try to handle sparse files efficiently so they take up less space on the destination.

進行状況と速度を確認するには、rsync -ahHS追加してみてください。-P

おすすめ記事