Yabsnap 是一个为 Arch 编写的、用于 Btrfs 分区的定时快照管理器。
安装
安装 yabsnapAUR 软件包,开发版本可以通过 yabsnap-gitAUR 安装。
配置
运行以下命令创建一个基础配置文件:
# yabsnap create-config configname
此命令会在 /etc/yabsnap/configs/configname.conf
生成配置文件。编辑该文件并设置以下内容:
-
source
- 子卷挂载点。例如/home
。 -
dest_prefix
- 快照名称的完整路径及前缀。例如,/.snapshot/@home-
可能会创建如下格式的备份快照:/.snapshot/@home-20230525120000
。
您还可以编辑其他参数,以指定何时触发和清理备份。
主要命令
查看快照
要查看现有的快照,运行:
$ yabsnap list
创建快照
要为所有配置创建快照,运行:
# yabsnap create --comment 'COMMENT'
您也可以为特定的已挂载子卷创建, Yabsnap 会自动找到相应的配置。运行:
# yabsnap --source '/home' create --comment 'COMMENT'
清理或删除快照
自动清理
Yabsnap 会根据 /etc/yabsnap/configs/*.conf
中的配置自动删除快照。
删除快照
您也可以手动删除快照,使用以下命令:
指定完整路径以删除特定快照:
# yabsnap delete /.snapshots/@home-20230525120000
指定时间戳可删除所有匹配的同时拍摄的快照:
# yabsnap delete 20230525120000
创建回滚
回滚要求:使用 subvol 而不是 subvolid 挂载
建议使用 subvol 而不是 subvolid 来挂载所有卷。
例如下列 fstab 条目:
UUID=[YOUR_UUID] / btrfs rw,noatime,ssd,space_cache=v2,compress=zstd,subvol=/@ 0 0
注意: 使用的符号是
subvol=/@
。不要 使用 subvolid=
。这样做的原因是回滚机制不会修改您的 fstab 文件,它只会确保正确的快照挂载在相应的位置。
回滚操作
回滚命令通常是安全的,直到执行其生成的脚本。
此命令将生成一个回滚脚本:
请将时间戳更改为现有的某个快照:
$ yabsnap rollback-gen 20230525081049 | tee ~/rollback.sh
执行脚本将真正触发回滚。建议在回滚之前先检查生成的命令行。
检查完生成的回滚脚本后,可以将其设为可执行,然后运行:
# ~/rollback.sh
此操作将对指定时间戳拍摄的所有快照执行回滚。
与 Snapper 的比较
Yabsnap 的创建是为了克服 Snapper 的某些不足。具体而言,它可以做一些 Snapper 难以或无法完成的任务(截至撰写本文时):
- 自定义备份目的路径 (issue),
- 对所有已配置的快照进行回滚(而不仅仅是默认子卷)
- 集成了 pacman hook 支持。