您查看的文章来源于http://www.oklinux.cn
今天终于把db2的定时备份脚本改好了,又了却了我的一桩心事,但是不知道为什么不能创建db2inst1用户下的cron定时,还得研究研究,现在就只能在root用户下做定时,现凑合着用吧。
定时备份脚本如下,保留最近两天的备份:
backdb2() {
db2 force application all
db2 force application all
db2 terminate
db2 force application all
db2 force application all
db2 terminate
db2stop force
db2start
db2 backup db qhv3td to /tdback/qhv3tdbackup with 4 buffers buffer 1024
}
getpastday() {
month=`date +%m`
day=`date +%d`
year=`date +%Y`
month=`expr $month + 0`
day=`expr $day - 1`
if [ $day -eq 0 ]; then
month=`expr $month - 1`
if [ $month -eq 0 ]; then
month=12
day=`expr 31 + $day`
year=`expr $year - 1`
else
case $month in
1|3|5|7|8|10|12) day=31;;
4|6|9|11) day=30;;
2)
if [ `expr $year % 4` -eq 0 ]; then
if [ `expr $year % 400` -eq 0 ]; then
day=29
elif [ `expr $year % 100` -eq 0 ]; then
day=28
else
day=29
fi
else
day=28
fi
;;
esac
fi
fi
day=`expr $day - 1`
if [ $day -eq 0 ]; then
month=`expr $month - 1`
if [ $month -eq 0 ]; then
month=12
day=`expr 31 + $day`
year=`expr $year - 1`
else
case $month in
1|3|5|7|8|10|12) day=31;;
4|6|9|11) day=30;;
2)
if [ `expr $year % 4` -eq 0 ]; then
if [ `expr $year % 400` -eq 0 ]; then
day=29
elif [ `expr $year % 100` -eq 0 ]; then
day=28
else
day=29
fi
else
day=28
fi
;;
esac
fi
fi
if [ $month -lt 10 ]; then
month=0$month
fi
if [ $day -lt 10 ]; then
day=0$day
fi
pastday=$year$month$day
return
}
getcurrday() {
month=`date +%m`
day=`date +%d`
year=`date +%Y`
month=`expr $month + 0`
day=`expr $day + 0`
if [ $month -lt 10 ]; then
month=0$month
fi
if [ $day -lt 10 ]; then
day=0$day
fi
currday=$year$month$day
return
}
if [ -f /home/db2inst1/sqllib/db2profile ];then
. /home/db2inst1/sqllib/db2profile
fi
cd /tdback/qhv3tdbackup
getpastday
getcurrday
sRmImg=`echo QHV3TD*$pastday*`
if [ -f $sRmImg ]; then
rm -f $sRmImg
fi
backdb2