生活在 Linux 下,折腾肯定是少不了的,所以玩坏的情况也是常有的事情。如果有一台时光机器可以让系统回到某个时间点那就好办了,所以今晚介绍的软件是 Snapper。
Snapper 是一个由 openSUSE 的 Arvin Schnell 开发的工具,用于管理 Btrfs 子卷和 LVM 精简配置 (thin-provisioned) 卷。它可以创建和比较快照,在快照间回滚,并支持自动按时间序列创建快照。
安装
直接用你的包管理器安装 snapper 即可。
如果找不到这个软件就去官网下载:http://snapper.io/
前端界面
如果你需要一个界面工具来管理,那么安装这个:
https://github.com/ricardomv/snapper-gui
在安装界面之前你需要先安装依赖:
sudo apt install python3 libgtksourceview-3.0-1 gir1.2-gtksource-3.0 python3-dbus python3-setuptools
然后安装界面:
$ git clone https://github.com/ricardo-vieira/snapper-gui/
$ cd snapper-gui/
$ sudo python3 setup.py install
安装虽然完成了,不过有一点需要修改一下,Snapper 只有在 root 用户下才能对全系统备份,所以改一下 Snapper GUI 的启动命令以便使用 root 启动(sudo snapper-gui
)。
创建一个备份
在为 btrfs 子卷建立一个 snapper 配置前,这个子卷必须已经存在。否则,你应该在建立 snapper 配置前创建它。
界面操作
全系统备份,直接设置根目录即可。
命令行操作
要为位置为 / 的 btrfs 子卷创建一个新的 snapper 配置文件,并命名为 config:
# sudo snapper -c config create-config /
Snapper 每个小时自动创建一次快照,默认保留最新的 30 个快照,旧的快照会被自动清理。用户手动创建的快照不会被自动清理。
手动创建一个快照:
# sudo snapper create -d "关于本次手动备份的说明"
恢复到指定快照
恢复到某个时间点:
snapper undochange <编号1>..0
删除快照
sudo snapper delete <编号>
完整用法
用法:snapper [--全局选项] <命令> [--命令选项] [命令参数]
全局选项:
--quiet, -q 静默正常输出。
--verbose, -v 显示调试信息。
--utc 以 UTC 显示日期和时间。
--iso 以 ISO 格式显示日期和时间。
--table-style, -t <样式> 表格样式 (整数)。
--config, -c <配置名称> 设置要使用的配置名称。
--no-dbus 不是用 DBus。
--root, -r <路径> 在目标根目录上操作(不用 DBus 时才起作用)。
--version 打印版本号并退出。
列出配置:
snapper list-configs
创建配置:
snapper create-config <子卷>
'create-config' 命令的选项:
--fstype, -f <文件系统类型> 手动设置文件系统类型。
--template, -t <名称> 要使用的配置模板名称。
删除配置:
snapper delete-config
获取配置:
snapper get-config
设置配置:
snapper set-config <配置数据>
列出快照:
snapper list
'list' 命令的选项:
--type, -t <类型> 要列出的快照类型。
--all-configs, -a 列出所有可访问配置中的快照。
创建快照:
snapper create
'create' 命令的选项:
--type, -t <类型> 快照类型。
--pre-number <编号> 相关的前期快照编号。
--print-number, -p 打印所创建快照的编号。
--description, -d <描述> 快照描述。
--cleanup-algorithm, -c <算法> 快照的清理算法。选项:number, timeline, empty-pre-post。
--userdata, -u <用户数据> 快照的用户数据。
--command <命令> 运行命令,创建前期和后期快照。
修订快照:
snapper modify <编号>
'modify' 命令的选项:
--description, -d <描述> 快照描述。
--cleanup-algorithm, -c <算法> 快照的清理算法。选项:number, timeline, empty-pre-post。
--userdata, -u <用户数据> 快照的用户数据。
删除快照:
snapper delete <编号>
“delete”命令的选项:
--sync, -s 删除后同步。
挂载快照:
snapper mount <编号>
卸载快照:
snapper umount <编号>
对比快照:
snapper status <编号1>..<编号2>
'status' 命令的选项:
--output, -o <文件> 保存状态到文件。
对比快照:
snapper diff <编号1>..<编号2> [文件]
“diff”命令的选项:
--input, -i <文件> 读取文件以比较文件的差异。
--diff-cmd <命令> 用于比较文件的命令。
--extensions, -x <选项> 传递到 diff 命令的额外选项。
对比快照的扩展属性:
snapper xadiff <编号1>..<编号2> [文件]
取消更改 (回滚):
snapper undochange <编号1>..<编号2> [文件]
'undochange' 命令的选项:
--input, -i <文件> 读取要回滚的文件。
回滚:
snapper rollback [编号]
'rollback' 命令的选项:
--print-number, -p 打印所创建的第二个快照的编号。
--description, -d <描述> 快照描述。
--cleanup-algorithm, -c <算法> 快照的清理算法。选项:number, timeline, empty-pre-post。
--userdata, -u <用户数据> 快照的用户数据。
Setup quota:
snapper setup-quota
清空快照:
snapper cleanup <清理算法>