在分區之間複製大量資料的最佳方法

在分區之間複製大量資料的最佳方法

我希望在 HP-UX 伺服器的 2 lv 之間傳輸資料。我有幾個傳輸要做,其中一些主要是二進位(Oracle 表空間...),其他一些是更多文字檔案(日誌...)。卷的已使用資料大小在 100Gb 到 1Tb 之間。另外,我會將其中一些分割區的區塊大小從 1K 改為 8K...

我正在尋找的東西:

  • 保證資料完整性
  • 最快的資料傳輸速度
  • 保留檔案所有權和權限

現在,我考慮過 dd、cp 和 rsync,但我不確定最好的使用方法以及使用它們的最佳方法...

答案1

你不想使用 dd.這是針對 1 個檔案或串流的工作,而不是針對整個檔案系統。

rsync 旨在執行您想要的操作,但正如之前的海報所述,正如我的測試所示,它不是最快的。那是因為它是為了做這樣的事情:“好吧,我正在查看文件 A。文件 A 在目標上嗎?如果是,它是更新的、舊的還是相同的?”等等。

為了完成您想做的事情,我發現 tar 副本快速、簡單且可靠。 Tar 知道硬連結。 Tar 了解設備。 Tar 幾乎可以處理您在檔案系統中遇到的任何情況(除了非常長的路徑,並且,如果您不使用 Gnu tar,您可能需要小心在路徑名開頭加上 / )。

無論如何,在過去 20 年裡,我透過這樣做獲得了 99.98% 的成功:

cd /my/source; tar cf - subdirectory | (cd /destination/path; tar xf -)

....您要複製的子目錄將顯示在 /destination/path 中。

如果您想查看進度,可以在該字串的後半部使用“xvf”而不是“xf”。

....我的 0.02% 失敗來自於非常長的檔案路徑...:-(

Tar 不會保證文件的完整性。也就是說,只要您沒有看到任何錯誤訊息,我發現它非常可靠。它將正確保留權限和所有權。

但!您的帖子特別提到了文件完整性,對於多年前我的回答中沒有包含解決方案,我深表歉意...

tar 之後,我就簡單地這麼做了。假裝我已經做了一個

cd /path/to/source/dir; tar cf - * | (cd /path/to/dest/dir; tar xf -)

現在,您的文件保證可以這樣完成:

find * -exec md5sum {} /path/to/dest/dir/{} \; > /path/to/dest/dir/md5-manifest.txt

完成後,您可以查看清單文件,或編寫 awk 腳本(留給使用者練習)來比較 find/md5sum 命令的兩行輸出。

答案2

看一下這個帖子。一些答案建議使用tar.其他人建議使用rsync.他們正在考慮在兩台機器之間複製資料。您的問題類似,但您需要在本地複製文件,而不是透過網路複製。

答案3

我建議使用rsync,因為它的功能可以專門解決您的大多數問題。如果您使用適當的選項(例如-a選項),那麼所有檔案所有權、權限和時間都會保留。此外,rsync自動使用校驗和來確保所有傳輸的檔案完好無損地到達目的地,從而保證資料完整性(假設運行成功)。

唯一的一點是rsync 可能速度不是最佳的,特別是與像 之類的輕量級替代方案相比cp,但我懷疑您會注意到很大的差異,除非您的處理能力非常低。

答案4

您基本上有三個選擇:

  1. 複製整個分區/區塊設備
  2. 轉儲整個檔案系統
  3. 複製數據裡面檔案系統

根據您必須備份的內容以及您想要的結果,選擇三個選項之一。對於您的具體情況,我認為選項 n.1 (區塊裝置複製)加上解救是要走的路。無論如何,讓我們看看可用選項的集合。

案例一:分區複製
PRO:複製整個區塊設備,您確信留下了註解。
缺點:使用區塊設備不如使用檔​​案方便,選擇錯誤的區塊裝置或選項可能會破壞您的資料。

如果您想擁有整個區塊開發的二進位副本,則必須使用 dd 或類似工具。其他非常有用的工具是dcfldd(一個哈希就緒的 dd 分叉)和解救(一個更先進的類似 dd 的工具)。

案例 2:檔案系統轉儲
PRO:複製整個檔案系統,您確信其中的所有資料和元資料都已備份。
缺點:如果要備份多個檔案系統,則必須執行多次傳遞(一次用於檔案系統)
處理檔案系統的有用工具是FS存檔。此外,許多檔案系統都整合了實用程序,用於以有效的方式轉儲其內容(例如:XFS 有 xfsdump,Ext2/3/4 使用 dumpe2fs 等)。

情況3:複製檔案系統內的數據
PRO:從檔案系統內部複製數據,您可以非常具體地選擇要備份的內容。這確保了快速的備份/恢復時間和較小的備份映像。
缺點:您必須完全知道要備份什麼以及如何備份。應特別注意重要的元資料(例如:所有者、權限、ACL、EA...)
同步是你在這裡最好的朋友。快照rdiff 備份是建立在 rsync/librsync 之上的絕佳工具。柏油是任何 Unix 系統管理員的瑞士刀。

相關內容