![如何在执行 dist 升级之前创建磁盘的完整备份以回退?](https://linux22.com/image/223828/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%89%A7%E8%A1%8C%20dist%20%E5%8D%87%E7%BA%A7%E4%B9%8B%E5%89%8D%E5%88%9B%E5%BB%BA%E7%A3%81%E7%9B%98%E7%9A%84%E5%AE%8C%E6%95%B4%E5%A4%87%E4%BB%BD%E4%BB%A5%E5%9B%9E%E9%80%80%EF%BC%9F.png)
我正在准备一个dist-upgrade
.在执行此操作之前,我想对整个磁盘进行备份,以便即使升级失败我也可以回退到备份。我有两块SSD,/dev/nvme0n1
一块是生产的,有500G,另/dev/nvme0n2
一块用作备份,有1T,是空的。
首先,我打开gnome-disk-utility
整个文件并将其格式化/dev/nvme0n2
为ext4
.然后我打开GUI,向“要备份的文件夹”deja-dup
添加一个条目,选择作为目标。我选择了一个加密密码,然后运行了该工具。我运行它并开始工作。花费的时间比我预期的要长得多。当我回到家时,事情还没有结束。整个过程大概持续了10个小时左右。/
/dev/nvme0n2
完成后,我得到了一大堆未备份的文件列表。其中许多文件要么是缺乏权限的文件,要么是在备份运行时被修改的临时文件。由于/boot/efi
是被排除的文件夹之一,我可能无法从备份启动。
我意识到,为了进行完整的备份,我可能必须从实时 USB 启动并从那里运行备份实用程序,以便在运行时源磁盘中的文件不会被修改。是否有命令行工具可以将/
或整个磁盘复制到另一个磁盘?我不想再等半天才意识到我一开始就没有做得好。获得原始磁盘的完整副本后,GRUB
如果我的主磁盘在升级失败后无法启动,是否会自动回退到该副本?如果没有,我应该如何配置它以便可以从启动菜单启动到辅助驱动器?/dev/nvme0n1
是 LUKS 加密的。
答案1
正如您所说:实时 USB(例如 systemrescuecd)是最佳选择。
假设从实时 USB 启动时,设备名称仍然相同,我会执行以下操作(过去已经做过)。
mount /dev/nvme0n2 /mnt
dd if=/dev/nvme0n1 of=/mnt/original.img bs=4096
由于这会创建整个磁盘的逐字副本,因此无论是否加密都无关紧要。如果您的机器有非常糟糕的 CPU,您可以通过将行更改dd
为来获得一些性能:
dd if=/dev/nvme0n1 bs=4096 | gzip > /mnt/original.img.gz