如何配置crontab:月度备份每月1号执行,周备份排除1号周日
正确的crontab配置方案
月度备份配置
直接指定每月1号执行,不管当天是周几,示例(假设凌晨2点执行):
0 2 1 * * /绝对路径/backup_monthly.sh
字段说明:分 时 日 月 周,这里日固定为1,其余月份、周字段设为*,确保每月1号准时触发。
周度备份配置
要实现除每月1号外的所有周日执行,核心是规避“1号恰好是周日”的情况——因为crontab中日和周是“或”逻辑,直接写* * 0会包含1号的周日,所以需要加日期判断:
0 2 2-31 * 0 [ $(date +\%d) -ne 1 ] && /绝对路径/backup_weekly.sh
解释:
0 2 2-31 * 0:限定在凌晨2点、每月2-31号的周日触发[ $(date +\%d) -ne 1 ]:额外判断当天日期不是1号(避免1号是周日时重复执行)- 只有两个条件都满足,才会执行
backup_weekly.sh
旧配置问题分析
你之前的周备份每天运行,大概率是配置写错了周字段(比如设成了*),或者误把日字段设成*且未限制周字段,导致每天触发。
内容的提问来源于stack exchange,提问作者user20059148
相关产品推荐
相关产品推荐

