從硬碟到硬碟的完整 DD 副本
原始問題:
如果我有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
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
.