일부 시스템을 백업하기 위해 borgbackup을 사용하고 있습니다. 그들은 모두 동일한 borgbackup 저장소를 사용합니다. 백업 작업을 시작하기 위해 borgmatic을 사용하는 systemd 타이머를 작성했습니다. 모든 것을 배포하고 타이머를 설정하는 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
--lock-wait
borgs 또는 borgmatics 구성에서 동등한 설정( storage
-> )을 사용하여 lock_wait
작업이 잠금을 더 오래 기다리도록 할 수 있습니다 . 물론 모든 백업이 지정된 시간에 따라 실행되도록 하려면 약간의 조정이나 실험이 필요합니다.