歡迎光臨
每天分享高質量文章

使用 restic 和 systemd 自動備份 | Linux 中國

及時備份很重要。即使在 Fedora Magazine 中,備份軟體 也是一個常見的討論話題。本文演示瞭如何僅使用 systemd 以及 restic 來自動備份。

— Link Dupont

 

及時備份很重要。即使在 Fedora Magazine 中,備份軟體 也是一個常見的討論話題。本文演示瞭如何僅使用 systemd 以及 restic 來自動備份。

有關 restic 的介紹,請查看我們的文章在 Fedora 上使用 restic 進行加密備份。然後繼續閱讀以瞭解更多詳情。

為了自動創建快照以及清理資料,需要運行兩個 systemd 服務。第一個運行備份命令的服務需要以常規頻率運行。第二個服務負責資料清理。

如果你根本不熟悉 systemd,那麼這是個很好的學習機會。查看 Magazine 上關於 systemd 的系列文章,從單元檔案的這個入門開始:

◈ systemd 單元檔案基礎

如果你還沒有安裝 restic,請註意它在官方的 Fedora 倉庫中。要安裝它,請帶上 sudo 運行此命令:

  1. $ sudo dnf install restic

備份

首先,創建 ~/.config/systemd/user/restic-backup.service。將下麵的文本複製並粘貼到檔案中以獲得最佳效果。

  1. [Unit]
  2. Description=Restic backup service
  3. [Service]
  4. Type=oneshot
  5. ExecStart=restic backup --verbose --one-file-system --tag systemd.timer $BACKUP_EXCLUDES $BACKUP_PATHS
  6. ExecStartPost=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_YEARS
  7. EnvironmentFile=%h/.config/restic-backup.conf

此服務取用環境檔案來加載密鑰(例如 RESTIC_PASSWORD)。創建 ~/.config/restic-backup.conf。複製並粘貼以下內容以獲得最佳效果。此示例使用 BackBlaze B2 儲存。請相應地調整 ID、密鑰、倉庫和密碼值。

  1. BACKUP_PATHS="/home/rupert"
  2. BACKUP_EXCLUDES="--exclude-file /home/rupert/.restic_excludes --exclude-if-present .exclude_from_backup"
  3. RETENTION_DAYS=7
  4. RETENTION_WEEKS=4
  5. RETENTION_MONTHS=6
  6. RETENTION_YEARS=3
  7. B2_ACCOUNT_ID=XXXXXXXXXXXXXXXXXXXXXXXXX
  8. B2_ACCOUNT_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  9. RESTIC_REPOSITORY=b2:XXXXXXXXXXXXXXXXXX:/
  10. RESTIC_PASSWORD=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

現在已安裝該服務,請重新加載 systemd:systemctl -user daemon-reload。嘗試手動運行該服務以創建備份:systemctl -user start restic-backup

因為該服務型別是一次性,它將運行一次並退出。驗證服務運行並根據需要創建快照後,設置計時器以定期運行此服務。例如,要每天運行 restic-backup.service,請按如下所示創建 ~/.config/systemd/user/restic-backup.timer。再次複製並粘貼此文本:

  1. [Unit]
  2. Description=Backup with restic daily
  3. [Timer]
  4. OnCalendar=daily
  5. Persistent=true
  6. [Install]
  7. WantedBy=timers.target

運行以下命令啟用:

  1. $ systemctl --user enable --now restic-backup.timer

清理

雖然主服務運行 forget 命令僅保留保留策略中的快照,但實際上並未從 restic 倉庫中刪除資料。 prune 命令檢查倉庫和當前快照,並刪除與快照無關的所有資料。由於 prune 可能是一個耗時的過程,因此無需在每次運行備份時運行。這是第二個服務和計時器的場景。首先,通過複製和粘貼此文本來創建檔案 ~/.config/systemd/user/restic-prune.service

  1. [Unit]
  2. Description=Restic backup service (data pruning)
  3. [Service]
  4. Type=oneshot
  5. ExecStart=restic prune
  6. EnvironmentFile=%h/.config/restic-backup.conf

與主 restic-backup.service 服務類似,restic-prune 也是一次性服務,並且可以手動運行。設置完服務後,創建 ~/.config/systemd/user/restic-prune.timer 並啟用相應的計時器:

  1. [Unit]
  2. Description=Prune data from the restic repository monthly
  3. [Timer]
  4. OnCalendar=monthly
  5. Persistent=true
  6. [Install]
  7. WantedBy=timers.target

就是這些了!restic 將會每日運行並按月清理資料。


圖片來自 Unsplash 由 Samuel Zeller 拍攝。


已同步到看一看
赞(0)

分享創造快樂