使用 restic 和 systemd 自动备份

[ad_1]

及时备份很重要。 以至于 备份软件 是一个常见的讨论话题,即使在这里 Fedora 杂志。 本文演示了如何自动备份 静止的 仅使用 systemd 单元文件。

有关 restic 的介绍,请务必查看我们的文章 Use restic on Fedora 用于加密备份。 然后继续阅读以获取更多详细信息。

需要运行两个 systemd 服务才能自动拍摄快照并保持数据修剪。 第一个服务运行备份命令需要定期运行。 第二个服务负责数据修剪。

如果您根本不熟悉 systemd,那么现在是学习的最佳时机。 在杂志上查看有关 systemd 的系列,从有关单元文件的入门开始:

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

修剪

虽然主服务运行忘记命令以仅在保留策略内保留快照,但数据实际上并未从 restic 存储库中删除。 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 是一个 oneshot 服务,可以手动运行。 设置好服务后,在 ~/.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 现在将每天运行并每月修剪数据。

拍摄者 塞缪尔·泽勒不飞溅.

[ad_2]

Related Posts