У меня есть задание cron, которое запускает команду rsync, которая выполняет удаленное резервное копирование каждые два часа.
Если предыдущее удаленное резервное копирование все еще выполняется, я инкапсулировал эту команду rysnc внутри команды flock.
Flock предотвращает одновременное выполнение этой команды несколько раз:
flock -n /location/of/lock_file -c 'rsync -rv /home/localuser/ remoteuser@55.55.55.55:/home/remoteuser/backupFolder' || echo "Couldn't perform remote backup, because previous remote backup is still in progress."
Однако, если я перезагружаю удаленный сервер во время одной из этих резервных копий (для имитации сценария разорванного соединения), flock продолжает блокировать будущие попытки, потому что предыдущий процесс (хотя он постоянно отключен от места назначения резервной копии) сохраняется.
Какой лучший способ сообщить стаду, что rsync потерпел неудачу на неопределенный срок, и, следовательно, освободить эти блокировки, которые мешают будущим попыткам начать работу?
На странице руководства rsync я вижу аргумент --timeout. Является ли установка наилучшим способом борьбы с круглосуточными замками стада?