作為應用程式遷移的一部分,我必須將目錄結構複製到新主機。目錄結構如下:
{10 - ff} / {00 - ff} / {00 - ff}(不包含)/唯一檔名
所以有數百萬個文件。樹的第三層尚未完全填充,並且並非每個第三層目錄中都有一個檔案。
即使是二級資料夾,du 也需要很長時間才能完成。使用 tar | nc需要10天。我可以停電 1 天,但不能停電 10 天。
答案1
用於rsync
此。
- 在必須切換到使用新伺服器之前,請執行
rsync
從一台主機到另一台主機的整個目錄的操作。聽起來,這需要很長時間才能完成。 - 完成後,
rsync
再次運行以捕獲第一次 rsync 期間修改的所有檔案。 - 繼續定期
rsync
運行,直到您想要執行轉換為止。這只是為了保持需要傳輸的資料量較低。 - 發生中斷並停止對舊伺服器的所有寫入。
- 最後執行一次
rsync
- 在新伺服器上啟動服務
答案2
如果此目錄結構是其設備/分區上的大部分數據,請忽略該目錄結構(如果這是導致問題的原因)。
相反,卸載裝置(或重新掛載為唯讀)並使用dd(1)
netcat 將檔案系統區塊複製到新主機上相同大小的分割區。
如果您想要的層次結構之外存在無關數據,請在遷移後將其刪除。
如果主機之間的網路可能成為瓶頸,您也可以考慮拉出磁碟機並將其插入新主機。
答案3
對於一次性副本,如果您可以將來源和目標安裝在同一系統上,則可以執行以下操作:
find [source top dir] | cpio -dump [target mountpoint]
它將複製並保留文件屬性。 cpio工具中也應該有壓縮參數。