Следующее хорошо работает из командной строки
/usr/bin/mysqldump -uUser -pPass Db_name > /var/www/db_backup/db.`date +%Y%m%d%H%M`.sql
но когда я пытаюсь сделать это в кроне, я получаю ошибку:
bad ` sign
errors in crontab file, can't install
Я видел, что кто-то еще в сети решил ту же проблему путем выхода из знаков процента, но это не помогло, и я попробовал ее просто датой в одинарных левых кавычках без спецификаторов формата и все еще получил ошибки.
Я также видел аргумент даты, включенный в одинарные или двойные кавычки, но это не помогает также.
Предоставленный я мог просто бросить его в сценарий и выполнить это, я предполагаю - но какая забава - это?
Какие-либо идеи? Я использую RHEL 5.
Попробуйте использовать $ ()
вместо обратных кавычек. И вам, вероятно, нужно избегать знаков процента, поскольку в противном случае cron
преобразует их в символы новой строки.
* 0 * * * /usr/bin/mysqldump -uUser -pPass Db_name > /var/www/db_backup/db.$(date +\%Y\%m\%d\%H\%M).sql
Кроме того, вы должны сохранить пароль в файле параметров с безопасными разрешениями (например, 600 или 640) вместо того, чтобы передавать его в командной строке.
Поместите однострочный сценарий (как показано) в соответствующий файл сценария и вызовите его из cron:
$ cat /usr/local/bin/db-backup
#!/bin/sh
/usr/bin/mysqldump -uUser -pPass Db_name > \
/var/www/db_backup/db.`date +%Y%m%d%H%M`.sql
$ # use RHEL commands to add db-backup to your crontab