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

scp не работает в crontab

В установке CentOS у меня есть такой сценарий:

#! /bin/bash
mysqldump --all-databases | gzip > /dumps/sql`date +"%Y-%m-%d-%$
scp `ls -t | head -1`  root@backup:/media/storage/backup/

Машина настроена с авторизованным ключом ssh, поэтому пароль не требуется. Если я запустил его (/ bin / bash mysql.sh), он будет работать по назначению, но в cronjob выполняется только mysqldump. Команда scp не работает.

Где мне это исправить?

Это звучит как scp не забирает вашу пару ключей от ~/.ssh каталог. Попробуй это:

env HOME=/path/to/your/home scp -v $(ls -t | head -1) root@backup:/media/storage/backup/ > /tmp/scp.log 2>&1

Если не работает, опубликуйте scp.log Вот.

Во многих случаях скрипты, которые работают из командной строки, но не из cron, терпят неудачу из-за проблем со средой. Если вы используете ssh-агент или иным образом настраиваете информацию, необходимую scp для работы в вашей среде, вам необходимо явно указать их в вашем скрипте или создать свой .bashrc (или любой другой файл, устанавливающий ваши переменные.); cron не использует ваши rc-файлы по умолчанию, поэтому ваша среда довольно проста.

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

Вы можете попробовать изменить команду "date" с помощью этого:

$ (дата + \% F)

И попробуйте еще раз установить cronjob ;-)