一、编写脚本如下:
建立备份目录
# mkdir /backup
编辑备份脚本
# vi /backup/bak.sh
脚本内容如下:
#!/bin/bash
##用途:备份mysql数据,删除k天前的数据##
##作者:Barlow##
##最后修订:2013-03-16##
#
#设定备份保留天数K
K=7
#获取当前日期
TODAY=`date '+%Y%m%d'`
#获取K天前日期
KDAY=`date -d "$TODAY - $K day" '+%Y%m%d'`
#建立备份子目录
mkdir -p /backup/$1
#进行备份,并将结果写入日志
tar zcvf /backup/$1/$TODAY.tar.gz $1 >/dev/null 2>/backup/$1/$TODAY.bak.log
#判断是否出错,并将执行情况写入日志
if [ $? -eq 0 ]
then
echo "$1 $TODAY backup is successful!" >> /backup/$1/$TODAY.bak.log
else
echo "$1 $TODAY backup is error!" >> /backup/$1/$TODAY.bak.log
fi#删除过期备份
if [ -f "/backup/$1/$KDAY.tar.gz" ]
rm -rf /backup/$1/$KDAY.tar.gz
else
echo "The $KDAY.tar.gz is not exist!" >> /backup/$1/$TODAY.bak.log
fi
exit
注意:$1 表示在该脚本执行时后面跟的第一个参数,也就是我们需要备份的目录
$? 表示上一个命令执行情况,如果返回结果为0,则执行正常,否则不正常
二、配置计划任务:
建立备份任务计划,如备份mysql目录,每天凌晨3点整执行,具体如下:
#vim /etc/crontab
0 3 * * * root /backup/bak.sh /var/lib/mysql
注意:
1、shell脚本和计划任务按上述的方法写,则可以很多备份使用同一个脚本,其中/var/lib/mysql就是备份脚本中的$1。
2、一般系统级的计划任务才放入/etc/crontab中,用户级的计划任务使用crontab -e编辑。
三、重启服务使计划任务生效
编辑后记得重启crond服务,并将其设置为自启动:
#service crond restart
停止 crond: [确定]
正在启动 crond: [确定]
#chkconfig crond on