複製深層嵌套的目錄結構

複製深層嵌套的目錄結構

作為應用程式遷移的一部分,我必須將目錄結構複製到新主機。目錄結構如下:

{10 - ff} / {00 - ff} / {00 - ff}(不包含)/唯一檔名

所以有數百萬個文件。樹的第三層尚未完全填充,並且並非每個第三層目錄中都有一個檔案。

即使是二級資料夾,du 也需要很長時間才能完成。使用 tar | nc需要10天。我可以停電 1 天,但不能停電 10 天。

答案1

用於rsync此。

  1. 在必須切換到使用新伺服器之前,請執行rsync從一台主機到另一台主機的整個目錄的操作。聽起來,這需要很長時間才能完成。
  2. 完成後,rsync再次運行以捕獲第一次 rsync 期間修改的所有檔案。
  3. 繼續定期rsync運行,直到您想要執行轉換為止。這只是為了保持需要傳輸的資料量較低。
  4. 發生中斷並停止對舊伺服器的所有寫入。
  5. 最後執行一次rsync
  6. 在新伺服器上啟動服務

答案2

如果此目錄結構是其設備/分區上的大部分數據,請忽略該目錄結構(如果這是導致問題的原因)。

相反,卸載裝置(或重新掛載為唯讀)並使用dd(1)netcat 將檔案系統區塊複製到新主機上相同大小的分割區。

如果您想要的層次結構之外存在無關數據,請在遷移後將其刪除。

如果主機之間的網路可能成為瓶頸,您也可以考慮拉出磁碟機並將其插入新主機。

答案3

對於一次性副本,如果您可以將來源和目標安裝在同一系統上,則可以執行以下操作:

find [source top dir] | cpio -dump [target mountpoint]

它將複製並保留文件屬性。 cpio工具中也應該有壓縮參數。

相關內容