Dd使用
使用dd
複製多分區、多FS設備的經驗
我有一張光碟,上面有幾個分區,每個分區都有不同類型的文件系統(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
改用(儘管您並沒有真正問過這個問題)。