Dd

使用dd複製多分區、多FS設備的經驗

  • March 4, 2013

我有一張光碟,上面有幾個分區,每個分區都有不同類型的文件系統(ext3、ext4 和 NTFS)。我想知道我是否可以使用 將整張光碟複製到一張新的(容量更大的)dd,最好是一次操作。

為了防止不必要的努力,讓我澄清一些事情。我對其他方法不感興趣(我知道正確的方法,第三方軟體不可取)。我對理論答案並不那麼感興趣(“它應該起作用”)。我對其他人嘗試做這種事情的經歷非常感興趣。

我知道真正的正確答案是“試試看”,但我距離有問題的光碟 250 英里。

如果你必須這樣做,而且你必須在一個非常糟糕的地方甚至考慮這樣做……

單獨複製分區是最安全的。例如:

# Install  a temporary ssh key so we don't have to deal with lots of
# password prompts, remember to remove it from authorized_keys later
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa user@host

# Copy everything, you can go have breakfast - and probably lunch -
# while you wait
for partition in /dev/sdb?*
do
   dd if=$partition | ssh user@host "dd of=$(basename $partition).img"
done

等待幾分鐘或幾小時以完成複制,然後開始從磁碟映像恢復。例如,在一個新磁碟上,您可以創建一個新的分區表,其分區大小正確,以保存磁碟映像,然後dd將映像返回到新分區。


複製整個磁碟(例如dd if=/dev/sdb)會使事情變得更複雜,因為你有一個完整的磁碟映像,無論如何你可能不得不以某種方式分割成多個分區。如果您正在考慮dd將整個驅動器直接連接到另一個物理磁碟,請再想一想:有時當系統拒絕承認分區表和新硬碟驅動器之間存在任何關係時,您會迷失方向。

如果您必須一次性複制整個磁碟(您可能不必這樣做,所以不要考慮這一點),然後將其複製到映像文件並用於kpartx處理分區。例如:

dd if=/dev/sdb | ssh user@host "dd of=sdb.img"
# Later, on the recovery host...
kpartx -l sdb.img
kpartx -a sdb.img
# Now you can...
mount -o ro /dev/mapper/loop0p1 /mnt/rescuep1
mount -o ro /dev/mapper/loop0p2 /mnt/rescuep2
# or copy to a new hard drive...
dd if=/dev/mapper/loop0p1 of=/dev/sdc1
dd if=/dev/mapper/loop0p2 of=/dev/sdc2

如果物理磁碟有物理問題,請考慮dd_rescue改用(儘管您並沒有真正問過這個問題)。

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