剛寫了個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=[email protected] #錯誤發送郵箱
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=[email protected] #錯誤發送郵箱
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