我的 Linux 时光机——Snapper系统级自动备份工具

生活在 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 配置前创建它。

界面操作

《我的 Linux 时光机——Snapper系统级自动备份工具》 新建一个快照配置

全系统备份,直接设置根目录即可。

《我的 Linux 时光机——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 <清理算法>
    原文作者:左蓝
    原文地址: https://www.jianshu.com/p/df9c870fe820
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