1236 字
6 分钟
快照和系统维护

主目录:返回主目录#

上一节:安装桌面环境前的准备#

snapper#

opensuse开发的快照软件。

  1. 安装

    sudo pacman -S snapper btrfs-assistant grub-btrfs inotify-tools
  2. 重启电脑用新的initramfs进入系统

    reboot
  3. 激活快照启动项服务

    sudo systemctl enable --now grub-btrfsd
  4. 创建快照配置

    sudo snapper -c root create-config /
    sudo snapper -c home create-config /home
  5. 设置合理的快照策略

    • 获取当前设置

      sudo snapper -c root get-config
    • 修改设置

      可以使用set-config选项,但是一个个设置太麻烦了,建议直接编辑文件

      sudo vim /etc/snapper/configs/root

      ALLOW_GROUPS="wheel"允许wheel组的用户无须sudo就可以操作快照

      NUMBER_LIMIT="10" 设置最多保存10个快照,超出后会按照时间顺序删除旧快照。

      TIME_LIMIT_HOURLY="3"每隔一小时创建的快照保存3个。

      TIME_LIMIT_DAILY="1"每日快照保存1个。

      其他的TIME_LIMIT数量都设置为0。这样就仅保存三个小时前的状态和昨天的状态。

      接着对home的快照配置进行一样的修改

      sudo vim /etc/snapper/configs/home
  6. 开启按时间自动创建快照和自动清理

    sudo systemctl enable --now snapper-timeline.timer
    sudo systemctl enable --now snapper-cleanup.timer
  7. 创建快照

    分别创建home和root的快照。

    snapper -c root create -d "before desktop"
    snapper -c home create -d "before desktop"

    create创建快照,-d (description)添加自定义描述。

  8. 生成grub菜单入口

    要至少运行一次grub-mkconfig生成grub菜单的快照启动项入口:

    sudo grub-mkconfig -o /boot/grub/grub.cfg

reboot重启可以看到快照启动项。

回档方法#

  • btrfs-assistant命令行(推荐)

    1. 切换至root

      以普通用户sudo运行可能会出现环境问题,建议切换到root。

      su -
    2. 确认要使用的快照的snapper序号

      snapper -c root list

      可以使用grep筛选快照

      snapper -c root list | grep "Before"

      假设我要用的快照的sanpper序号是11

    3. 用snapper序号找到对应的btrfs-assistant序号

      btrfs-assistant -l

      假设查询到的btrfs-assistant序号1

    4. 回档

      btrfs-assistant -r 1
  • 从grub菜单的快照启动项进入系统

    无法正常进入系统时使用该方法。用btrfs-assistant回档,GUI或者命令行都可以。记得用root身份登录。

  • snapper命令行

    arch的子卷布局不支持snapper rollback命令,只能使用undochange命令回档。

    1. 列出可用快照

      snapper -c root list

      找到自己想使用的快照的数字序号

    2. undochange回档

      sudo snapper -c root undochange 1..0

      这里的1..01是你要使用的快照的序号,0代表当前状态。

      这条命令会对比两者的区别,对当前状态进行修改,无须重启,重新登录即可生效。

      ⚠️注意:官方文档不建议用undochange回档root。

遇到异常#

  • 从快照启动项进入系统后snapper list没能列出快照

    因为现在处在快照子卷里而不是原本的@子卷里。之前创建的快照都在@子卷里,挂载之后才能读取到。

    1. 确认根分区设备名

      lsblk -p

      或者

      findmnt /
    2. 挂载根

      mount -t btrfs /dev/nvme0n1p2 /mnt

      此时/mnt对应的是/cd进入/mnt会看到系统的@。也可以选择加上-o subvol=/@挂载/@而不是/,这种情况下/mnt对应的是@

    3. 指定根进行读取

      我们的子卷存放在@里面,列出快照时指定读取@

      snapper --no-dbus --root /mnt/@ -c root list

      --root选项指定根,此选项只能在--no-dbus下生效。

      可以使用grep筛选自己需要的快照:

      snapper --no-dbus --root /mnt/@ -c root list | grep "Before Desktop Environments"

      记住快照序号,使用btrfs-assistant的命令行工具回档即可,方法上面已经介绍了。

  • 如果无法从快照启动项进入系统

    很大概率是因为快照是只读的导致显示管理器无法正常运行,你的启动日志会卡在Graphiccal ....

    • 解决方法:切换到别的tty用命令行恢复

      Ctrl+Alt+f2~f8切换到非图形界面的tty,用命令行进行恢复。恢复完成后可以把显示管理器换掉,已知sddm会出现此问题而plasmalogin不会。

系统维护#

文件系统维护#

定期运行

sudo btrfs scrub start -B /
sudo btrfs scrub start -B /home

整理 btrfs 文件系统

系统更新#

一周一更新(一般把更新放在周末),更新前先查新闻。

更新前记得创建快照,也别忘了定期清理快照。

snapper -c [root/home] list | grep "before"
snapper -c [root/home] delete [id]

也可以用btrfs-assistant的GUI。

接下来进行系统更新,首先检查更新

checkupdates

如果更新中有关于 keyring 的更新,更新系统前最好先同步一下。

sudo pacman -Sy [needed]-keyring
sudo pacman -Syu
yay -Syu

如果没有,就正常更新

sudo pacman -Syu
yay -Syu

然后 reboot 重启电脑(虽然一般可以不重启,最好还是重启一下)。

更新完成后清理缓存

yay -Scc

如果发现重启后系统语言变成了英文,可以

sudo locale-gen

然后退出niri,重新登录当前用户就可以了。

下一节:安装Niri#

快照和系统维护
https://laplacan.icu/posts/archlinux-guide/snapper/
作者
LapLacan
发布于
2026-05-27
许可协议
CC BY-NC-SA 4.0