我正在启动一个活动磁盘Ubuntu,我想将我的整个 SSD(sdb)
与所有 3 个分区备份到外部硬盘上(sdb1, sdb2, sdb3)
的映像文件中。
本指南建议使用以下命令:
dd if=/dev/sdX conv=sync,noerror bs=64K | gzip -c > /path/to/backup.img.gz
我想稍后使用该图像将其转换
qemu
为VHD
或VMDK
在虚拟机上启动 Ubuntu 系统,因此我不确定.gz
那里的压缩。.img
该命令创建的文件格式是什么?是.iso
吗?为什么命令有
conv
?我不想要任何转换,我想要原始克隆到图像。我还注意到该
dd
命令甚至没有of=
一部分。bs=128k
比提高速度吗bs=64k
?
因此,据我所知,我认为满足我需求的正确命令是:
dd if=/dev/sdb bs=64k of=/dev/sdd1/image.img
注意:sdd1
是我外接硬盘的唯一分区。
如果您希望它用于虚拟机,您不希望它被压缩。而且您可能也不是真的想要原始图像,而是 p2v(物理到虚拟)转换。对于 VirtualBox,你可以例如做
这将为您创建一个有效的驱动器 vboximage。
ISO 指的是 ISO9660 文件系统。如果您对整个硬盘进行映像,它将是一个硬盘映像,包括引导扇区和分区表。如果您对单个分区进行映像,则格式本质上将是该分区具有的任何格式。
conv
指定参数,它可以做一些转换。在这种情况下,它告诉dd
使用同步 I/O,而不是在错误时中止。在手册页中输入man dd
并/sync
Enter搜索同步dd
除非重定向,否则输出到标准输出。在这种情况下,标准输出通过管道传输到gzip
,这将压缩文件并写入/path/to/backup.img.gz
.大概。最终的答案是测试它,例如用
time dd if=/dev/sda of=/dev/zero bs=64k count=10000
,并用不同的尺寸重复。的手册页
dd
并不含糊。你只是不理解所有的概念。您不应该为您的目的使用任何转换选项。把它们放在外面。
你不需要压缩来达到你的目的。无论如何,您只需要在之后立即提取图像。
第一个命令没有
of
参数,因为数据通过管道传输到不同的命令。因此dd
生成一些数据,然后将这些数据推送到gzip
执行压缩的地方,然后将结果写入指定的位置。要了解有关管道的更多信息,只需谷歌“Linux 管道”。它们真的很有用。但是,您不需要任何用于您的目的。的输出没有特定的格式
dd
。dd
只是复制数据。它获取在其输入位置找到的任何内容并将其复制到其输出位置。通常,使用文件扩展名“.img”。然而,因为dd
副本可以是任何东西,所以在某些情况下使用更具体的东西,如“.iso”是有用的。在现代计算机上,块大小(通过 指定
bs
)甚至可能更大。如果您使用的是多年来制造的任何计算机,请直接使用bs=4M
或类似的东西。如果它在正确的范围内,摆弄它不会有太大变化。要备份您的磁盘,您可以使用以下命令:
请注意,您需要 root 权限才能直接从硬盘驱动器的设备文件中读取。
但请确保您
of
不要开始,/dev
除非您确切知道自己在做什么!这样做可能会擦除整个磁盘!它不应该指向您希望图像所在的设备的位置,而是指向它的安装位置。这些路径通常以/media
或开头/mnt
。