每天晚上 10 点通过 Cronjob 备份数据库

每天晚上 10 点通过 Cronjob 备份数据库

我设法设置了一个 cronjob:

* 13 * * * date=`date +\%d-\%m-\%Y-\%s`; mysqldump -u root -pPassword1 db121 > /home/backup/xbackup_$date.sql; gzip /home/backup/xbackup_$date.sql

我希望上面的操作mysqldump每天晚上 10 点执行一次,然后保存到 /home/backup 目录中。但是,这对我来说不起作用。

crontab 中的上述条目是否正确?如果正确,为什么它不进行备份,因为我自己执行命令时它工作正常。

感谢大家的帮助

更新

我正在读 centoscron 作业手册上面写着:

除以下用户外可以使用 crontab 实用程序配置 cron 任务。

萨利,这不是真的吗?

答案1

crontab(5)手册页中:

   The "sixth" field (the rest of the line) specifies the  command  to  be
   run.   The  entire  command  portion  of the line, up to a newline or %
   character, will be executed by /bin/sh or by the shell specified in the
   SHELL  variable  of  the  cronfile.   Percent-signs (%) in the command,
   unless escaped with backslash (\), will be changed into newline charac-
   ters,  and  all  data  after the first % will be sent to the command as
   standard input.

答案2

最有可能的是,这些命令不在您的$PATHcrontab 中,或者没有提供命令的完整路径,例如/usr/bin/mysqldump

答案3

我会这样做

date='date +\%d-\%m-\%Y-\%s'

0 22 * * * mysqldump -u root -pPassword1 db121 > /home/backup/xbackup_`$date`.sql; gzip /home/backup/xbackup_`$date`.sql

相关内容