Btrfs

Snapper 最近開始每小時執行一次重複快照

  • February 22, 2018

在過去的兩年裡,Snapper 一直在完美地執行每小時快照(按小時)。幾天前,我注意到每小時拍攝**兩張快照。**一個在整點 (HH:00),另一個在整點後 1 分鐘 (HH:01)

snapper 日誌文件為這兩個重複快照顯示了 libsnapper 的相同程序 ID。每個小時都有一個新的程序ID,但是根據日誌,重複的快照是由相同的程序ID執行的。在日誌中,事情看起來很正常。據我所知,這項工作只是重複了兩次。

snapper list-configs沒有任何重複的配置。

我一直為 snapper-timeline.timer 啟用和啟動 systemd 計時器(根據Arch 的 Snapper wiki 頁面設置)。

我沒有根 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 守護程序,這個特性

$$ automatic hourly snapshots $$應該自動啟動。

正如我上面所說,我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 包時被替換。

$$ UPDATE 2: I did a test that confirms this assumption. See comments. $$

這個答案歸功於@jasonwryan。

正如我們從Arch Wiki Snapper 頁面中所知道的,在“自動時間線快照”下:

如果你有一個 cron 守護程序,這個特性

$$ automatic hourly snapshots $$應該自動啟動。

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 守護程序,您的路徑可能會有所不同。

引用自:https://unix.stackexchange.com/questions/425570