如何在Linux或者Unix上使用dd制作磁盘镜像

时间:2020-01-09 10:46:00  来源:igfitidea点击:

如何使用dd命令创建磁盘镜像?
如何从活动的Linux CD进行磁盘克隆以进行备份或者恢复?
您可以轻松地使用dd命令制作分区或者完整硬盘驱动器的镜像。

什么是dd镜像?

磁盘克隆不过是创建整个磁盘镜像的简单过程。
这对于复制磁盘,备份,恢复等有用。

dd命令是易于使用的创建此类克隆的工具。

警告:使用dd命令时应格外小心;它可以破坏数据。
记住输入文件(if =)和输出文件(of =)的顺序。

如何克隆整个硬盘

语法为:

dd if=/dev/input/DEVICE-HERE of=/dev/OUTPUT/DEVICE-HERE bs=64K conv=noerror,sync

要将Linux中的/dev/sdc(250G)克隆到/dev/sdd(250G),请执行:

# dd if=/dev/sdc of=/dev/sdd bs=64K conv=noerror,sync

要在FreeBSD中将/dev/ada0(250G)克隆到/dev/adb0(250G),请执行:

# dd if=/dev/ada0 of=/dev/adb0 bs=64K conv=noerror,sync

其中:

  • if =/dev/file:输入设备/文件。
  • of =/dev/file:输出设备/文件。
  • bs = 64k:将块大小设置为64k。您可以使用128k或者任何其他值。
  • conv = noerror:告诉dd继续操作,忽略所有读取错误。
  • sync:如果有任何读取错误,则将输入块添加为零,因此数据偏移保持同步。

如何克隆分区

要将/dev/sdc1克隆到/dev/sdd1,请执行:

# dd if=/dev/sdc1 of=/dev/sdd1 bs=128K conv=noerror,sync

输出示例:

15874+0 records in
15873+0 records out
1040252928 bytes transferred in 3.805977 secs (273320858 bytes/sec)

dd制作磁盘镜像

您可以从实时CD启动。
一旦启动,请确保没有从源硬盘驱动器磁盘挂载任何分区。
您可以将磁盘镜像存储在外部USB磁盘上。
语法如下

dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=64K | gzip -c > /path/to/my-disk.image.gz

在此示例中,为/dev/da0创建磁盘镜像,即克隆/dev/da0并保存在当前目录中:

# dd if=/dev/da0 conv=sync,noerror bs=128K | gzip -c > centos-core-7.gz

上面的命令只是克隆了整个硬盘,包括MBR,引导加载程序,所有分区,UUID和数据。

如何还原系统(dd镜像)

语法为:

# gunzip -c IMAGE.HERE-GZ | dd of=/dev/OUTPUT/DEVICE-HERE

例如:

# gunzip -c centos-core-7.gz | dd of=/dev/da0

提示1:本地磁盘空间不足?使用遥控器

您可以通过ssh发送镜像并将其保存在名为server1.theitroad.local的删除框中:

# dd if=/dev/da0 conv=sync,noerror bs=128K | gzip -c | ssh [email protected] dd of=centos-core-7.gz

提示2:使用dd制作图片时查看进度

您需要按如下方式将GNU dd与coreutils版本8.24一起使用(将status = progress传递给dd):

# dd if=/dev/sdc1 of=/dev/sdd1 bs=128K conv=noerror,sync status=progress