跳至主要内容

Restic --删除备份快照

删除备份快照

所有的备份空间都是有限的,所以restic可以删除旧的快照。这可以通过手动(通过指定要删除的快照ID)或者使用描述要忘记哪些快照的策略来完成。对于所有删除操作,需要依次调用两个命令:forget删除快照并prune实际删除快照从存储库中引用的数据。这可以通过forget命令--prune选项来自动执行,如果快照已被删除,该prune命令会自动运行
建议在修剪后运行restic check,以确保提醒您可能的损坏存储库的内部数据结构。

删除一个快照

该命令snapshots可用于列出存储库中的所有快照,如下所示:
$ restic -r /srv/restic-repo snapshots
enter password for repository:
ID        Date                 Host      Tags  Directory
----------------------------------------------------------------------
40dc1520  2015-05-08 21:38:30  kasimir         /home/user/work
79766175  2015-05-08 21:40:19  kasimir         /home/user/work
bdbd3439  2015-05-08 21:45:17  luigi           /home/art
590c8fc8  2015-05-08 21:47:38  kazik           /srv
9f0bc19e  2015-05-08 21:46:11  luigi           /srv
要删除快照/home/art,请使用该forget 命令并在命令行上指定快照ID:
$ restic -r /srv/restic-repo forget bdbd3439
enter password for repository:
removed snapshot d3f01f63
之后,此快照被删除:
$ restic -r /srv/restic-repo snapshots
enter password for repository:
ID        Date                 Host     Tags  Directory
----------------------------------------------------------------------
40dc1520  2015-05-08 21:38:30  kasimir        /home/user/work
79766175  2015-05-08 21:40:19  kasimir        /home/user/work
590c8fc8  2015-05-08 21:47:38  kazik          /srv
9f0bc19e  2015-05-08 21:46:11  luigi          /srv
但是此快照中的文件引用的数据仍存储在存储库中。要清除未引用的数据, 必须运行prune命令:
$ restic -r /srv/restic-repo prune
enter password for repository:

counting files in repo
building new index for repo
[0:00] 100.00%  22 / 22 files
repository contains 22 packs (8512 blobs) with 100.092 MiB bytes
processed 8512 blobs: 0 duplicate blobs, 0B duplicate
load all snapshots
find data that is still in use for 1 snapshots
[0:00] 100.00%  1 / 1 snapshots
found 8433 of 8512 data blobs still in use
will rewrite 3 packs
creating new index
[0:00] 86.36%  19 / 22 files
saved new index as 544a5084
done
之后版本库更小。
您可以通过forget命令使用--prune开关来自动完成这个两步过程
$ restic forget --keep-last 1 --prune
snapshots for host mopped, directories /home/user/work:

keep 1 snapshots:
ID        Date                 Host        Tags        Directory
----------------------------------------------------------------------
4bba301e  2017-02-21 10:49:18  mopped                  /home/user/work

remove 1 snapshots:
ID        Date                 Host        Tags        Directory
----------------------------------------------------------------------
8c02b94b  2017-02-21 10:48:33  mopped                  /home/user/work

1 snapshots have been removed, running prune
counting files in repo
building new index for repo
[0:00] 100.00%  37 / 37 packs
repository contains 37 packs (5521 blobs) with 151.012 MiB bytes
processed 5521 blobs: 0 duplicate blobs, 0B duplicate
load all snapshots
find data that is still in use for 1 snapshots
[0:00] 100.00%  1 / 1 snapshots
found 5323 of 5521 data blobs still in use, removing 198 blobs
will delete 0 packs and rewrite 27 packs, this frees 22.106 MiB
creating new index
[0:00] 100.00%  30 / 30 packs
saved new index as b49f3e68
done

根据策略删除快照

手动删除快照非常繁琐且容易出错,因此restic允许指定应根据策略自动删除哪些快照。您可以指定要保留的每小时,每日,每周,每月和每年的快照数量,以及任何其他快照。这里最重要的命令行参数是--dry-run指示restic不删除任何东西,而是打印哪些快照将被删除。
forget使用策略运​​行时,restic会加载所有快照的列表,然后按主机名和目录列表对其进行分组。分组选项可以--group-by通过路径和标签使用来设置分组选项该策略然后分别应用于每组快照。这是一项安全功能。--group-by paths,tags
forget命令接受以下参数:
  • --keep-last n从不删除n最近的(最近的)快照
  • --keep-hourly nn在创建快照的最后几个小时内,仅保留每个小时的最后一个快照。
  • --keep-daily n对于n有一个或多个快照的最后几天,只保留当天的最后一天。
  • --keep-weekly n对于n有一个或多个快照的最后几周,只保留那一周的最后一个。
  • --keep-monthly n对于n有一个或多个快照的最后几个月,只保留该月份的最后一个月份。
  • --keep-yearly n对于n有一个或多个快照的最后几年,只保留那一年的最后一个。
  • --keep-tag 保留所有具有由此选项指定的标签的快照(可多次指定)。
  • --keep-within duration保留在最新快照的持续时间内完成的所有快照。duration需要是几年,几个月和几天,例如2y5m7d将保留在最近的快照之前的两年,五个月和七天所做的所有快照。
