Disk-Image

使用 DD 進行磁碟複製

  • July 26, 2021

關於磁碟複製工具有很多問題dd,至少有人提出過一次。我已經考慮過使用dd自己,主要是因為易於使用,而且它在幾乎所有可引導的 Linux 發行版上都很容易獲得。

dd複製磁碟的最佳方法是什麼?我做了一個快速的Google搜尋,第一個結果是一個明顯的失敗嘗試。使用後有什麼我需要做的嗎dd,即有什麼不能閱讀的內容dd嗎?

dd 無疑是最好的複製工具,只需使用以下命令即可創建 100% 副本。我從來沒有遇到過任何問題。

dd if=/dev/sda of=/dev/sdb bs=32M

請注意,在複製每個字節時,您不應在正在使用的驅動器或分區上使用它。特別是像數據庫這樣的應用程序不能很好地處理這個問題,你最終可能會得到損壞的數據。

為了節省空間,您可以使用 gzip 壓縮 dd 生成的數據,例如:

dd if=/dev/hdb | gzip -c  > /image.img.gz

您可以使用以下方法恢復磁碟:

gunzip -c /image.img.gz | dd of=/dev/hdb

為了節省更多空間,請事先對您要複製的驅動器/分區進行碎片整理(如果合適),然後將所有剩餘的未使用空間清零,使 gzip 更容易壓縮:

mkdir /mnt/hdb
mount /dev/hdb /mnt/hdb
dd if=/dev/zero of=/mnt/hdb/zero

稍等一下, dd 最終將失敗並顯示“磁碟已滿”消息,然後:

rm /mnt/hdb/zero
umount /mnt/hdb
dd if=/dev/hdb | gzip -c  > /image.img.gz

此外,您可以通過使用 kill 命令向其發送信號來讓 dd 程序在後台執行以報告狀態,例如:

dd if=/dev/hdb of=/image.img &
kill -SIGUSR1 1234

檢查您的系統 - 上述命令適用於 Linux、OSX 和 BSD dd 命令,它們接受的信號不同(OSX 使用SIGINFO- 您可以按Ctrl+T報告狀態)。

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