3

我每 6 小时运行一次 cron 来备份我的数据库。我希望文件名包含以下列格式创建的日期和时间:

mysqlbackup_22/5/2013_15:45.sql.gz

这是我运行的命令:

date=`date -d`; mysqldump -uusername -ppassword dbname | gzip > /path/to/dir/mysqlbackup_$date.sql.gz

我需要改成date -d什么?

4

2 回答 2

12

如果您使用date +"%d-%m-%Y_%H:%M"crontab 中的日期格式,您可能需要%使用反斜杠转义字符,如下所示date +"\%d-\%m-\%Y_\%H:\%M"

许多 crons%通过用换行符替换它们并将以下文本作为标准输入发送到它之前的命令来进行特殊处理。详情请参阅man 5 crontab

于 2015-05-20T12:01:41.417 回答
1

+运算符 on使您可以灵活地以您想要的date任何方式/格式指定日期,只要有一个您想要的变量。在这种情况下,从man date

   %d     day of month (e.g, 01)
   ...
   %H     hour (00..23)
   ...
   %m     month (01..12)
   %M     minute (00..59)
   ...
   %Y     year

所以,你有:

date +"%d/%m/%Y_%H:%M"

或者,应用于您的命令:

date=`date +"%d-%m-%Y_%H:%M"`; mysqldump -uusername -ppassword dbname | gzip > /path/to/dir/mysqlbackup_$date.sql.gz

请注意,我将文件名中的正斜杠 ( /) 更改为破折号 ( -),因为 unix/linux 文件名中不能有正斜杠。

于 2013-06-08T00:00:26.657 回答