snapper readme

快照类型

尽管不同的快照本身并无区别,但根据生成快照的不同情形将它们分成以下三类:

  • pre
    修改前的文件系统快照。每一张前快照都有一个对应的post快照。

  • post
    修改后的文件系统快照。每一张后快照都有一个对应的pre快照。

  • single
    独立的快照。目的之一就是为了自动创建每小时快照。此为创建快照时的默认类型。

快照元数据

通过以上快照列表可以看到,每一张快照均由快照本身以及一些元数据组成。创建快照时,需要指定元数据。修改快照意味着只能更改其元数据,快照内容是无法更改的。每一张快照使用的元数据如下:

Type:          快照类型,有关详细信息请参见快照类型,不能更改;
#:             快照的唯一编号,不能更改;
Pre #:         指定相应前快照的编号,仅适用于post,不能更改;
Date:          创建快照的时间戳
User:          创建快照的用户
Cleanup:       清理规则
Description:   快照的说明。
Userdata:      扩展的说明。可使用逗号分隔的“键=值”列表格式指定自定义数据“reason=testing, project=foo”,此字段也可用于将快照标记为重要 (important=yes) 以及列出创建快照的用户(user=tux)。

Snapper自带的默认设置/etc/snapper/config-templates/default说明:

  • FSTYPE
    分区的文件系统类型:btrfs、lvm(ext3)、lvm(ext4)、lvm(xfs),快照类型不可更改。

  • SUBVOLUME
    分区或子卷生成快照的安装点。不可更改。

  • BACKGROUND_COMPARISON
    定义在创建前后快照后是否要在后台对他们进行比较。默认值为 “yes”。

清理算法

Snapper提供有三种清理旧快照的算法。这些算法以每天计划作业方式执行。您可以定义要在 Snapper 配置中保留的不同类型的快照数:

  • number
    当达到某一快照计数时将删除旧快照。

  • timeline
    将删除超过一定时限的旧快照,但保留一定量的每小时、每天、每月和每年快照。

  • empty-pre-post
    将删除无差异的前后快照对。

Snapper通过以下配置选项控制快照的清理规则:

  • TIMELINE_CLEANUP
    定义当快照数量超出 TIMELINE_LIMIT_* 选项指定的数值同时快照超出 TIMELINE_MIN_AGE 中指定的时限时是否自动删除旧快照。有效值:yes、no,默认值为 “yes”。

  • TIMELINE_CREATE
    如果设置为 yes,便会每小时创建一个快照。这是目前唯一一种可以自动创建快照的方式,因此强烈建议将其设置为 yes。有效值:yes、no,默认值为 “yes”。

  • TIMELINE_MIN_AGE
    定义快照在自动删除前必须保留的最小时限(以秒为单位),默认值为 “1800”。

  • TIMELINE_LIMIT_DAILY、TIMELINE_LIMIT_HOURLY、TIMELINE_LIMIT_MONTHLY、 TIMELINE_LIMIT_YEARLY
    按小时、天、月、年保留的快照数量。每一项的默认值均为 “10”。

TIMELINE_CLEANUP=”yes”
TIMELINE_CREATE=”yes”
TIMELINE_LIMIT_DAILY=”10”
TIMELINE_LIMIT_HOURLY=”10”
TIMELINE_LIMIT_MONTHLY=”10”
TIMELINE_LIMIT_YEARLY=”10”
TIMELINE_MIN_AGE=”1800”

每小时:最近创建的十张快照。
每天:保留最近十天内每天创建的首张快照。
每月:保留最近十个月内每月的最后一天创建的首张快照。
每年:保留最后十年内每年的最后一天创建的首张快照。

此示例配置能够实现按小时生成将自动清理的快照。TIMELINE_MIN_AGE和 TIMELINE_LIMIT_* 始终会同时进行评估。在本示例中,快照删除前的最小保留时限设置为 30 分钟(1800 秒)。因为我们会每小时创建一次快照,所以确保了只会保留最近的快照。如果 TIMELINE_LIMIT_DAILY 设置为非零值,则表示还会保留当天的首张快照。

  • NUMBER_CLEANUP
    定义当快照总数超出 NUMBER_LIMIT 中指定的数值,同时快照超出 NUMBER_MIN_AGE 中指定的时限时,是否自动删除旧的快照。有效值:yes、no,默认值为 “yes”。

  • NUMBER_LIMIT
    在 NUMBER_CLEANUP 设置为 yes 时,定义要保留的没有标记为重要的安装快照对和管理快照对的数量。所保留的会是最新的那些快照。默认值为 “50”。

  • NUMBER_LIMIT_IMPORTANT
    在 NUMBER_CLEANUP 设置为 yes 时,定义要保留的标记为重要的快照对数。所保留的会是最新的那些快照。默认值为 “10”。

  • NUMBER_MIN_AGE
    定义快照对在自动删除前必须保留的最小时限(以秒为单位)。默认值为 “1800”,即30分钟。

