Hard-Disk

從硬碟到硬碟的完整 DD 副本

  • January 19, 2021

原始問題:

如果我有2 個具有以下特徵的相同硬碟:

  • SATA 6.0 Gb/秒
  • 5400轉
  • 3TB

完整的 dd 副本需要多長時間才能完成?

到目前為止,它已經執行了 5 個小時,並且仍在執行……

我使用的是 Linux Ubuntu 12.04 64bit,我使用的命令是:

dd if=/dev/sdb of=/dev/sdc

更新:1

我現在可以看到進度,複製 430GB 已經用了 6 個多小時。硬碟是3TB…

沒有更快的方法嗎?


更新:2

這似乎比以前好多了(感謝Groxxda建議):

sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K

3TB 的 ETA 大約需要 9 小時,而在 6 小時後達到 430GB 之前,所以我猜使用前面的命令大約需要 36 小時。

dd在過去人們使用磁帶(當塊大小很重要)以及更簡單的工具(例如cat可能不是二進制安全的)時很有用。

如今,dd if=/dev/sdb of=/dev/sdc這是一種複雜、容易出錯、緩慢的寫作方式cat /dev/sdb >/dev/sdc。雖然dd對於一些相對罕見的任務仍然有用,但它的用處遠不如提到它的教程數量讓你相信。沒有魔力dd,魔力全在/dev/sdb

您的新命令sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K又是不必要的緩慢和復雜。數據一次讀取 128kB(這比dd預設的 512B 好,但不如更大的值)。然後它在被寫入之前通過兩個管道。

使用更簡單、更快速的cat命令。(在我幾年前在 Linux 下進行的一些基準測試cat中,它比cp不同磁碟之間的複制cp要快,並且比dd任何塊大小都快;dd當複製到同一個磁碟上時,塊大小較大時稍微快一些。)

cat /dev/sdb >/dev/sdc

如果要在 中執行此命令sudo,則需要以 root 身份進行重定向:

sudo sh -c 'cat /dev/sdb >/dev/sdc'

如果您想要一份進度報告,因為您使用的是 Linux,您可以通過記錄cat程序的 PID(例如 1234)並查看其輸入(或輸出)文件描述符的位置來輕鬆獲得一份。

# cat /proc/1234/fdinfo/0
pos:    64155648 
flags:  0100000

如果您想要進度報告並且您的 unix 變體沒有提供獲取文件描述符位置的簡單方法,您可以安裝和使用pv而不是cat.

引用自:https://unix.stackexchange.com/questions/144172