适当的格式为cron中的mysqldump动态文件名?

时间:2009-07-20 18:41:35

标签: cron mysqldump

我有一个crontab设置,每次尝试时都会出错。它在shell中运行良好。当我尝试将日期自动插入数据库备份的文件名时,这是我正在使用的格式。有没有人知道我需要用来让cron让我在文件名中插入日期的语法?

mysqldump -hServer -uUser -pPassword Table | gzip > 
/home/directory/backups/table.$(date +"%Y-%m-%d").gz

提前致谢!

2 个答案:

答案 0 :(得分:17)

对于crontab的“命令”部分,这样的事情如何:

mysqldump --host=HOST --user=USER --password=PASSWORD DATABASE TABLE | gzip > /tmp/table.`date +"\%Y-\%m-\%d"`.gz

从OP改变的是逃避日期格式:

date +"\%Y-\%m-\%d"

(我使用了反引号 - 但这应该有很大的不同)

(其他解决方案是将原始命令放在shell脚本中,并从crontab执行此命令,而不是命令 - 可能更容易读/写^^)

答案 1 :(得分:0)

“在shell中工作但在cron中工作”的最典型原因是您尝试执行的命令不在PATH中。原因是从cron aint调用的shell加载与登录shell相同的文件。

修复:为您尝试执行的每个命令添加绝对路径。

我在你的命令中注意到的第二件事。运行date命令的语法看起来不太便于携带。将其更改为反引号,或运行将整个命令放到shellscript(也可以使用它来设置路径)并从cron执行该脚本..

编辑:

在写我的原始回复期间,我的键盘布局没有反引号,所以检查Pascal写的是什么。

你可以用一个shellcript做的例子:

将以下内容复制到/usr/local/bin/dumptable.sh

#!/bin/sh
/usr/bin/mysqldump --host=HOST --user=USER --password=PASSWORD DATABASE TABLE | /bin/gzip > /tmp/table.`/bin/date +"\%Y-\%m-\%d"`.gz

然后将/usr/local/bin/dumptable.sh放入cron ..