Назад | Перейти на главную страницу

Rsync при запуске в cron не работает. Rsync между Mac Os x Server и Linux Centos

У меня есть рабочая настройка rsync между Mac OS X Server и Linux Centos при запуске вручную в терминале.

Я ввожу команду rsync, она запрашивает пароль, я ввожу ее, и она идет, запускается и завершается.

Теперь я знаю, что это работает, и решил полностью автоматизировать его с помощью cron.

Прежде всего, я создаю авторизованный ключ SSH, выполнив эту команду на сервере Mac:

ssh-keygen -t dsa -b 1024 -f /Users/admin/Documents/Backup/rsync-key

Ввод пароля и его подтверждение. Затем я копирую файл rsync-key.pub на сервер Linux, помещаю его в папку пользователя rsync .ssh и переименовываю в authorized_keys:

/home/philosophy/.ssh/authorized_keys

Затем я убеждаюсь, что файл authorized_keys - это chmod 600 в папке chmod 700.

Затем я настраиваю сценарий оболочки для запуска cron:

#!/bin/bash

RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/Users/admin/Documents/Backup/rsync-key
RUSER=philosophy
RHOST=example.com
RPATH=data/
LPATH="/Volumes/G Technology G Speed eS/Backup"

$RSYNC -avz --delete --progress -e "$SSH -i $KEY" "$LPATH" $RUSER@$RHOST:$RPATH

Затем дайте файлу оболочки права на выполнение, а затем добавьте следующее в crontab с помощью crontab -e:

29      12      *       *       *       /Users/admin/Documents/Backup/backup.sh

Я проверяю свой файл журнала crontab после запуска указанной выше команды, и я получаю это в журнале и ничего больше:

Feb 21 12:29:00 fileserver /usr/sbin/cron[80598]: (admin) CMD (/Users/admin/Documents/Backup/backup.sh)

Итак, я считаю, что все прошло как надо. Но когда я проверяю удаленный сервер, никакие файлы не копируются.

Если я запускаю файл backup.sh в терминале как обычно, он все равно запрашивает пароль, но на этот раз через систему Mac Keychain, а не вводит текст в окне консоли. С помощью Mac Key Chain я могу настроить его так, чтобы он сохранял пароль, чтобы он не запрашивал его снова, но я уверен, что при запуске с cron этот пароль не подбирается.

Здесь я предполагаю, что rsync в cron не работает, потому что для подключения ему нужен пароль, но я думал, что вся идея создания ключей SSH заключалась в том, чтобы предотвратить использование пароля. Я что-то пропустил или сделал что-то не так?

Спасибо

Скотт

Вы можете создавать ключи без пароля, когда он запрашивает его, просто нажмите Enter, и вы получите ключ без установленного пароля. Используйте этот ключ только для доверенных внутренних подключений.

Тогда использование этого ключа с cron должно работать.