使用日期追加文件名到由cron创建的数据库备份

使用日期追加文件名到由cron创建的数据库备份

问题描述:

我想通过cron维护多个日期备份,但我似乎无法弄清楚如何连接cron中的文件名。使用日期追加文件名到由cron创建的数据库备份

目前我只使用以下命令:

/bin/mv /var/www/vhosts/mysite.org/dbBackups/today.sql /var/www/vhosts/mysite.org/dbBackups/yesterday.sql 

/usr/bin/mysqldump --add-drop-table -u dbname -pmypass dbname > /var/www/vhosts/mysite.org/dbBackups/today.sql 

我试过是没有好:

/usr/bin/mysqldump/mysqldump --add-drop-table -u dbname -pmypass dbname > '/var/www/vhosts/mysite.org/dbBackups/' . date +%Y%m%d . dbname.sql 

那么,如何concantenate在cron该字符串?

/usr/bin/mysqldump/mysqldump --add-drop-table -u dbname -pmypass dbname > "/var/www/vhosts/mysite.org/dbBackups/"`date +%Y%m%d`dbname.sql 
+0

嗯,看起来很奇怪。你可以在代码块中格式化这个吗? – 2009-08-25 16:44:05

+1

对不起,先来这里贴一下,就修好了。 – 2009-08-25 16:45:07

+0

谢谢!奇迹般有效! – jerrygarciuh 2009-08-25 16:57:25

放入反引号的日期命令,并删除空格:

/usr/bin/mysqldump/mysqldump --add-drop-table -u dbname -pmypass dbname > /var/www/vhosts/mysite.org/dbBackups/`date +%Y%m%d`dbname.sql 

在(至少)来砸你也可以使用$(some command)语法,而不是反引号。不知道它是否适用于cron,但如果你喜欢这种风格,你可能会尝试(这种风格的一个好处是,他们可以嵌套没有问题)。

您可以使用$(...)语法。

/usr/bin/mysqldump/mysqldump --add-drop-table -u dbname -pmypass dbname > 
/var/www/vhosts/mysite.org/dbBackups/$(date +%Y%m%d)dbname.sql 

您可能需要像这样定义一个变量:

export MYDATE="$(date '+%Y-%m-%d')" 

,并用它连接起来是这样的:

...> /var/www/vhosts/mysite.org/dbBackups/"$MYDATE"dbname.sql 
+0

这对于处理多个文件尤其有用。例如,我经常为多个数据库进行备份。 – 2009-08-25 20:11:20