我每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
更改为?
答案 0 :(得分:4)
如果您在crontab中使用date +"%d-%m-%Y_%H:%M"
之类的日期格式,则可能需要使用反斜杠转义%
字符,如下所示:date +"\%d-\%m-\%Y_\%H:\%M"
。
许多crons处理%
特别是用换行符替换它们并将以下文本作为stdin发送到它之前的命令。有关详细信息,请参阅man 5 crontab
。
答案 1 :(得分:1)
+
上的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文件名中包含正斜杠。