1. 程式人生 > >mysql日誌簡單備份小指令碼

mysql日誌簡單備份小指令碼

#!/bin/sh
######################################################################
# 日誌定時執行時間為每天0點1分
# 刪除30天之前的日誌檔案,壓縮一週之前的日誌檔案保留或傳送
# 日誌檔案時間是根據日誌名稱後面的日期來計算
# 執行指令碼注意日誌檔案中是否有其他相同字尾的非日誌檔案和日誌檔名稱是否符合要求
######################################################################
#定義mysql日誌檔案所在目錄
path=/data/3306/log
cd $path
#日誌檔案備份
#獲取前一天的日期
bak_date=`date +%Y-%m-%d -d "1 days ago"`
#備份catalina.out日誌,後面新增日期
cp mysql.log mysql.$bak_date.log
cp slowquery.log slowquery.$bak_date.log
#清空slowquery.log日誌檔案
echo ""> slowquery.log
cecho "" > mysql.log

#30天之前的日誌檔案刪除
#獲取30天之前的日期
del_date=`date +%Y-%m-%d -d "30 days ago"`

#獲取檔名中的日期字串,然後對比時間進行相應的操作,localhost_access_log的字尾檔名一般是txt,這裡包括txt檔案
for n in `/bin/ls *.log -1`;do
    m=`echo $n | awk -F. '{print $(NF-1)}'`
    m=`/bin/echo "$m"|/bin/sed 's/-//g'`
    del_dates=`/bin/echo "$del_date"|/bin/sed 's/-//g'`
    if [ ! -n  $m ];then
        echo "IS NULL"
        continue
    echo "$m"
    elif [ $m -lt $del_dates -o $m -eq $del_dates ];then
        echo file $n will be deleted.
        rm -rf $n
    fi
done

#############################################################################
#7天之前的檔案壓縮
#獲取7天之前的日期
zip_date=`date +%Y-%m-%d -d "7 days ago"` 

#獲取檔名中的日期字串,然後對比時間進行相應的操作
for n in `/bin/ls *.log -1`;do
    m=`echo $n | awk -F. '{print $(NF-1)}'`
    m=`/bin/echo "$m"|/bin/sed 's/-//g'`
    zip_dates=`/bin/echo "$zip_date"|/bin/sed 's/-//g'`
    if [ ! -n $m ]; then
        echo "IS NULL"
        continue
    elif [ $m -lt $zip_dates -o $m -eq $zip_dates ];then
        echo file $n will be zip.
        zip $n.zip $n
        rm -rf $n
    fi
done

#對打包檔案進行傳送
/usr/bin/sshpass -p 'xxx' /usr/bin/rsync -avzP -e 'ssh -p 22' --progress ${path}/*.zip root@xxx:/Backup_DB_WEB/Math_DB/Gongwang/Log/mysql/ &&