如何在 cron 作业中向文件名添加唯一 id?

如何在 cron 作业中向文件名添加唯一 id?

我的 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 格式写入文件名。

相关内容