我想用于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
来算出sdX
和sdY
。
小心使用 dd 命令。它可能会不可逆转地删除您的操作系统和所有数据。
dd 没有详细选项,您可能希望使用管道数据监视器查看 dd 的进度光伏发电。确保您已安装 pv(适用于 Debian 或 Ubuntu)
sudo apt-get install pv
pv /dev/sdX | dd of=/path/backup_sdX.img
它可能需要sudo
beforepv
和dd
命令。如果您可以从 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
,您可能会想要尝试更具体的命令,例如clonezilla
、partclone
或partimage
。
第二种:复制配置
只需克隆操作系统所需的文件并进行配置即可。这是克隆系统的更高级的方法。
gparted
使用parted
或任何其他程序在目标硬盘驱动器上创建分区- 挂载所有需要的分区
rsync
使用它可以通过 SSH 或本地 DHCP 网络传输文件- 更改/etc/fstab
- 安装或更新 grub 或配置 uefi (如果您使用它)
chroot
可以找到有关如何执行此操作的良好指南这里。