Linux下使用DD命令

Linux下使用DD命令

我想用于dd将安装在 PI4 MicroSD 64GB 介质上的正在运行的 Linux 操作系统克隆到映像。因为它是 Raspberry PI,所以我无法(轻松)从 USB 记忆棒启动并在 PI4 操作系统未运行的情况下运行作业。如果我使用控制台登录来做这样的工作,我可以稍后恢复而不会出现问题吗?本质上可以dd从正在运行的系统内的终端会话创建主驱动器(/dev/sda)的正确的、可恢复的映像吗?

答案1

有两种通用方法可以将 GNU/Linux 克隆到另一个硬盘驱动器、SD 卡或软盘。第一个是当您克隆整个文件系统及其包含的所有内容时,以及当您复制系统的所有必需文件并将其配置为在其他地方工作时。

第一种:克隆整个文件系统

dd 是克隆整个文件系统的最可靠且老式的方法。如果您想制作包含所有分区的整个磁盘的映像,您只需在终端中执行即可

dd if=/dev/sdX of=/path/backup_sdX.img 

进而

dd if=/path/backup_sdX.img of=/dev/sdY

将您的映像部署到sdY磁盘上。它可能需要sudo. backup_sdX.img 的大小与整个 .img 的大小相同sdX。用lsblk来算出sdXsdY

小心使用 dd 命令。它可能会不可逆转地删除您的操作系统和所有数据。

dd 没有详细选项,您可能希望使用管道数据监视器查看 dd 的进度光伏发电。确保您已安装 pv(适用于 Debian 或 Ubuntu)

sudo apt-get install pv

pv /dev/sdX | dd of=/path/backup_sdX.img

它可能需要sudobeforepvdd命令。如果您可以从 Raspberry PI 到另一台计算机进行 SSH 访问,那么您可以执行以下操作

dd if=/dev/sdX | ssh username@hostname "dd of=/path/backup_sdX.img"

或者

pv /dev/sdX | ssh username@hostname "dd of=/path/backup_sdX.img"

看到进展。主机名可以是另一台机器的本地IP地址。确保您的接收大小有足够的空间,因为 file.img 将与整个 sdX 磁盘的大小相同。

您甚至可以将映像安装到系统中。

sudo mount /path/backup_sdX.img /mnt 

如果您想更改某些内容,这可能会有所帮助。如果由于某种原因它不起作用,请尝试

为什么你可能不喜欢这种方法:

  • 复制磁盘的每个块可能需要很长时间,特别是当该磁盘很大时。
  • sdY应具有比 更大的尺寸sdX
  • sdY将具有相同的分区,sdX并且将简单地调整为 sdX 大小(当然您可以稍后修复该问题,但有丢失数据的风险)。
  • 如果你混淆了,你可能会非常失望sdY

一旦您了解了使用命令的所有优点和缺点dd,您可能会想要尝试更具体的命令,例如clonezillapartclonepartimage


第二种:复制配置

只需克隆操作系统所需的文件并进行配置即可。这是克隆系统的更高级的方法。

  • gparted使用parted或任何其他程序在目标硬盘驱动器上创建分区
  • 挂载所有需要的分区
  • rsync使用它可以通过 SSH 或本地 DHCP 网络传输文件
  • 更改/etc/fstab
  • 安装或更新 grub 或配置 uefi (如果您使用它)chroot

可以找到有关如何执行此操作的良好指南这里

相关内容