предотвращать параллельную работу резервного копирования

В моем сценарии /usr/local/bin/backup , который я вызываю каждый час из /etc/crontab , я использую rsync для копирования данных на сервер за пределами сайта. Все это прекрасно работало даже в тех случаях, когда у нас было несколько новых данных, чем через час.

На прошлой неделе кто-то скопировал 11GB-файл в раздел данных, и когда я узнал, что на следующий день было запущено 14 rsync-программ, каждый из которых не получает пропускной способности, и каждый, вероятно, работает над одним и тем же огромным файлом. Я убил их всех (прежде чем осознать, что я должен был сдержать первый из них), остановил работу cron и запустил скрипт резервного копирования вручную.

Я могу записать файл в скрипте перед запуском rsync и проверить скрипт, если этот файл уже существует, чтобы предотвратить параллельное выполнение резервного копирования. Есть ли более простой способ сделать это?

Моя запись /etc/crontab :

 5 * * * * root /usr/local/bin/backup 

  • Резервное копирование Windows-ПК на Linux-машину
  • В чем разница между `dd`,` cp` и `rsync`?
  • как сказать rsync сохранить метку времени в файлах, когда исходное дерево имеет смонтированную точку
  • Почему я получаю «rsync: не удалось установить время на ...: операция не разрешена (1)» ошибка на Ubuntu 10.10 с SME Server 7.4?
  • Как «отменить» rsync -L?
  • rsync: как включить файлы с именем, заканчивающимся в определенной строке
  • Как смонтировать зашифрованную папку через SSH в NAS Synology?
  • rsync самые последние x GB
  • One Solution collect form web for “предотвращать параллельную работу резервного копирования”

    Существуют разные способы сделать это, но IMO проще всего вставить стаю перед командой в файле crontab:

     5 * * * * root flock -n /var/lock/backup /usr/local/bin/backup 

    Файл /var/lock/backup – это блокировка, используемая flock, и -n немедленно делает команду сбоем, если блокировка уже существует.

    Разумеется, это означает, что если одна резервная копия занимает 1 час и 1 минуту, то следующая начинается через 59 минут. Если это проблема, вы можете изучить использование -x .

    Linux и Unix - лучшая ОС в мире.