注: 限制和时限
NUMBER_LIMIT、NUMBER_LIMIT_IMPORTANTNUMBER_MIN_AGE 始终都会评估。只有同时符合全部条件才会删除快照。如果想不考虑时限而始终保留一定数量的快照,则可将 NUMBER_MIN_AGE 设置为 0。另外,如果快照超过一定时限之后不想再保留,可以将 NUMBER_LIMITNUMBER_LIMIT_IMPORTANT 设置为 0。

空快照的处理:

  • EMPTY_PRE_POST_CLEANUP
    如果设置为 yes,系统会删除前后快照相同的快照对。默认值为 “yes”。

  • EMPTY_PRE_POST_MIN_AGE
    定义前后快照相同的快照对在自动删除之前必须保留的最短时限(以秒为单位)。默认值为 “1800”。


常用命令

创建配置文件
snapper -c config_name create-config -f btrfs /mount-point
snapper -c btrfs_config create-config -f btrfs /

创建一个pre快照, -p的含义是创建快照的同时,打印出快照编号:
snapper -c btrfs_config create -t pre -p

创建一个post快照:
snapper -c btrfs_config create -t post --pre-num 1 -p

编号为1和2的快照对比:
snapper -c btrfs_config status 1..2


为快照添加描述和用户数据
创建pre类型的快照并打印快照编号,该快照标记为important,且为其添加描述以方便以后查询:
snapper create --type pre --print-number --description "Before install net-tools"--userdata "important=yes"

创建post类型的快照,其对应的pre快照编号为1,该快照标记为important,且为其添加描述以方便以后查询:
snapper create --type post --pre-number 1 --description "After install net-tools" --userdata "important=yes"

以上操作也可以合并成一个命令:
snapper -c btrfs_config create --command "yum install net-tools"


查看 配置
snapper list-configs

删除配置,CONFIG 应替换为执行 snapper list-configs 命令后所显示的某个配置名称:
snapper -c CONFIG delete-config

修改配置,CONFIG 应替换为执行 snapper list-configs 命令后所显示的某个配置名称。OPTION 和 VALUE 的可能值可参见配置数据:
snapper -c CONFIG set-config OPTION=VALUE


使用snapper list 查看 所有快照及其 编号
snapper -c btrfs_config list

修改 btrfs_cconfig 配置的第 10 张快照的元数据,将清理算法设置为 timeline:
snapper -c btrfs_config modify --cleanup-algorithm "timeline" 10

修改名为 btrfs_cconfig 配置的第 12 张快照的元数据,设置新的说明,并取消设置清理算法:
snapper --config btrfs_config modify --description "daily backup" -cleanup-algorithm "timeline" 120


设置过滤规则
一些文件主要用来保存系统信息,例如/etc/mtab,这类文件不希望被快照操作影响到,Snapper允许通过/etc/snapper/filters/*.txt 指定过滤项,并在快照操作中忽略指定文件或文件夹的变化。
例如我们的btrfs中我们不希望快照跟踪/var、/tmp等,可以添加到filters,这样在以后创建的快照中就看到不到关于/var、/tmp的快照跟踪了。

禁用/启用timeline快照
时间线快照默认会启用,可以直接修改配置文件里的 TIMELINE_CREATE 为 yes/no,也可以通过以下命令启停:
启用
snapper -c btrfs_config set-config "TIMELINE_CREATE=yes"
禁用
snapper -c btrfs_config set-config "TIMELINE_CREATE=no"


恢复文件

要恢复一个或多个文件,请运行
snapper -c CONFIG -v undochange
SNAPSHOT_ID..0 FILENAME1 FILENAME2

如果没有指定文件名,则会恢复所有已更改的文件,可以通过以下命令撤销以上操作,恢复系统状态到快照1:
snapper -c btrfs_config undochange 1..2

删除快照
snapper -c btrfs_config delete 1 2

posted @ 2022-02-14 19:42  Hnoss  阅读(50)  评论(0编辑  收藏  举报