使用restic和systemd自动备份

系统 Linux
及时备份很重要。即使在 Fedora Magazine 中,备份软件 也是一个常见的讨论话题。本文演示了如何仅使用 systemd 以及 restic 来自动备份。

[[265671]]

及时备份很重要。即使在 Fedora Magazine 中,备份软件 也是一个常见的讨论话题。本文演示了如何仅使用 systemd 以及 restic 来自动备份。

有关 restic 的介绍,请查看我们的文章在 Fedora 上使用 restic 进行加密备份。然后继续阅读以了解更多详情。

为了自动创建快照以及清理数据,需要运行两个 systemd 服务。运行备份命令的服务需要以常规频率运行。第二个服务负责数据清理。

如果你根本不熟悉 systemd,那么这是个很好的学习机会。查看 Magazine 上关于 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 将会每日运行并按月清理数据。 

 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2019-04-17 08:00:00

Linuxrestic目录

2023-02-16 09:52:46

journalctlsystemdLinux

2009-09-29 10:52:34

Linux自动备份操作系统

2021-06-04 06:20:47

systemd定位工具系统运维

2021-05-18 16:25:44

systemd启动项系统运维

2010-12-31 14:42:51

ExchangeSer

2022-07-20 07:13:45

Linuxsystemd

2021-04-18 12:12:29

systemd定时器系统运维

2019-11-28 10:15:35

TimeShiftUbuntuLinux

2021-11-26 05:57:12

开源备份Restic

2011-03-28 16:12:55

mysql自动远程备份

2021-06-16 11:25:59

备份命令开源

2022-05-27 10:59:22

LinuxSystemd

2014-07-14 09:24:51

Debiansystemd

2022-08-02 08:53:03

KubernetesSystemdLinux

2024-01-17 17:36:06

Linuxsystemd

2012-09-28 13:39:40

Windows备份

2011-05-16 11:29:00

MySQL自动备份

2011-08-08 10:10:21

Linux备份

2013-09-09 17:17:18

MYSQL自动备份
点赞
收藏

51CTO技术栈公众号