Linux
如何鏡像具有數百萬硬連結的文件系統?
目前我們有一個大問題:我們需要為我們的一個客戶鏡像一個文件系統。這通常不是一個真正的問題,但它是:
在這個文件系統上,有一個包含數百萬硬連結的文件夾(是的!數百萬!)。
rsync
需要超過 4 天才能建構文件列表。我們使用以下
rsync
選項:rsync -Havz --progress serverA:/data/cms /data/
有誰知道如何加快這個 rsync 或使用替代品?我們不能使用
dd
,因為目標磁碟比源磁碟小。更新: 由於原始文件系統是
ext3
我們將嘗試dump
和restore
. 我會及時通知你2date
我們現在已經使用了 ext* dump。效果很好,恢復端甚至不必是 ext*。
我們通過解除安裝設備並使用
dump vf - /dev/vg0/opt | gzip -c > /mnt/backup/ext3dump.gz
.在這裡,您可以看到大小、時間、速度和最後的 inode 編號的最後幾行:
DUMP: dumping regular inode 47169535 DUMP: dumping regular inode 47169536 DUMP: Volume 1 completed at: Wed Jun 29 05:42:57 2011 DUMP: Volume 1 54393520 blocks (53118.67MB) DUMP: Volume 1 took 4:16:43 DUMP: Volume 1 transfer rate: 3531 kB/s DUMP: 54393520 blocks (53118.67MB) DUMP: finished in 15403 seconds, throughput 3531 kBytes/sec DUMP: Date of this level dump: Wed Jun 29 01:24:29 2011 DUMP: Date this dump completed: Wed Jun 29 05:42:57 2011 DUMP: Average transfer rate: 3531 kB/s DUMP: DUMP IS DONE
您需要將雙方升級到 rsync 3。從更改日誌中:
- A new incremental-recursion algorithm is now used when rsync is talking to another 3.x version. This starts the transfer going more quickly (before all the files have been found), and requires much less memory. See the --recursive option in the manpage for some restrictions.
rsync 3.0.0 發布已經 2 年多了,但不幸的是,大多數企業發行版都基於比這更早的程式碼,這意味著您可能正在使用 rsync 2.6。
作為參考(如果其他人遇到此問題),如果您已經在執行 rsync 3,那麼您正在使用與增量遞歸不兼容的選項。從手冊頁:
Some options require rsync to know the full file list, so these options disable the incremental recursion mode. These include: --delete-before, --delete-after, --prune-empty-dirs, and --delay-updates.
同樣,雙方都必須執行 rsync 3 才能支持增量遞歸。