mysql日誌簡單備份小指令碼
阿新 • • 發佈:2019-05-11
#!/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/ &&