跳至主要内容

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 --安装

安装 包 请注意,如果您尝试使用的软件包过时,您始终可以选择使用restic项目中的官方二进制文件。 这些是最新的二进制文件,以可重复和可验证的方式构建,无需额外安装即可下载和运行。 请参阅 下面 的 官方二进制文件 部分进行各种下载。 Mac OS X 如果您使用Mac OS X,则可以使用 自制 软件包管理器 安装Restic  : $ brew install restic Arch Linux 在 Arch Linux上 ,有一个包 restic-git  可以从AUR安装,例如 pacaur : $ pacaur -S restic-git Nix和NixOS 如果您使用的是 Nix 或 NixOS  ,则会提供一个名为的软件包 restic 。 它可以安装uisng  nix-env : $ nix-env --install restic Debian的 在Debian上,有一个 restic 可以从官方回购站安装 的软件包 ,例如 apt-get : $ apt-get install restic 警告 请注意,在写作的时候,Debian的 稳定  具有 restic 版本0.3.3这是很老了。 该 测试 和 不稳定  分支有最新版本 restic 。 RHEL和CentOS restic可以通过copr存储库进行安装。 $ yum install yum-plugin-copr $ yum copr enable copart/restic $ yum install restic Fedora的 restic可以通过copr存储库进行安装。 $ dnf install dnf-plugin-core $ dnf copr enable copart/restic $ dnf install restic 独自的 restic可以通过 eopkg 包管理器 从Solus的官方回购安装 : $ eopkg install restic OpenBSD系统 在OpenBSD ...