使用 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=oneshot
ExecStart=restic backup --verbose --one-file-system --tag systemd.timer $BACKUP_EXCLUDES $BACKUP_PATHS
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
EnvironmentFile=%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=7
RETENTION_WEEKS=4
RETENTION_MONTHS=6
RETENTION_YEARS=3
B2_ACCOUNT_ID=XXXXXXXXXXXXXXXXXXXXXXXXX
B2_ACCOUNT_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
RESTIC_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=daily
Persistent=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=oneshot
ExecStart=restic prune
EnvironmentFile=%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=monthly
Persistent=true
[Install]
WantedBy=timers.target
就是這些了!restic
將會每日執行並按月清理資料。
圖片來自 Unsplash 由 Samuel Zeller 拍攝。
via: https://fedoramagazine.org/automate-backups-with-restic-and-systemd/
作者:Link Dupont 選題:lujun9972 譯者:geekpi 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- 自動expftp備份FTP
- 使用 GitHub Actions 自動備份程式碼倉Github
- 自動備份指令碼指令碼
- 自動備份任務
- Linux自動備份MySQLLinuxMySql
- 資料庫自動備份資料庫
- Ms-SqlServer自動備份SQLServer
- MySQL自動備份指令碼MySql指令碼
- SQL Server定期自動備份SQLServer
- GitLab的自動備份、清理備份與恢復Gitlab
- WinRAR自動備份檔案功能的使用方法
- RMAN自動備份任務新增
- Mysql資料庫自動備份MySql資料庫
- oracle自動冷備份指令碼Oracle指令碼
- expdp備份+FTP自動上傳FTP
- ORACLE自動備份shell指令碼Oracle指令碼
- rman 自動備份指令碼-windows指令碼Windows
- 自動備份Oracle資料庫Oracle資料庫
- MySQL自動備份策略的方案MySql
- exp自動備份on linux and on windowsLinuxWindows
- Oracle自動備份資料(轉)Oracle
- 用友U8設定了自動備份,備份失效
- 8種手動和自動備份MySQL資料庫的方法MySql資料庫
- linux平臺下oracle自動備份(使用exp工具)LinuxOracle
- MySQL自動備份指令碼30天自動刪除MySql指令碼
- 容災備份 | 看我使用Powershell操作FTP進行資料檔案自動上傳備份FTP
- 每天自動備份Oracle資料庫Oracle資料庫
- SqlServerExpress2005 自動備份SQLServerExpress
- windows下rman自動備份指令碼Windows指令碼
- svn dump 全自動備份指令碼指令碼
- oracle 自動冷備份指令碼(轉)Oracle指令碼
- MSsql每天自動備份自動清除日誌的操作方法SQL
- Linux下Mysql定時自動備份LinuxMySql
- shell 備份檔案指令碼+自動清理指令碼
- MySQL 自動備份併傳送到郵箱MySql
- LINUX 自動備份程式日誌(shell)Linux
- Oracle自動備份指令碼的實現Oracle指令碼
- Mysql--Linux Mysql定期自動備份MySqlLinux