Linux
如何估計 427GB 目錄的 rsync 包含 470k 子目錄和 4476k 文件需要多長時間?
- 我有一個目錄,我想
rsync
通過 1Gb LAN 連接到另一台機器。- rsync 命令是
/usr/bin/rsync -a –delete –numeric-ids –relative –delete-excluded –rsh=/usr/bin/ssh root@ machine .local: source-dir destination-dir
- 這個 427GB 的目錄由 470571 個子目錄和 4476474 個文件組成。
- rsync 一個週末都沒有完成。
我如何估計 rsync 需要多長時間?
兩台機器上的作業系統都是 CentOS 7。
假設這是一個大檔案,它可以按順序複製。1 Gb 連結,比如成本佔傳輸的 70%。
You have: (.7 / 8) GB /s You want: hr / 427 GB reciprocal conversion * 1.3555556 / 0.73770492
但它花了一個半小時以上的時間。對於大量的小文件,元數據 IO 支配了傳輸時間,這些平均來說很小:
You have: 427 GB / 4476474 You want: kB * 95.387575 / 0.010483546
假設 rsync 必須為每個文件或目錄執行一個 IO 來檢查元數據,並另一個 IO 來複製它。您沒有描述儲存,而是說 SATA 微調器的最壞情況,即 50 IOPS。
You have: 50 / s You want: hr / (2 * 5000000) reciprocal conversion * 55.555556 / 0.018
兩天半的時間實際上很低,如果你說你在第三天就停止了。
我有根據的猜測會弄錯很多事情:系統負載、儲存能力、rsync 的算法如何處理這麼多文件、目標中刪除了多少文件。但它有助於接近完成工作的數量級,然後與系統的限制進行比較。
關於更快地複制:複製檔案或圖像,而不是文件。更少的文件元數據和順序副本。例如,拍攝 LVM 快照,並用於
dd
通過網路傳輸整個文件系統。不如 rsync 靈活,只能複制整個卷。