複製時比較兩個相同的非稀疏檔案之間的檔案大小

複製時比較兩個相同的非稀疏檔案之間的檔案大小

我正在使用 KVM 將虛擬機器從一台主機即時遷移到另一台主機。我已經編寫了一個網頁使用者介面來做到這一點。現在我想實現一個進度條。

我的想法是在遷移時比較來源和目標上的磁碟檔案大小。

伺服器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%

我已經嘗試過使用dustat

如何只取得磁碟傳輸檔案的大小?

答案1

按照已經建議的方式使用 virsh migrate,或利用 rsync 的稀疏檔案支持,來自man rsync

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

如果您想查看進度和速度,請嘗試rsync -ahHS新增-P

相關內容