我的 cronjob 看起来像这样:
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.dump
如何使 cronjob 每次写入 mysql_daily.dump 时的文件名唯一?
答案1
对于 bash,也许:
... > /srv/backup/mysql_daily-$(date -u +\%Y\%m\%dT\%H\%M\%S)Z.${RANDOM}.dump
就我个人而言,我通常只在我的crontab
.我会将其放入一个小脚本中,并在crontab
.这样做的好处是不需要对%
字符进行转义(常见的 crontab 陷阱)。
更新做好了ISO 8601根据 @johan 评论
计划任务
答案2
一般做法是使用时间戳来date +%s
生成有用的内容来标记文件(我使用秒作为示例,但您可以使用任何日期格式)。只要文件名不冲突,实际上并不需要具有真正唯一的文件名。
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily_`date +\%s`.dump
答案3
尝试
5 3 * * * mysqldump -u root test > /srv/backup/mysql_daily.$(/bin/date +\%Y\%m\%d).dump
这会将当前的日期以 YYYYMMDD 格式写入文件名。