System backup (简体中文)

From ArchWiki
翻译状态:本文是 System backup翻译。上次翻译日期:2022-11-17。如果英文版本有所更改,则您可以帮助同步翻译。

系统备份是备份操作系统、文件和特定于系统的有用的/关键的数据的过程。(系统备份)主要确保除了系统中的用户数据,系统的状态或操作条件也已保存。这有助于使用选择的备份数据将系统恢复到之前保存的状态。[1]

使用 Btrfs 快照

详情请看 Btrfs (简体中文)#快照#快照与 /boot 分区Snapper

使用 LVM 快照

详情请看 LVM#SnapshotsCreate root filesystem snapshots with LVM#快照与 /boot 分区

使用 rsync

详情请看 rsync#As a backup utility

使用 tar

详情请看 Full system backup with tar

使用 SquashFS

详情请看 Full system backup with SquashFS

可启动的备份

在文件系统损坏或系统滚挂了的情况下,有一个可启动的备份非常有用。备份还可以启用testing软件仓库,并用于测试更新。在您将系统迁移到不同的分区或驱动器之后,只需更新备份的 /etc/fstab 和引导加载程序的配置文件,就可以从迁移后的系统启动了。

在您在已将系统备份到另一个驱动器或分区,且当前的引导加载程序工作正常的情况下,接下来的操作将指导您如何从备份的系统启动。

更新 fstab

不需要重新启动,可以通过注释掉或删除任何现有条目来编辑备份的 fstab 文件。为包含备份的分区添加一个条目,如下例所示:

/dev/sdaX    /             ext4      defaults                 0   1

记得使用正确的设备名和文件系统类型。

更新引导程序的配置文件

对于 Syslinux,你只需复制当前项目,不过使其指向不同的磁盘或分区。

提示: 除了直接编辑 syslinux.cfg,您也可以在启动的时候临时编辑启动菜单。当显示启动菜单的时候,按 Tab 键来编辑对应的启动项。分区从1数起,而驱动器从0数起。

对于 GRUB,建议你自动重新生成主配置文件。如果你想将 GRUB 文件全新安装到 /boot 以外的位置(例如 /mnt/newroot/boot),使用 --boot-directory 标志。

请注意检查 /boot/grub/grub.cfg 中的启动项,确保其中的 UUID 与新分区相匹配,否则设备将仍然从原系统中启动。您可以通过 lsblk 命令来找到正确的UUID:

$ lsblk -no NAME,UUID /dev/sdXY

/dev/sdXY 是您备份的目标分区 (比如 /dev/sdb3)要列出所有 GRUB 可启动的分区,请使用 grep 命令:

# grep UUID= /boot/grub/grub.cfg

第一次启动

重启计算机并在引导程序中选择正确的项目。系统应该会在第一次启动的时候检测到所有外部设备并填充根目录下的空文件夹。

你现在可以编辑 /etc/fstab,将之前删除的分区和挂载点重新加入。

快照与 /boot 分区

如果你的文件系统支持快照(例如 LVMBtrfs),这些快照将很可能不包含 /boot 分区或 EFI 系统分区

进行内核升级时,您可以用 pacman hook 来把升级后的内核自动复制启动分区到 root 分区(请确保该钩子文件为 root 所有) :

/etc/pacman.d/hooks/95-bootbackup.hook
[Trigger]
Operation = Upgrade
Operation = Install
Operation = Remove
Type = Path
Target = usr/lib/modules/*/vmlinuz

[Action]
Depends = rsync
Description = Backing up /boot...
When = PostTransaction
Exec = /usr/bin/rsync -a --delete /boot /.bootbackup