В установке 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 ;-)