rsnapshot:我的 crontab 有什么问题?

rsnapshot:我的 crontab 有什么问题?

我正在使用 Rsnapshot 进行备份(Linux CentOS 6)。

这是我的/etc/cron.d/rsnapshot

30 11 * * * root    /usr/bin/rsnapshot nowandthen > /backups/rsnapshot_cron.txt 2>&1
15 11 * * 4 root    /usr/bin/rsnapshot weekly > /backups/rsnapshot_cron.txt 2>&1
00 11 24-31 * 4 root    /usr/bin/rsnapshot monthly > /backups/rsnapshot_cron.txt 2>&1

每月备份计划于每月的最后一个星期四执行。

但是,每月备份于今天(2016 年 2 月 18 日星期四)11:00 执行。今天不是本月的最后一个星期四。

我的 crontab 有什么问题?

答案1

根据本网站,你的字符串表示“每月 24、25、26、27、28、29、30 和 31 日的 11:00“每周四”(重点是我加的)。如果这个网站是正确的,这就解释了为什么它在 18 日播出。

man 5 crontab在第二个星期六运行的示例条目是:

0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "2nd Saturday"

(即,在第二周的每一天运行并检查星期几作为命令的一部分) - 这支持了这样的观点:星期几是一个额外的、替代的过滤器,而不是进一步的限定,尽管手册页没有说清楚。

因此,对于你的情况,我会使用:

00 11 * * 4 root test $(date -d @$((`date +\%s`+604800)) +\%m) -ne $(date +\%m) && /usr/bin/rsnapshot monthly > /backups/rsnapshot_cron.txt 2>&1

检查您的date支持-d 'next Thursday':如果是,您可以使用更简单的方法:

00 11 * * 4 root test $(date -d 'next Thu' +\%m) -ne $(date +\%m) && /usr/bin/rsnapshot monthly > /backups/rsnapshot_cron.txt 2>&1

它每周四运行一次,并检查从现在起一周(604800 秒)的日期是否在同一个月:如果不是,那么它一定是最后一个星期四,因此备份命令运行。

相关内容