週期性定時備份及郵件通知管理員

週期性定時備份:
每天晚上00點整在Web服務器A上打包備份網站程序目錄並通過rsync命令推送到服務器B上備份保留。
具體要求如下:
1、Web服務器A和備份服務器B的備份目錄必須都爲backup
2、Web服務器站點目錄爲(/var/www/html)
3、Web服務器僅保留7天內的備份
4、備份服務器上檢查備份結果是否正常,並將每天的備份結果發給管理員信箱
5、備份服務器上每週六的數據保留,其他備份僅保留180天備份

#rsync服務端和客戶端配置自動化配置腳本http://blog.51cto.com/ygtq666/2061975
#簡單安裝NFS服務端和客戶端http://blog.51cto.com/ygtq666/2063025
#1、實現推送(A端推送到B端),關於rsync和NFS服務器的就可以查看我的前2篇博文

[root@nfs01 ~]# cd /backup/
[root@nfs01 backup]# ls     #檢查nfs客戶端backup目錄裏面的文件
html_2018-02-02_00.gz.tar  html_2018-02-02_01.gz.tar  old.txt
[root@nfs01 backup]# rsync -avz /backup/ [email protected]::backup/ --password-file=/etc/rsync.password      #推送到backup服務端
sending incremental file list
./
html_2018-02-02_00.gz.tar
html_2018-02-02_01.gz.tar
old.txt

sent 529 bytes  received 68 bytes  1194.00 bytes/sec
total size is 322  speedup is 0.54

[root@backup backup]# ls    #backup服務器檢查是否推送到位
html_2018-02-02_00.gz.tar  html_2018-02-02_01.gz.tar  old.txt

#2、打包、推送、刪除、定時任務腳本(A端)
IP=$(ifconfig eth1|awk -F "[ :]+" 'NR==2{print $4}')
Path=/backup
if [ $(date +%w) -eq 0 ]
then
   Time="week_$(date +%F_%w -d "-1day")"
else
   Time=$(date +%F -d "-1day")
fi
mkdir $Path/$IP/ -p

cd / &&\
tar zcfh $Path/$IP/backup_$Time.tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables var/www/html app/logs &&\
md5sum $Path/$IP/backup_$Time.tar.gz >$Path/$IP/flag_$Time.log &&\
rsync -az $Path/ [email protected]::backup --password-file=/etc/rsync.password &&\
find /backup/ -type f -mtime +7 \( -name "*.log" -o -name "*.tar.gz" \) |xargs rm -f

腳本理解:
IP=$(ifconfig eth1|awk -F "[ :]+" 'NR==2{print $4}')
取出IP作爲變量表示
Path=/backup
backup目錄作爲一個變量
Time=$(date +%F)
時間段做一個變量
mkdir $Path/$IP/ -p
腳本開始前創建backup目錄裏面創建一個IP地址目錄

cd / && \

tar zcfh $Path/$IP/backup$Time.gz.tar var/spool/cron/root etc/rc.local etc/sysconfig/iptables var/www/html app/logs && \
#變量表示$Path表示#/backup目錄,$IP表示IP地址的目錄,$Time表示時間段
把var/spool/cron/root etc/rc.local etc/sysconfig/iptables var/www/html app/logs這4個目錄加上時間段打包到/backup目錄的IP地址目錄下
md5sum $Path/$IP/backup
$Time.gz.tar>$Path/$IP/flag_$Time.log && \
這條命令是上面執行完打包文件後有了打包文件之後在把打包文件加上指紋存放到日誌裏面
rsync -avz $Path/ [email protected]::backup/ --password-file=/etc/rsync.password && \
最後把backup目錄裏面的內容推送到備份服務器上
find $Path -type f -name ".gz.tar" -name ".log" -mtime +7|xargs rm -f
本地服務器刪除7天以前的打包文件和日誌

#3、保留每週6數據,刪除180天以前的數據,發郵件給管理員(B端)
[root@backup scripts]# /etc/init.d/postfix start #B端開啓郵件隊列,否則無法發送。
[root@backup scripts]# vi /etc/mail.rc #B端配置郵件把下面的配置命令放到這個文件的最後一行
set from=發送郵件的郵箱@163.com smtp.163.com smtp-auth-user=郵箱的客戶端授權碼 smtp-auth-password=bmw665889 smtp-auth=login
週期性定時備份及郵件通知管理員

B端服務器發送郵件腳本
#編寫腳本:

IP=$(ifconfig eth1|awk -F "[ :]+" 'NR==2{print $4}')
Path=/backup
if [ $(date +%w) -eq 0 ]
then
   Time="week_$(date +%F_%w -d "-1day")"
else
   Time=$(date +%F -d "-1day")
fi

LANG=en &&\

/bin/find /backup -type f -name "flag_${Time}*.log"|xargs md5sum -c >>$Path/${Time}_result.log 2>&1
/bin/mail -s "$Time bak result" 接受郵件的郵箱@qq.com <$Path/${Time}_result.log && \
/bin/find /backup/ -type f -mtime +180 ! -name "*week*_6*"|xargs rm -f

腳本理解:
Path=/backup =》把backup目錄賦值給Path變量
if [ $(date +%w) -eq 0 ] =》判斷語句如果
then
Time="week$(date +%F%w -d "-1day")" =》如果是週日文件加上week_減少一天的日期
else
Time=$(date +%F -d "-1day") =》否則不加文件名還是減少一天的日期
fi =》語句結束

LANG=en &&\ =》英文字符

/bin/find /backup -type f -name "flag_${Time}.log"|xargs md5sum -c >>$Path/${Time}result.log 2>&1
#/bin/find /backup -type f -name "flag
${Time}
.log" =》查找以flag_時間格式的log文件
xargs md5sum -c >>$Path/${Time}_result.log 2>&1 =》排成一行用md5sum驗證後把結果放到以backup目錄下以時間開頭_result.log文件中

/bin/mail -s "$Time bak result" [email protected] <$Path/${Time}_result.log && \ =》把md5sum驗證的結果發送郵件到[email protected]這個郵箱中

/bin/find /backup/ -type f -mtime +180 ! -name "week_6*"|xargs rm -f =》刪除180天以前的備份文件,保留每週6的文件

接觸Linux不久的小白個人理解,大神級別可以無視

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章