備份的腳本比較簡單:
#!/bin/bash
# 定義年 月 日
year=`date +%Y`
month=`date +%m`
day=`date +%d`
# 定義備份的目錄
BACKDIR=/bak_1/mysql/$year/$month/$day
# MySQL的root密碼
ROOTPASS=123456
# 建立目錄
mkdir -p $BACKDIR
# 獲取數據庫列表
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
# 備份
for dbname in $DBLIST
do
mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy
done
復制代碼上面的腳本將數據庫按"年/月/日"目錄結構備份,將腳本存為back.sh添加到cron裏每天淩晨3點執行
crontab -e
00 03 * * * root /root/back.sh
下面的是每月3號刪除上個月的備份,存為del_bak.sh,每月3號3點3分執行
03 03 03 * * root /root/del_bak.sh
註意腳本上傳後,要chmod壹下權限,比如
chmod 755 /root/back.sh
#!/bin/bash
# 定義年 月 日
year=`date +%Y`
month=`date +%m`
#day=`date +%d`
# 取上壹個月
month=`expr $month - 1`
# 如果是1月,則上壹月為12,並且年也減1
if [ $month -eq 0 ]; then
month=12
day=31
year=`expr $year - 1`
fi
# 因為備份時小於10月的月份有前導零,所以這裏判斷如果小於10月,則加前導零
if [ $month -lt 10 ]; then
pre=0
fi
#獲取要刪除的目錄名
BACKDIR=/bak1/mysql/$year/$pre$month
#刪除了
rm -rf $BACKDIR
重新啟動crond
/etc/rc.d/init.d/crond restart