Linux

如何估計 427GB 目錄的 rsync 包含 470k 子目錄和 4476k 文件需要多長時間?

  • October 20, 2020
  • 我有一個目錄,我想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。

是時候用GNU 單位作為計算器進行一些粗略的費米估計了。

假設這是一個大檔案,它可以按順序複製。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 靈活,只能複制整個卷。

引用自:https://serverfault.com/questions/1039330