刚写了个shell脚本,用于每天凌晨2点30分备份项目中的一个库。现做个简单记录,以备查用,也和广大51cto午饭们分享。
1.先确定软件包和crond服务运行情况:
查看是否安装vixie-crom-4.1-44.EL4软件包
#rpm -qa |grep vixie-cron
vixie-crom-4.1-44.EL4
vixie-crom-4.1-44.EL4
查看crond服务的运行状态
#service crond status
crond (pid 3065) is running...
crond (pid 3065) is running...
2.编写脚本:
#!/bin/sh
USER="root" #DB用户名
PASSWORD="pwd" #DB密码
DATABASE="test" #DB数据库名
WEBMASTER=yangfei_luck@163.com #错误发送邮箱
BACKUP_DIR="/export/home/wwwroot/webapps/testScripting/Data_backup" #备份文件存放目录
LOGFILE="/export/home/wwwroot/webapps/testScripting/Data_backup/data_backup.log" #备份日志文件
DATE=`date +%Y%m%d-%H%M` #当前年月日时分
DUMPFILE=$DATE.sql #当前年月日时分作备份文件名
ARCHIVE=$DATE.sql.tgz #压缩包名
OPTIONS="-u$USER -p$PASSWORD --opt --extended-insert=false --triggers --routines --hex-blob $DATABASE" #备份操作
#判断备份目录是否存在,如果不存在则创建一个
if [ ! -d $BACKUP_DIR ] ;
then
mkdir -p "$BACKUP_DIR"
fi
echo ----------------------------------------- >> $LOGFILE
echo BACKUP DATE: `date +%Y-%m-%d-%H:%M:%S` >> $LOGFILE
echo Backup Process Begin >> $LOGFILE
#更换目录
cd $BACKUP_DIR
#执行备份操作
mysqldump $OPTIONS > $DUMPFILE
#判断备份是否成功
if [[ $? == 0 ]]; then
#创建备份文件压缩包
tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
echo [$ARCHIVE] Backup Successful! >> $LOGFILE
#删除原备份文件,只留压缩包
rm -f $DUMPFILE
#备份失败,发送错误消息到邮箱(需要mailutils或者类似终端下发送邮件工具的支持)
else
echo “Database Backup Fail!” >> $LOGFILE
#mail -s “Database:$DATABASE Daily Backup Fail” $WEBMASTER
fi
echo Backup Process End >> $LOGFILE
echo “Backup Process Done”
echo ----------------------------------------- >> $LOGFILE
USER="root" #DB用户名
PASSWORD="pwd" #DB密码
DATABASE="test" #DB数据库名
WEBMASTER=yangfei_luck@163.com #错误发送邮箱
BACKUP_DIR="/export/home/wwwroot/webapps/testScripting/Data_backup" #备份文件存放目录
LOGFILE="/export/home/wwwroot/webapps/testScripting/Data_backup/data_backup.log" #备份日志文件
DATE=`date +%Y%m%d-%H%M` #当前年月日时分
DUMPFILE=$DATE.sql #当前年月日时分作备份文件名
ARCHIVE=$DATE.sql.tgz #压缩包名
OPTIONS="-u$USER -p$PASSWORD --opt --extended-insert=false --triggers --routines --hex-blob $DATABASE" #备份操作
#判断备份目录是否存在,如果不存在则创建一个
if [ ! -d $BACKUP_DIR ] ;
then
mkdir -p "$BACKUP_DIR"
fi
echo ----------------------------------------- >> $LOGFILE
echo BACKUP DATE: `date +%Y-%m-%d-%H:%M:%S` >> $LOGFILE
echo Backup Process Begin >> $LOGFILE
#更换目录
cd $BACKUP_DIR
#执行备份操作
mysqldump $OPTIONS > $DUMPFILE
#判断备份是否成功
if [[ $? == 0 ]]; then
#创建备份文件压缩包
tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
echo [$ARCHIVE] Backup Successful! >> $LOGFILE
#删除原备份文件,只留压缩包
rm -f $DUMPFILE
#备份失败,发送错误消息到邮箱(需要mailutils或者类似终端下发送邮件工具的支持)
else
echo “Database Backup Fail!” >> $LOGFILE
#mail -s “Database:$DATABASE Daily Backup Fail” $WEBMASTER
fi
echo Backup Process End >> $LOGFILE
echo “Backup Process Done”
echo ----------------------------------------- >> $LOGFILE
3.配置定时器:
crontab中每一行代表一个任务,格式如下:
minute hour day month dayofweek command
本文转自NightWolves 51CTO博客,原文链接:http://blog.51cto.com/yangfei520/463035,如需转载请自行联系原作者