天天看點

linux 全網備份項目

linux全網備份項目

要求

1、基本備份要求

已知 3 台伺服器主機名分别為 web01、backup 、nfs01,主機資訊見下表:

伺服器說明 外網IP(NAT) 内網IP(NAT) 主機名稱

     nginx web 伺服器 10.0.0.8/24 172.16.1.8/24 web01

     NFS存儲伺服器 10.0.0.31/24 172.16.1.31/24 nfs01

     rsync備份伺服器 10.0.0.41/24 172.16.1.41/24 backup 

要求:每天晚上 00 點整在 Web 伺服器上打包備份系統配置檔案、網站程式目錄及通路日志并通過 rsync 指令推送備份伺服器 backup 上備份保留(備份思路可以是先在本地按日

期打包,然後再推到備份伺服器 backup 上) ,NFS 存儲伺服器同 Web 伺服器,實際工作 中就是全部的伺服器。

具體要求如下:

1)所有伺服器的備份目錄必須都為/backup。

2)要備份的系統配置檔案包括但不限于:

a.定時任務服務的配置檔案(/var/spool/cron/root)(适合 web 和 nfs 伺服器) 。

b.開機自啟動的配置檔案(/etc/rc.local)(适合 web 和 nfs 伺服器) 。

c.日常腳本的目錄 (/server/scripts)。 d.防火牆 iptables 的配置檔案(/etc/sysconfig/iptables)。

3)Web 伺服器站點目錄(/var/html/www)。

4)Web 伺服器 A 通路日志路徑(/app/logs)

5)Web 伺服器保留打包後的 7 天的備份資料即可(本地留存不能多于 7 天,因為太多硬碟會 滿)

6)備份伺服器上,保留每周一的所有資料副本,其它要保留 6 個月的資料副本。

7)備份伺服器上要按照備份資料伺服器的内網 IP 為目錄儲存備份,備份的檔案按照時間名 字儲存。

8)*需要確定備份的資料盡量完整正确,在備份伺服器上對備份的資料進行檢查,把備份的成功及失敗結 果資訊發給系統管理者郵箱中。

具體代碼如下

用戶端

#!/bin/bash

#---------------------------------------------------------------------

#定義變量

hostip=`hostname -I|awk '{print $2}'`

cd /    

varfile="./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables"

date=`date +%F-%a`

webfile="/var/html/www"

weblog="/app/logs"

mkdir /backup >/dev/null 2>&1

mkdir -p /backup/$hostip

#-------------------------------------------------------------------

#打包系統配置檔案、web站點目錄、日志通路路徑

tar -zchf /backup/${hostip}/${date}.gz.tar ./$varfile

tar -zcf /backup/${hostip}/webfile_${date}.gz.tar ./$webfile

tar -zcf /backup/${hostip}/weblog_${date}.gz.tar ./$weblog

md5sum /backup/${hostip}/* >/backup/${hostip}/md5${date}.txt

#--------------------------------------------------------------------

#清理包,因為你已經把内容傳輸過去了,留着沒有意義

find /backup/${hostip}/ -type f -mtime +7  -name "*.tar"|xargs rm -f

find /backup/${hostip}/ -type f -mtime +7  -name "md5.txt"|xargs rm -f

#通過rsync發送到備份伺服器上

rsync -a ./backup/${hostip} [email protected]::backup --password-file=/etc/rsync.password >/dev/null 2>&1

if [ $? -ne 0 ];then

echo "備份失敗"|mail -s "nfs備份情況" [email protected] >/dev/null 2>&1

fi

定時任務

crontab -e

00 00 * * * /bin/bash 檔案 >/dev/null 2>$1

服務端代碼

cd /

A=(`ls backup|xargs -n1`)

for ((i=0;i<${#A[*]};i++));do

/usr/bin/md5sum -c /backup/${A[i]}/md5`date +%F-%a`.txt >>./ceshi  2>/dev/null

a=$a[a+1]

done

/bin/mail -s "備份資料" [email protected] <./ceshi >/dev/null 2>&1

rm -f ./ceshi

find /backup/ -type f -mtime +180 ! -name "*Mon*" | xargs rm -f

#自動擷取/backup下的目錄并且比較适合多台伺服器

繼續閱讀