Как автоматизировать Rsync в Linux? - PullRequest
0 голосов
/ 06 сентября 2018

Я хочу запускать rsync (в удаленной системе Linux) автоматически каждую минуту. поэтому, независимо от того, какие изменения (в test.txt, как упомянуто ниже) сделаны в одной системе, они должны быть затронуты в другой системе через тот же минутный интервал.

Для этого я изменил sudo crontab -e и добавил

*/1 * * * * /home/john/rsync.sh

rsync.sh содержит две команды:

sudo rsync -av /home/john1/test.txt remote@remote_ip:
sudo rsync -av --update /home/john1/test.txt remote@remote_ip:

когда я запускаю rsync.sh вручную, все изменения будут успешно выполнены.

1 Ответ

0 голосов
/ 06 сентября 2018

Если вы добавили это в корневой каталог, вам не нужно запускать команды rsync с sudo.

Вещи, которые запускаются в crontab, вероятно, не будут иметь одинаковые переменные окружения. Вы можете добавить абсолютный путь к rsync, если не уверены, например, /usr/bin/rsync. Также проверьте другие переменные окружения, например, запустив set.

Когда вы запускаете его вручную, вы уже находитесь в определенной оболочке, которая, вероятно, может его запустить. Но когда cron запускает его, он не знает, какой интерпретатор использовать. Всегда начинайте свои скрипты с #!/usr/bin/bash (или с вашей любимой оболочки). И / или вызовите задание cron, указав, какую оболочку использовать, например:

*/1 * * * * /bin/bash /home/john/rsync.sh

Надеюсь, это поможет. ;)

...