使用restic和systemd自動備份
及時備份很重要。即使在 Fedora Magazine 中,備份軟件 也是一個常見的討論話題。本文演示了如何僅使用 systemd 以及 restic 來自動備份。
有關 restic 的介紹,請查看我們的文章在 Fedora 上使用 restic 進行加密備份。然后繼續閱讀以了解更多詳情。
為了自動創建快照以及清理數據,需要運行兩個 systemd 服務。運行備份命令的服務需要以常規頻率運行。第二個服務負責數據清理。
如果你根本不熟悉 systemd,那么這是個很好的學習機會。查看 Magazine 上關于 systemd 的系列文章,從單元文件的這個入門開始:
如果你還沒有安裝 restic,請注意它在官方的 Fedora 倉庫中。要安裝它,請帶上 sudo 運行此命令:
$ sudo dnf install restic
備份
首先,創建 ~/.config/systemd/user/restic-backup.service。將下面的文本復制并粘貼到文件中以獲得更好的效果。
[Unit]Description=Restic backup service[Service]Type=oneshotExecStart=restic backup --verbose --one-file-system --tag systemd.timer $BACKUP_EXCLUDES $BACKUP_PATHSExecStartPost=restic forget --verbose --tag systemd.timer --group-by "paths,tags" --keep-daily $RETENTION_DAYS --keep-weekly $RETENTION_WEEKS --keep-monthly $RETENTION_MONTHS --keep-yearly $RETENTION_YEARSEnvironmentFile=%h/.config/restic-backup.conf
此服務引用環境文件來加載密鑰(例如 RESTIC_PASSWORD)。創建 ~/.config/restic-backup.conf。復制并粘貼以下內容以獲更好效果。此示例使用 BackBlaze B2 存儲。請相應地調整 ID、密鑰、倉庫和密碼值。
BACKUP_PATHS="/home/rupert"BACKUP_EXCLUDES="--exclude-file /home/rupert/.restic_excludes --exclude-if-present .exclude_from_backup"RETENTION_DAYS=7RETENTION_WEEKS=4RETENTION_MONTHS=6RETENTION_YEARS=3B2_ACCOUNT_ID=XXXXXXXXXXXXXXXXXXXXXXXXXB2_ACCOUNT_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXRESTIC_REPOSITORY=b2:XXXXXXXXXXXXXXXXXX:/RESTIC_PASSWORD=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
現在已安裝該服務,請重新加載 systemd:systemctl -user daemon-reload。嘗試手動運行該服務以創建備份:systemctl -user start restic-backup。
因為該服務類型是一次性,它將運行一次并退出。驗證服務運行并根據需要創建快照后,設置計時器以定期運行此服務。例如,要每天運行 restic-backup.service,請按如下所示創建 ~/.config/systemd/user/restic-backup.timer。再次復制并粘貼此文本:
[Unit]Description=Backup with restic daily[Timer]OnCalendar=dailyPersistent=true[Install]WantedBy=timers.target
運行以下命令啟用:
$ systemctl --user enable --now restic-backup.timer
清理
雖然主服務運行 forget 命令僅保留保留策略中的快照,但實際上并未從 restic 倉庫中刪除數據。 prune 命令檢查倉庫和當前快照,并刪除與快照無關的所有數據。由于 prune 可能是一個耗時的過程,因此無需在每次運行備份時運行。這是第二個服務和計時器的場景。首先,通過復制和粘貼此文本來創建文件 ~/.config/systemd/user/restic-prune.service:
[Unit]Description=Restic backup service (data pruning)[Service]Type=oneshotExecStart=restic pruneEnvironmentFile=%h/.config/restic-backup.conf
與主 restic-backup.service 服務類似,restic-prune 可以手動運行。設置完服務后,創建 ~/.config/systemd/user/restic-prune.timer 并啟用相應的計時器:
[Unit]Description=Prune data from the restic repository monthly[Timer]OnCalendar=monthlyPersistent=true[Install]WantedBy=timers.target
就是這些了!restic 將會每日運行并按月清理數據。
























