首页/数据/备份与容灾速查/Snapper 快照管理

Snapper 快照管理

面向 Btrfs(以及部分 LVM 场景)的快照管理工具:按配置创建时间线快照,支持列出、对比与回滚,是 openSUSE 系发行版的默认方案之一。

备份与容灾速查数据更新于 2026-10-13

Snapper 是什么

Snapper 是快照管理前端,不是快照引擎本身:它调用底层文件系统或存储栈的快照能力,在 Btrfs 与精简置备的 LVM 上按配置创建、列出、对比与回滚快照。它同时负责时间线快照的保留清理规则,是 openSUSE 与 SLES 的默认集成方案,其他发行版也可以单独安装使用。

基本信息

适用平台openSUSE/SLES 默认集成,Btrfs 或精简 LVM 场景可单独部署
配置位置/etc/snapper/configs/ 下每个配置一份文件
引用方式snapper -c <配置名> <子命令>,默认配置名为 root
核心能力时间线快照、变更对比、单文件回滚、整子卷回滚
定时驱动由 systemd 定时器承担快照与清理任务
权限要求查看需普通权限,创建与回滚需 root

典型使用场景

  • 系统或内核升级前打一份手动快照,升级失败可整体回退
  • 对比两次快照的差异,定位「到底改了什么文件」
  • 误删或改坏某个配置文件后,从快照恢复单个文件
  • 给 /home 等独立分区单独定义保留策略,与系统盘分开管理
  • 控制快照数量与占用:按时间线规则自动清理历史快照

创建与管理

创建与管理
snapper -c root list                      # 列出快照:编号、类型、时间、描述
snapper -c root create -d "before-upgrade" # 升级前打手动快照并标注用途
snapper -c root status 1..2                # 对比两个快照的差异
snapper -c root undochange 1..0 /etc/fstab # 只把某个文件恢复成快照 1 的版本
snapper -c root rollback 1                 # 按快照回滚整个子卷(需谨慎)
snapper -c root list --columns number,type,date,used-space  # 关注占用情况

list 输出逐列读法

列含义正常/异常
编号快照编号,对比与回滚都按它引用0 通常代表当前挂载的子卷
类型single 手动、pre/post 脚本成对创建、timeline 定时成对快照缺一半说明脚本中途退出
日期时间快照创建时间点与操作时间明显不符说明选到了旧快照
已用空间该快照的独占占用持续增长说明清理策略没生效
清理算法时间线保留规则(按数量或按窗口)显示为空表示不参与自动清理
快照只覆盖配置指向的那个子卷:/home、/var/log、/srv 等独立挂载点默认不在 root 配置范围内,需要单独建配置,否则「整体回滚」后这些目录里的改动不会被一起还原。
回滚是覆盖性动作,会丢弃目标子卷当前的状态。执行前先手动打一份快照或把关键文件另存一份,确认回滚点选对再做。
Btrfs 快照与被快照子卷必须在同一文件系统内,跨文件系统无法建立快照关系;这也是规划分区时要把系统与数据分开考虑的原因。

易错点

  • 保留数量与清理策略配置不当:快照不断累积吃掉根分区空间,直到系统写不进文件
  • 把文件系统快照当应用一致性备份:数据库、虚拟机镜像在快照瞬间可能处于不一致状态
  • 回滚整卷前未确认当前数据:回滚后丢失的改动没有第二次机会
  • 跨发行版迁移时搬运 /etc/snapper/configs:快照编号在目标机上并不存在,必须按新环境重建配置

数据来源与参考

  • Snapper 官方文档(openSUSE 项目)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