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

Crontab + Rsync - ничего не происходит :(

Здравствуйте, интересная строка в моем crontab выглядит так: (отредактировал и сохранил ее, запустив crontab -e)

23 *    * * *   rsync -av --delete root@example.de:/var/www/ /home/niklas >> /home/niklas/scripts/logfile

но .. эта строка ничего не делает (на 24-й минуте полоса пропускания не используется, никаких выходных данных нет в файле журнала) может кто-нибудь сказать мне, что не так?

Кстати: аутентификация для сервера работает через ключ pgp без пароля. вот почему пользователь должен быть никлас

РЕДАКТИРОВАТЬ:

побежал type rsync который вернулся /usr/bin/rsync но это уже на пути:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

РЕДАКТИРОВАТЬ2:

создан / usr / bin / backup, содержащий:

rsync -av --delete root@example.com:/var/www/ /home/niklas/server4you_www >> /home/niklas/scripts/logfile

chmod + x'ed его и изменил запись в chrontab на

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
16  *   * * *   /usr/bin/backup

все же ... он не работает, хотя / var / log / syslog sais:

Aug  1 15:16:01 niklas-desktop CRON[9421]: (niklas) CMD (/usr/bin/backup)

пожалуйста помоги

РЕДАКТИРОВАТЬ3:

Изменение

rsync -av --delete root@example.com:/var/www/ /home/niklas/server4you_www >> /home/niklas/scripts/logfile

к

/usr/bin/rsync -av --delete root@example.com:/var/www/ /home/niklas/server4you_www >> /home/niklas/scripts/logfile

как и ожидалось, не меняет (неудовлетворительного) результата. однако `помещение echo 'xyz'> log записывает xyz в файл журнала

так что ... как вы могли догадаться ... моя проблема все еще не решена.

добавление || echo "rsync died with error code $?" в сценарий резервного копирования вернулся:

rsync died with error code 5

который как http://wpkg.org/Rsync_exit_codes предлагает означает «Ошибка запуска клиент-серверного протокола», так что я думаю, что что-то не так с ssh. снова я использую ключ pgp с паролем, но этот пароль по умолчанию разблокируется связкой ключей при запуске, так что я могу ssh root@example.com без ввода пароля. Можно ли отправить rsync пароль ключа ssh?

Вы включили поле имени пользователя в свой crontab. Но это поле существует только в системном crontab (/etc/crontab), а не в crontab для каждого пользователя, который вы редактируете с помощью crontab -e. Так что отредактируйте crontab с помощью crontab -e как пользователь niklas, и сделайте содержимое

23 *    * * *    rsync -av --delete root@example.de:/var/www/ /home/niklas >> /home/niklas/scripts/logfile

Пользователь, которого вы запускали crontab -e as должен был получить письмо с сообщением об ошибке (жалуясь, что niklas не является допустимой командой). Если этого не произошло, возможно, проблема в настройке вашей почты.

Поместите полный путь к rsync даже к вашему / usr / bin / резервное копирование, поэтому строка в этом файле будет начинаться

/usr/bin/rsync <your other options>

И попробуйте поставить строку вроде

logger -t my_backup Hello from /usr/bin/backup

в ваш / usr / bin / скрипт резервного копирования и посмотрите, будет ли что-нибудь записано в / var / log / messages (или в другой файл журнала, в зависимости от настроек вашего системного журнала). В качестве альтернативы вы можете заменить регистратор на

echo "Hello from /usr/bin/backup" >/tmp/backuptest

О, иногда SELinux может вызывать проблемы, с которыми вы столкнулись. Это используется?

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

РЕДАКТИРОВАТЬ: Сделайте вашу строку / usr / bin / backup rsync похожей на

/usr/bin/rsync <your options> || echo "rsync died with error code $?" >> your_log

Возможно, мы поймем, почему rsync так расстроен.

ЕЩЕ ЕЩЕ ОДИН РЕДАКТИРОВАТЬ: ОК, код ошибки rsync 5. Это означает

rsync error: error starting client-server protocol

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

Если вы вручную запустите сценарий rsync от имени niklas, это сработает, верно?

РЕДАКТИРОВАТЬ 3: Заметил ваше упоминание о брелок для ключей. Я думаю, что cron не использует тот же набор ключей, что и пользователь niklas во время вашего входа в систему. Вот почему логин идет p00f при попытке запустить его из cron. Не могли бы вы вместо этого использовать ключ RSA без пароля и просто ограничить его запуском rsync?

РЕДАКТИРОВАТЬ 4: Использование RSYNC_PASSWORD переменная окружения. Это можно сделать, поместив это в начало сценария резервного копирования:

export RSYNC_PASSWORD="myprecioussssssss"

или если вы хотите сохранить пароль в текстовом файле, создайте файл и укажите --password-файл вариант для rsync.

Если это не сработает, вы можете предоставить -e 'ssh -o IdentityFile = / путь / к / ваш_файл вариант для rsync.

Вам может потребоваться полный путь для команды rsync.

Например, в Fedora 13 вы должны заменить rsync на / usr / bin / rsync

в моем случае (ubuntu) создаю сценарий оболочки и помещаю туда команду rsync вместо того, чтобы запускать ее из crontab, поскольку команда сделала трюк. Теперь синхронизация работает как шарм.