我正在使用 borgbackup 来备份一些系统。它们都使用相同的 borgbackup 存储库。我编写了一个 systemd 计时器,它使用 borgmatic 启动备份作业。我有一个 Ansible 剧本,可以部署所有内容并设置计时器。我的计时器文件如下所示:
[Unit]
Description=Run borgmatic backup
[Timer]
OnCalendar=*-*-* 00:00:00
RandomizedDelaySec=10000
OnBootSec=1200
Persistent=true
[Install]
WantedBy=timers.target
所有系统都有相同的 OnCalendar 表达式。我试图解决的问题是,即使设置了 RandomizedDelaySec,备份的运行时间也通常与一个作业拥有锁定且第二个作业失败的时间足够接近。
我知道我可以通过几种不同的方式解决这个问题,我可以使用单独的存储库,我可以在部署时使用 Ansible 更改 OnCalendar 表达式,或者我可以手动更改它。为了更好地学习 systemd,我试图寻求的解决方案是创建一个配置,在一段时间后备份作业失败时重试。在我看来,systemd 必须提供一种方法来做到这一点。是否可以?如果是这样,怎么办?
答案1
您可以使用 borgs--lock-wait
或 borgmatics 配置中的等效设置 ( storage
-> lock_wait
) 来使作业等待锁定的时间更长。当然,这需要一些调整或实验,以确保所有备份都按照给定的时间运行。