我目前正在每周的每一天运行我的MySQL备份脚本:
0 1 * * 1 sh /root/mysql_monday.sh 0 1 * * 2 sh /root/mysql_tuesday.sh 0 1 * * 3 sh /root/mysql_wednesday.sh 0 1 * * 4 sh /root/mysql_thursday.sh 0 1 * * 5 sh /root/mysql_friday.sh 0 1 * * 6 sh /root/mysql_saturday.sh 0 1 * * 0 sh /root/mysql_sunday.sh
现在我想保留一周的备份,所以总共两个星期才更安全。
例如:我虽然可以在星期一和星期一再创build一个备份文件。
偶数天我可以使用:
0 1 */2 * 1 sh /root/mysql_monday_even.sh 0 1 */2 * 2 sh /root/mysql_tuesday_even.sh 0 1 */2 * 3 sh /root/mysql_wednesday_even.sh 0 1 */2 * 4 sh /root/mysql_thursday_even.sh 0 1 */2 * 5 sh /root/mysql_friday_even.sh 0 1 */2 * 6 sh /root/mysql_saturday_even.sh 0 1 */2 * 0 sh /root/mysql_sunday_even.sh
但是奇数日呢?
我发现这在unix.stackexchange上:
你尝试的语法实际上是非常模糊的。 根据月份有多less天,有些月份会在奇数天运行,有些月份会运行一些月份。 这是因为它计算的方式取决于可能性的总数并将它们分开。 您可以通过手动指定date范围并使用奇数或偶数天来超越这种平均行为。 因为即使是一天的剧本也不会在长时间的第三十一天运行,所以在30天的基础上,你不会放任何事情,甚至可以把它划分为31天,日执行。
语法如下所示:
只能在奇数天运行:
0 0 1-31/2 * * command只能在偶数天运行:
0 0 0-30/2 * * command你们关于几个月没有相同天数的担忧在这里并不重要,因为没有几个月有更多的日子,而且对于二月份来说,date范围不会和最后一天或两天相匹配,但是,它列出。
来源: 奇/偶克隆
当然,更好的解决scheme只是使用适用于每周,每月,每年保留的适当的MySQL备份脚本?
Automysqlbackup应该是完美的。
我用我自己的方式来做这件事 ;)
0 1 1,15,29 * * sh /root/mysql_monday.sh 0 1 2,16,30 * * sh /root/mysql_tuesday.sh 0 1 3,17,31 * * sh /root/mysql_wednesday.sh 0 1 4,18 * * sh /root/mysql_thursday.sh 0 1 5,19 * * sh /root/mysql_friday.sh 0 1 6,20 * * sh /root/mysql_saturday.sh 0 1 7,21 * * sh /root/mysql_sunday.sh 0 1 8,22 * * sh /root/mysql_monday2.sh 0 1 9,23 * * sh /root/mysql_tuesday2.sh 0 1 10,24 * * sh /root/mysql_wednesday2.sh 0 1 11,25 * * sh /root/mysql_thursday2.sh 0 1 12,26 * * sh /root/mysql_friday2.sh 0 1 13,27 * * sh /root/mysql_saturday2.sh 0 1 14,28 * * sh /root/mysql_sunday2.sh