如何在 Debian Buster 中正确设置 snapper 时间线快照?

如何在 Debian Buster 中正确设置 snapper 时间线快照?

我最近创建了一个 btrfs 分区。现在我想用它snapper来执行自动快照。该分区用作存档,作为我主要办公室电脑的备份磁盘。一般来说,分区每周只使用两到三次==>所以根本不需要太多快照。

不幸的是,snapper 正在创建大量快照。现在我有大约二十张零差异的快照。那么我该如何更改我的配置,以减少 snapper 创建的快照数量。

行动。我的配置说

时间线_清理|是的
时间线_创建|是的
TIMELINE_LIMIT_DAILY | 1
TIMELINE_LIMIT_HOURLY | 1
TIMELINE_LIMIT_MONTHLY | 4
TIMELINE_LIMIT_WEEKLY | 2
TIMELINE_LIMIT_YEARLY | 2
TIMELINE_MIN_AGE | 1800

snapper -c buerossd-subdata-snap list我有大约二十个快照,每小时创建一次。怎么可能呢,因为就我的配置文件而言,每小时只能保存 1 个,每天最多保存 1 个,每周最多保存 2 个。

如果你想查看我的完整输出这是一个pastebin链接

答案1

怎么可能呢,因为就我的配置文件而言,每小时只能保存 1 个,每天最多保存 1 个,每周最多保存 2 个。

根据你的配置,snapper -c buerossd-subdata-sna cleanup timeline应该保持每小时只有一趟。snapper ... cleanup通常由 cron 或 systemd-timer 调用。然而,snapper ... cleanup比通常的配置调用要少得多snapper ... create,至少在 Debian Buster 上是这样。

看一下systemctl list-timers snapper*。至少应该有两个计时器:

  • snapper-timeline.timerfor snapper-timeline.service,创建新快照
  • snapper-cleanup.timerfor snapper-cleanup.service,根据您的配置删除快照

默认情况下,snapper-cleanup.service每天运行一次:

# /lib/systemd/system/snapper-cleanup.timer

[Unit]
Description=Daily Cleanup of Snapper Snapshots
Documentation=man:snapper(8) man:snapper-configs(5)

[Timer]
OnBootSec=10m
OnUnitActiveSec=1d

[Install]
WantedBy=timers.target

snapper-timeline.service每小时运行一次:

# /lib/systemd/system/snapper-timeline.timer

[Unit]
Description=Timeline of Snapper Snapshots
Documentation=man:snapper(8) man:snapper-configs(5)

[Timer]
OnCalendar=hourly

[Install]
WantedBy=timers.target

这解释了 20 个快照。毕竟,如果您每小时创建一个快照,那么在调用清理服务之前您将拥有最多 24 个快照。

您可以snapper-timeline减少或snapper-cleanup增加运行频率来修复快照数量。由于您似乎担心快照的驻留数量,因此您可能想要更改前者:

systemctl edit snapper-timeline.timer

使用适当的值,例如

[Timer]
OnBootSec=15min
OnUnitActiveSec=12h
OnCalendar=

有关详细信息,请参阅man 5 systemd.timer

相关内容