客戶端需求
1.客戶端提前準(zhǔn)備存放的備份的目錄梧乘,目錄規(guī)則如下:/backup/nfs_172.16.1.31_2018-09-02
2.客戶端在本地打包備份(系統(tǒng)配置文件剃斧、應(yīng)用配置等)拷貝至/backup/nfs_172.16.1.31_2018-09-02
3.客戶端最后將備份的數(shù)據(jù)進(jìn)行推送至備份服務(wù)器
4.客戶端服務(wù)器本地保留最近7天的數(shù)據(jù), 避免浪費(fèi)磁盤空間
4.客戶端每天凌晨1點(diǎn)定時執(zhí)行該腳本
服務(wù)端需求
1.服務(wù)端部署rsync雷厂,用于接收客戶端推送過來的備份數(shù)據(jù)
2.服務(wù)端需要每天校驗(yàn)客戶端推送過來的數(shù)據(jù)是否完整
3.服務(wù)端需要每天校驗(yàn)的結(jié)果通知給管理員
4.服務(wù)端僅保留6個月的備份數(shù)據(jù),其余的全部刪除
注意:所有服務(wù)器的備份目錄必須都為/backup
客戶端設(shè)置
1.準(zhǔn)備對應(yīng)的備份目錄
2.將文件拷貝至備份目錄
3.添加標(biāo)記
4.推送數(shù)據(jù)至遠(yuǎn)程倉庫
5.保留本地最近7天的數(shù)據(jù)
解決系統(tǒng)變量問題
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
客戶端腳本內(nèi)容
[root@web01 script]# vim web01_copy.sh
#!/bin/sh
#解決環(huán)境變量不解析
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
File=/backup
Host=$(hostname)
Ip=$(ifconfig eth1|awk 'NR==2{print $2}')
Day=$(date +%F)
Path=${File}/${Host}_${Ip}_${Day}
#創(chuàng)建目錄
[ -d $Path ] || mkdir -p $Path
#備份重要內(nèi)容
cd / && \
[ -f $Path/web.tar.gz ] || tar zcf $Path/web.tar.gz etc/hosts script && \
[ -f $Path/etc.tar.gz ] || tar zcf $Path/etc.tar.gz etc && \
#md5校驗(yàn)
[ -f $Path/flag_$Ip ] || md5sum $Path/*.tar.gz >$Path/flag_$Day
#設(shè)置rsync_password 變量
export RSYNC_PASSWORD=123456
#推送
/usr/bin/rsync -avz $File/ rsync_backup@172.16.1.41::backup &>/dev/null
#刪除七天前目錄
find $File/ -type d -name "${Host}_${Ip}*" -mtime +7 |xargs rm -rf
服務(wù)端設(shè)置
1.服務(wù)端配置郵件功能
[root@backup /]# yum install mailx -y
[root@backup /]# vim /etc/mail.rc #跳轉(zhuǎn)至最后一行,然后進(jìn)入編輯模式
set from=發(fā)件人@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=發(fā)件人@qq.com
set smtp-auth-password=xxxx
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
2.測試一下是否能發(fā)送成功
mail -s "測試一下" 收件人@qq.com < /etc/hosts
服務(wù)端腳本內(nèi)容
[root@backup backup]# vim /script/jiaoyan.sh
#!/bin/sh
#解決環(huán)境變量不解析
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
File=/backup
Host=$(hostname)
Day=$(date +%F)
#md5校驗(yàn)后追加到文件
md5sum -c ${File}/*_$Day/flag_${Day} >${File}/md5_${Day}
#文件郵件發(fā)送
mail -s "rsync_backup ${Dya}" 1076799967@qq.com <${File}/md5_${Day} &>/dev/null
#保留最近180天文件
find $File/ -type d -name "*_*_*" -mtime +180|xargs rm -rf
定時任務(wù)
客戶端
[root@web01 ~]# crontab -l
#定時備份數(shù)據(jù)
*/1 * * * * sh /script/web01_copy.sh &>/dev/null
服務(wù)端
[root@backup ~]# crontab -l
#定時校驗(yàn)備份的結(jié)果
*/1 * * * * sh /script/jiaoyan.sh &>/dev/null