Snapper 最近开始每小时执行重复快照

Snapper 最近开始每小时执行重复快照

在过去的两年里,Snapper 一直在完美地执行每小时快照(整点)。前几天我注意到每小时拍摄一次快照。一个在整点 (HH:00),另一个在整点后 1 分钟 (HH:01)

snapper 日志文件显示这两个重复快照的 libsnapper 的相同进程 ID。每小时都会有一个新的进程ID,但是根据日志,重复的快照是由同一个进程ID执行的。在日志中,一切看起来都很正常。据我所知,这项工作只是重复了两次。

snapper list-configs没有任何重复的配置。

我一直启用了一个 systemd 计时器并启动了 snapper-timeline.timer (这是根据Arch 的 Snapper 维基页面)。

我没有 root cron:

# crontab -l
no crontab for root

据我所知,任何用户都没有 cron:/var/spool/cron/是空的。

这是真正奇怪的事情。停止并禁用后snapper-timeline.timer,整点的快照会停止,但整点后1分钟的快照会继续。即使重新启动后也是如此。

执行上述步骤后,systemctl 不会列出任何 snapper-timeline.timer 条目:

$ systemctl --user list-timers
0 timers listed.
$ sudo systemctl list-timers
NEXT                         LEFT          LAST                         PASSED        UNIT                         ACTIVATES
Wed 2018-02-21 00:00:00 EST  1h 40min left Tue 2018-02-20 00:00:00 EST  22h ago       logrotate.timer              logrotate.service
Wed 2018-02-21 00:00:00 EST  1h 40min left Tue 2018-02-20 00:00:00 EST  22h ago       man-db.timer                 man-db.service
Wed 2018-02-21 00:00:00 EST  1h 40min left Tue 2018-02-20 00:00:00 EST  22h ago       shadow.timer                 shadow.service
Wed 2018-02-21 03:54:50 EST  5h 35min left Tue 2018-02-20 03:54:49 EST  18h ago       snapper-cleanup.timer        snapper-cleanup.service
Wed 2018-02-21 03:59:50 EST  5h 40min left Tue 2018-02-20 03:59:49 EST  18h ago       systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Mon 2018-02-26 00:00:00 EST  5 days left   Mon 2018-02-19 00:00:23 EST  1 day 22h ago fstrim.timer                 fstrim.service

更新:

据我们所知,从Arch Wiki Snapper 页面,在“自动时间线快照”下:

如果您有 cron 守护进程,此功能 [自动每小时快照] 应该会自动启动。

正如我上面所说,我crontab -l以 root 身份和我的用户身份进行了检查,结果都是空的。

然而,就我而言,我确实安装了 cronie(cronie 是一个 cron 守护进程)。查看/etc/cron.daily/显示了一个 snapper 文件,并且/etc/cron.hourly/还包含一个 snapper 文件。

剩下的问题是:

  1. 哪个用户的 crontab 会显示 Snapper cronjob?

  2. 有没有办法让 Snapper 的 cronjob 处于不活动状态,并且在包更新期间持续存在(同时保持 systemd 计时器处于活动状态)?我假设如果我简单地删除/etc/cron.daily/etc/cron.hourly/` 中的条目,那么当更新 Snapper 包时它们将被替换。 [更新2:我做了一个测试,证实了这个假设。看评论。]

答案1

这个答案归功于@jasonwryan。

据我们所知,从Arch Wiki Snapper 页面,在“自动时间线快照”下:

如果您有 cron 守护进程,此功能 [自动每小时快照] 应该会自动启动。

crontab -l以 root 身份和我的用户身份进行了检查,两者都是空的。

然而,就我而言,我确实安装了 cronie(cronie 是一个 cron 守护进程)。软件包安装将 Snapper 时间线清理脚本放置在 中,/etc/cron.daily/并将每小时快照脚本放置在 中/etc/cron.hourly/。 (即使已启用 Snapper systemd 单元,它也会执行此操作。)

如果您更喜欢使用 systemd 计时器,但又保留一个 cron 守护进程来处理一些奇怪的工作,那么 Snapper 将更喜欢 cron 守护进程。

假设需要安装 cron 守护进程(正如我所做的那样),但希望使用 systemd 管理 Snapper 计时器,解决方案(感谢 @jasonwryan)如下:

  1. 编辑/etc/pacman.conf`

  2. 取消注释该NoExtract指令(如果有注释)。

  3. 将 Snapper 包中的以下两个文件添加到NoExtract指令中

    等/cron.daily/snapper 等/cron.hourly/snapper

这里讨论添加多个文件的语法:

pacman.conf 多行文件列表的 NoExtract 语法 / Pacman 和软件包升级问题 / Arch Linux 论坛

/etc/pacman.conf 中的结果行示例:

NoExtract = etc/cron.daily/snapper etc/cron.hourly/snapper

该解决方案适用于我的 cronie,但如果您使用不同的 cron 守护程序,您的路径可能会有所不同。

相关内容