標籤:
#!/bin/bash
#Shell Command For Backup MySQL Database Everyday Automatically By Crontab
USER=root
PASSWORD="admin"
DATABASE="nansha_car_manager"
HOSTNAME="localhost"
BACKUP_DIR=/home/mysql_back/ #備份檔案儲存路徑
LOGFILE=/home/mysql_back/data_backup.log #日記檔案路徑
DATE=`date ‘+%Y%m%d-%H%M‘` #日期格式(作為檔案名稱)
DUMPFILE=$DATE.sql #備份檔案名
ARCHIVE=$DATE.sql.tgz #壓縮檔名
OPTIONS="-h$HOSTNAME -u$USER -p$PASSWORD $DATABASE"
#mysqldump -help
#判斷備份檔案儲存目錄是否存在,否則建立該目錄
if [ ! -d $BACKUP_DIR ] ;
then
mkdir -p "$BACKUP_DIR"
fi
#開始備份之前,將備份資訊頭寫入日記檔案
echo " " >> $LOGFILE
echo " " >> $LOGFILE
echo "———————————————–" >> $LOGFILE
echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE
echo "———————————————– " >> $LOGFILE
#切換至備份目錄
cd $BACKUP_DIR
#使用mysqldump 命令備份制定資料庫,並以格式化的時間戳記命名備份檔案
mysqldump $OPTIONS > $DUMPFILE
#判斷Database Backup是否成功
if [[ $? == 0 ]]; then
#建立備份檔案的壓縮包
tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
#輸入備份成功的訊息到日記檔案
echo “[$ARCHIVE] Backup Successful!” >> $LOGFILE
#刪除原始備份檔案,只需保 留Database Backup檔案的壓縮包即可
rm -f $DUMPFILE
#-ctime表示建立時間,這裡表示刪除建立時間為多少天之前的檔案,也就是結果只保留多少天的資料
find $BACKUP_DIR -ctime +7 -type f -name "*.tgz" -print > deleted.txt
echo -e "delete files:\n" >> $LogFile
#迴圈刪除匹配到的檔案
cat deleted.txt | while read LINE
do
rm -rf $LINE
echo $LINE>> $LogFile
done
else
echo “Database Backup Fail!” >> $LOGFILE
fi
#輸出備份過程結束的提醒訊息
echo “Backup Process Done”
# 寫日到cron job
# crontab -e
# */1 * * * * /home/auto_log.sh >/dev/null 2>& #shell指令碼目錄
mysql備份shell腳步