跳转到内容

Yabsnap

来自 Arch Linux 中文维基

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'

清理或删除快照[编辑 | 编辑源代码]

自动清理[编辑 | 编辑源代码]

根据 /etc/yabsnap/configs/*.conf 中的配置,Yabsnap 会自动删除超出上限的旧快照。

删除快照[编辑 | 编辑源代码]

也可以手动删除快照。

指定完整路径以删除特定的快照:

# yabsnap delete /.snapshots/@home-20230525120000

指定时间戳可删除所有匹配的同时拍摄的快照:

# yabsnap delete 20230525120000

回滚[编辑 | 编辑源代码]

回滚注意事项:使用 subvol 而不是 subvolid 挂载[编辑 | 编辑源代码]

建议使用 subvol 而不是 subvolid 来挂载所有的 btrfs 子卷。

例如使用下列 fstab 条目:

UUID=[YOUR_UUID] / btrfs rw,noatime,ssd,space_cache=v2,compress=zstd,subvol=/@ 0 0
注意:使用的挂载选项是 subvol=/@不要 使用 subvolid=

这样做的原因是该回滚机制不会修改您的 fstab 文件,它只会确保正确的快照挂载在相应的位置。(如果使用subvolid,那么会挂载原来的子卷)

回滚操作[编辑 | 编辑源代码]

回滚命令是安全的(因为并未执行任何修改操作),直到执行其生成的脚本。

此命令将生成一个回滚脚本,请将时间戳更改为现有的某个快照:

$ yabsnap rollback-gen 20230525081049 | tee ~/rollback.sh

只有运行该脚本才会执行真正的回滚操作。因此建议在回滚之前先检查生成的命令。

检查完生成的回滚脚本后,将其设为可执行,然后运行:

# ~/rollback.sh

此操作将回滚前述指定时间戳的所有快照。

与 Snapper 的比较[编辑 | 编辑源代码]

Yabsnap 是为了克服 Snapper 的某些不足而创立。具体而言,它可以做一些 Snapper 难以或无法完成的任务(截至撰写本文时):

  • 自定义备份目的路径 (issue)
  • 对所有已配置的快照进行回滚(而不仅仅是默认子卷)
  • 集成了 pacman hook 支持。

参见[编辑 | 编辑源代码]