系统备份
系统备份是 备份操作系统、文件和系统特定的有用/必要数据的过程。[它] 主要确保不仅系统中的用户数据被保存,而且系统的状态或运行状况也被保存。这有助于将系统恢复到上次保存的状态以及所有选定的备份数据。
[1]
使用 Btrfs 快照
参见 Btrfs#快照, #快照和_/boot_分区, 和 Snapper。
使用 LVM 快照
参见 LVM#快照, 使用 LVM 创建根文件系统快照, 和 #快照和_/boot_分区。
使用 rsync
参见 rsync#作为备份工具。
使用 tar
参见 使用 tar 进行完整系统备份。
使用 SquashFS
可启动备份
在文件系统损坏或更新破坏系统的情况下,拥有可启动备份可能很有用。备份也可以用作更新的测试平台,启用 testing 仓库等。如果您将系统转移到不同的分区或驱动器,并且想要启动它,那么过程就像更新备份的 /etc/fstab
和引导加载程序的配置文件一样简单。
本节假设您已将系统备份到另一个驱动器或分区,您当前的引导加载程序工作正常,并且您也想从备份启动。
更新 fstab
无需重启,通过注释掉或删除任何现有条目来编辑备份的 fstab。为包含备份的分区添加一个条目,如这里的示例所示
/dev/sdaX / ext4 defaults 0 1
记住使用正确的设备名称和文件系统类型。
更新引导加载程序的配置文件
对于 Syslinux,您需要做的就是复制当前条目,除了指向不同的驱动器或分区。
syslinux.cfg
,您还可以在启动期间临时编辑菜单。当菜单出现时,按下 Tab
键并更改相关条目。分区从一开始计数,驱动器从零开始计数。对于 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 认为可以启动的分区的 UUID,请使用 grep
# grep UUID= /boot/grub/grub.cfg
首次启动
重启计算机并在引导加载程序中选择正确的条目。这将首次加载系统。所有外围设备都应被检测到,并且 /
中的空文件夹将被填充。
现在您可以重新编辑 /etc/fstab
以添加先前删除的分区和挂载点。
快照和 /boot 分区
如果您的文件系统支持快照(例如,LVM 或 Btrfs),这些快照很可能排除 /boot
分区或 ESP。
您可以使用 pacman hook 在内核更新时自动将 boot 分区复制到 root 分区 (确保 hook 文件归 root 所有)
/etc/pacman.d/hooks/55-bootbackup_pre.hook
[Trigger] Operation = Upgrade Operation = Install Operation = Remove Type = Path Target = usr/lib/modules/*/vmlinuz [Action] Depends = rsync Description = Backing up pre /boot... When = PreTransaction Exec = /usr/bin/bash -c 'rsync -a --mkpath --delete /boot/ "/.bootbackup/$(date +%Y_%m_%d_%H.%M.%S)_pre"/'
/etc/pacman.d/hooks/95-bootbackup_post.hook
[Trigger] Operation = Upgrade Operation = Install Operation = Remove Type = Path Target = usr/lib/modules/*/vmlinuz [Action] Depends = rsync Description = Backing up post /boot... When = PostTransaction Exec = /usr/bin/bash -c 'rsync -a --mkpath --delete /boot/ "/.bootbackup/$(date +%Y_%m_%d_%H.%M.%S)_post"/'