У меня есть сценарий, который находится в файле backup.sh (chmod 775):
rsync -e 'ssh -p 31234' -avlz --delete --stats --progress --copy-links admin@foo.xen.prgmr.com:/home/admin/rsync /home/myname/rsync/foo/
Когда я вызываю его вручную, все работает хорошо (и мне не нужно вводить кодовую фразу). Но когда я звоню из cron, просто не работает.
Я использовал ту же установку на компьютере моего коллеги (у которого такой же доступ, как и у меня), и она работает хорошо.
В чем дело?
У меня есть настройка входа в систему SSH без пароля. Я использую такую команду: rsync --delete -auve 'ssh -i /home/red/.ssh/cron_jobs_key' red@othermachine:/source/dir1 /dest/dir2
Ключ здесь "-i /home/red/.ssh/cron_jobs_key
"где я настроил вход по ssh без пароля. В противном случае мне пришлось бы вводить свой ssh-ключ при входе на локальный компьютер. Я создал этот ssh-ключ специально для заданий cron.
Некоторые подсказки:
ПУТЬ = / sbin: / bin: / usr / sbin: / usr / bin
упомянув, что вам не нужно вводить парольную фазу, я предполагаю, что вы используете ssh-agent для ввода его один раз за сеанс.
Это не будет работать с cron, поскольку cron не имеет доступа к вашей переменной SSH_AUTH_SOCK, потому что он был запущен при запуске машины, а не в текущем сеансе.
Если вы хотите, чтобы это сработало, вам придется использовать ключ без парольной фразы, который, вероятно, использует ваш коллега.