Snapper 最近開始每小時執行一次重複快照
在過去的兩年裡,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 文件。剩下的問題是:
- 哪個使用者的 crontab 會顯示 Snapper cronjob?
- 有沒有辦法讓 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)如下:
- 編輯 /etc/pacman.conf`
- 取消註釋
NoExtract
指令(如果已註釋)。- 將 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 守護程序,您的路徑可能會有所不同。