Я пытаюсь создать задание cron для резервного копирования базы данных.Создание задания cron для mysqldump
Это то, что я до сих пор:
mysqldump.sh
mysqldump -u root -ptest --all-databases | gzip > "/db-backup/backup/backup-$(date)" 2> dump.log
echo "Finished mysqldump $(date)" >> dump.log
Cron работа:
32 18 * * * /db-backup/mysqldump.sh
Проблема, которую я имею, является работа не выполняется через хрон или когда меня нет в каталоге.
Может кто-нибудь проконсультироваться. Неправильно ли мои пути?
Кроме того, в следующей строке, я не уверен, что будет выводить ошибки в dump.log:
mysqldump -u root -ptest --all-databases | gzip > "/db-backup/backup/backup-$(date)" 2> dump.log
Что сработало:
mysqldump -u root -ptest --all-databases | gzip > "../db-backup/backup/backup-$(date).sql.gz" 2> ../db-backup/dump.log
echo "Finished mysqldump $(date)" >> ../db-backup/dump.log
Ваш пример должен работать. Как вы убедитесь, что это * не выполняется *? – hek2mgl
Ну, если я в каталоге и напечатаю ./mysqldump.sh, он работает; однако, если я cd .. и тип say ./db-backup/mysqldump.sh, то журнал и ответ не принимаются. Кроме того, указанное задание cron было установлено в 18:32 для тестирования. 18:32 прошло не резервное копирование. – Brian
Вы должны использовать абсолютный путь к файлу журнала. Как '/ var/log/mysql.dump.log'. Убедитесь, что файл доступен для записи пользователем cron. Примечание. Задания, перечисленные в файле/etc/crontab или /etc/cron.d*, будут выполняться как root. Кроме того, для каждого пользователя используется механизм crontab. Такие cronjobs будут работать с теми же привилегиями, что и пользователь, которому принадлежит crontab. – hek2mgl