介绍
使用 dd,可以轻松备份磁盘的 MBR 和分区表。操作非常简单:dd if=/dev/disk2 of=~/Desktop/disk2_mbr bs=512 count=1
还可以备份整个分区:dd if=/dev/disk2s1 of=~/Desktop/disk2_partition1
反过来也行得通:使用dd if=~/Desktop/disk2_mbr of=/dev/disk3
,可以替换另一个磁盘的 MBR 和分区表(注意,磁盘 3 上的数据丢失)。
然后,要恢复第一个分区,请执行以下操作:dd if=~/Desktop/disk2_partition1 of=/dev/disk3s1
(分别设置 MBR 和分区的意义dd
在于您不需要dd
整个磁盘;如果您的分区很小,速度会更快。)
很好,所有这些 dd 魔法对我来说都很棒。它使从任何系统、任何硬盘进行备份和恢复变得如此简单。
循环设备
虚拟系统图像创建也很好用。
要创建一个新的、空的媒体映像(30 GB),可以执行以下操作:dd if=/dev/zero of=/my-media-image bs=1k count=30240000
然后,将媒体分配给环回设备:losetup /dev/loop0 /my-media-image
要在媒体图像上创建文件系统,请执行以下操作:sudo mkfs -t ext3 -L MYVIRTUALFS -M /media/MYVIRTUALFS -I 128 -m 0 -b 4096 -O sparse_super -T largefile4 /dev/loop0
然后可以安装媒体:sudo mkdir /media/MYVIRTUALFS && mount /dev/loop0 /media/MYVIRTUALFS
问题
我不明白的是,如果我卸载磁盘(sudo umount /media/MYVIRTUALFS
),然后删除环回设备(sudo losetup -d /dev/loop0
),我会认为原始媒体(/my-media-image
)与 dd 克隆完全相同/dev/loop0
显然不是,因为如果我这么做dd if=/my-media-image of=/dev/disk4
(注意,磁盘4 上的数据丢失), disk4 已损坏,无法安装。
为什么?
它使得从 Linux 机器创建虚拟文件系统成为可能,包括分区表、数据等...然后只需将媒体映像(/my-media-image
在我的示例中)复制到另一个系统(在我的例子中是 Macintosh),即可将其部署到真实硬盘上。它甚至可以在具有 GUI 的 Windows 上运行dd
。
我错过了什么?
答案1
正如 killermist 提到的,错误在于我忘记在创建文件系统之前创建分区。问题中的说明是正确的,并且创建了完全有效的磁盘映像,只需在安装循环设备之后、在其上创建文件系统之前创建分区即可。
因此正确的顺序是
losetup....
parted --script /dev/loop0 mktable msdos mkpart primary 2048s 100%
sudo mkfs...