我的备份有2个:一个是每天执行一次,一个是每周日执行一次
现在的要求是:每个月的2号和3号不执行备份,其余的时间照常
 
在crontab中,没找到这样特殊情况的写法,想来想去还是改脚本来解决
在备份开始之前,先做一个判断当前是几号的操作
其内容如下
#!/bin/sh

# modified by yahoon 2009.9.14
# the backup don't run on 2nd and 3rd every month

#Get current time
CURRENT_TIME=`date +%Y%m%d-%H%M`

#Get the weekday
DATE_n=`date +%d`

# Tell if today is 2nd or 3rd
if [ "$DATE_n" == "02" ] || [ "$DATE_n" == "03" ]; then
    echo "Today is $CURRENT_TIME, NOTHING to do">>/var/log/backup.log
    exit 0
else
    /usr/bin/mysqldump -h localhost --opt -u xxx -pxxx abc > /backup/abc$CURRENT_TIME.sql
    gzip /backup/abc$CURRENT_TIME.sql
    exit 0
fi

附: date命令 获取星期几和几号
一般情况下
[root@dbpi01 ~]# date
Sun Sep 13 21:24:37 CDT 2009
获取星期几
[root@dbpi01 ~]# DATE_n=`date +%u`
[root@dbpi01 ~]# echo $DATE_n
7
获取几号
[root@dbpi01 ~]# DATE_n=`date +%d`
[root@dbpi01 ~]# echo $DATE_n
13
 
 
2号的时候
[root@dbpi01 ~]# DATE_n=`date +%d`
[root@dbpi01 ~]# echo $DATE_n
02
不是2
所以if [ "$DATE_n" == "02" ] || [ "$DATE_n" == "03" ]; then
这个判断语句是02而不是2