此外,您可以限制将快照移除到具有特定主机名的--hostname参数或具有该--tag选项的标签 当指定多个标签时,只考虑具有所有标签的快照。例如,以下命令将删除具有该标记的所有快照的最新快照foo
$ restic forget --tag foo --keep-last 1
该命令将删除所有设置foobar标记的快照的除最后一个快照以外的所有快照
$ restic forget --tag foo --tag bar --keep-last 1
只保留标记foo和 bar设置使用的所有快照的最后快照
$ restic forget --tag foo,tag bar --keep-last 1
以上所有--keep-*选项仅计算有快照的小时/天/周/月/年,所以没有快照的选项将被忽略。
出于安全原因,Restic拒绝采取“空洞”政策。例如,如果有人指定--keep-last 0忘记存储库中的所有快照,则restic将响应不会删除快照。要删除所有快照,请使用--keep-last 1forget然后最后手动删除最后的快照ID(通过将ID传递给)。
针对所有匹配的--keep-*计数来评估所有快照2017-09-30(Sun)的单一快照将按每日,每周和每月计算。
我们来举个例子来解释一下:假设你在每个星期天只做了12周的备份。forget --keep-daily 4将保留最后四个星期日的最后四张快照,但删除剩下的。只有对有备份的日子进行计数,忽略没有备份的日子才是安全功能:它可以防止在没有新的快照创建时快速删除许多快照。如果以其他方式实施,forget --keep-daily 4在星期五运行 将删除所有快照!
另一个例子:假设你每天备份做100年。forget --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 75将保留最近的7个每日快照,然后是4个(记住,7天已经包括了一周!)最后一周和11或12个最后一个月(11或12取决于如果5个星期跨过一个月)。最后是75年的快照。所有其他快照都被删除。

评论

此博客中的热门博文

Restic --备份

备份 现在我们准备好备份一些数据。 在特定时间点的目录内容在restic中被称为“快照”。 运行以下命令并再次输入上面选择的存储库密码: $ restic -r /srv/restic-repo --verbose backup ~/work open repository enter password for repository: password is correct lock repository load index files start scan start backup scan finished in 1.837s processed 1.720 GiB in 0:12 Files: 5307 new, 0 changed, 0 unmodified Dirs: 1867 new, 0 changed, 0 unmodified Added: 1.700 GiB snapshot 40dc1520 saved 正如你所看到的,restic创建了该目录的备份并且速度非常快! 40dc1520 在这种情况下 ,刚刚创建的特定快照由一系列十六进制字符标识 。 如果你没有通过这个 --verbose 选项,restic将打印更少的数据(但你仍然会得到一个很好的实时状态显示)。 如果再次运行该命令,restic将会创建另一个数据快照,但这次更快。 这是工作中的重复数据删除! $ restic -r /srv/restic-repo backup --verbose ~/work open repository enter password for repository: password is correct lock repository load index files using parent snapshot d875ae93 start scan start backup scan finished in 1.881s processed 1.720 GiB in 0:03 Files: 0 new, 0 changed, 5307 unmodified Dirs

Restic --使用aws备份案例

例子 用Amazon S3设置restic 前言 本教程将向您展示如何在AWS S3中使用restic。 它将向您展示如何浏览AWS Web界面,创建S3存储桶,创建只能访问此存储桶的用户以及如何将restic连接到此存储桶。 先决条件 您的系统上应该已经有一个 restic 可以运行 的 二进制文件。 此外,您还应该拥有 AWS 账户  。 即使您使用 免费 套餐,您也可能需要提供信用卡详细信息才能进行结算  。 登录到AWS 将浏览器指向  https://console.aws.amazon.com  并使用您的AWS账户登录。 您将看到AWS主页: 通过使用左上角的“服务”按钮,可打开AWS提供的所有服务菜单: 对于本教程,简单存储服务(S3)以及身份和访问管理(IAM)是相关的。 创建桶 首先,必须创建用于存储备份的存储桶。 使用“服务”菜单,导航到S3。 如果您已经有一些S3存储桶,您会在这里看到它们的列表: 点击“创建存储桶”按钮,然后为新存储桶选择一个名称和区域。 为了本教程的目的,该存储桶将被命名  restic-demo 并驻留在法兰克福。 由于存储桶名称空间在所有AWS用户之间共享,因此名称 restic-demo 可能无法提供给您。 要有创意并选择一个独特的存储桶名称。 没有必要配置存储桶的任何特殊属性或权限。 因此,只需完成向导而不做任何进一步的更改: 新创建的 restic-demo 存储桶现在将显示在S3存储桶的列表中: 创建一个用户 使用AWS Web界面的“服务”菜单导航到IAM。 这会将您带到IAM主页。 要创建新用户,请点击左侧的“用户”菜单条目: 如果您之前已经拥有使用IAM的设置用户,您会在这里看到它们的列表。 使用顶部的“添加用户”按钮创建一个新用户: 对于本教程,新用户将被命名 restic-demo-user 。 随意选择最适合您需求的名称。 该用户只能通过该 restic 程序 访问AWS  ,而不能通过Web界面访问。 因此,“访问类型”选择了“编程访问”: 在下一步中,可以将权限分配给新用户。 要使用这个用户,只需要访问 restic-demo 存储桶。 选择“直接附加现有政策”,这将在下面列出