一、項(xiàng)目結(jié)構(gòu)圖

二、服務(wù)端環(huán)境配置
1、環(huán)境初始化
1.安裝
[root@backup ~]# yum install rsync -y
2.配置 ( 改變程序運(yùn)行軌跡 )
[root@backup ~]# cat /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup
3.根據(jù)配置創(chuàng)建一些初識(shí)環(huán)境:
3.1創(chuàng)建rsync用戶? ? rsync程序需要rsync這個(gè)用戶來(lái)運(yùn)行
[root@backup ~]# groupadd rsync
[root@backup ~]# useradd -M -s /sbin/nologin rsync -g rsync
[root@backup ~]# id rsync
uid=1000(rsync) gid=1000(rsync) groups=1000(rsync)
3.2 虛擬用戶? ? /etc/rsync.passwd? ? ? username:password
[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd
[root@backup ~]# chmod 600 /etc/rsync.passwd
3.3 創(chuàng)建一個(gè)/backup目錄
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync.rsync /backup/
4.啟動(dòng)
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
5.檢測(cè)
[root@backup ~]# netstat -lntp | grep 873
tcp? ? ? ? 0? ? ? 0 0.0.0.0:873? ? ? 0.0.0.0:*? ? ? ? LISTEN? ? 8616/rsync?

2、發(fā)郵件的環(huán)境初始化
[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/

三、服務(wù)端腳本編寫(xiě)
[root@backup ~]# cat /scripts/check_data_notify.sh
#!/usr/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Src=/backup
Date=$(date +%F)
#1.校驗(yàn)每天客戶端推送過(guò)來(lái)的flag數(shù)據(jù)
md5sum -c ${Src}/*_${Date}/flag_${Date} >${Src}/result_${Date}
#2.郵件通知管理員
mail -s "Rsync Backup ${Date}" 收件人@qq.com < ${Src}/result_${Date}
#3.保留最近180天的數(shù)據(jù)
find $Src/ -type d -mtime +180 | xargs rm -rf

四、客戶端
1、客戶端腳本編寫(xiě)
[root@nfs ~]# mkdir /scripts
[root@nfs ~]# vim /scripts/clinet_push_data_server.sh
#!/usr/bin/bash
# variables == 變量? ---> 一個(gè)固定的字符串表示一個(gè)不固定的值
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Src=/backup
Host=$(hostname)
Addr=$(ifconfig eth1 | awk 'NR==2 {print $2}')
Date=$(date +%F)
Dest=${Host}_${Addr}_${Date}
#1.準(zhǔn)備對(duì)應(yīng)的備份目錄
[ -d $Src/$Dest ] ||? mkdir -p $Src/$Dest
#2.將文件拷貝至備份目錄
cd / && \
[ -f $Src/$Dest/sys.tar.gz ] ||? tar czf $Src/$Dest/sys.tar.gz etc/fstab etc/hosts etc/passwd && \
[ -f $Src/$Dest/other.tar.gz ] || tar czf $Src/$Dest/other.tar.gz var/spool/cron/ scripts/ && \
#3.添加標(biāo)記
[ -f $Src/$Dest/flag_${Date} ] ||? md5sum $Src/$Dest/*.tar.gz > $Src/$Dest/flag_${Date}
#4.推送數(shù)據(jù)至遠(yuǎn)程倉(cāng)庫(kù)
export RSYNC_PASSWORD=123456
rsync -avz $Src/ rsync_backup@172.16.1.41::backup
#5.保留本地最近7天的數(shù)據(jù)
find $Src/ -type d -mtime +7 | xargs rm -rf

2、定時(shí)任務(wù)
#定時(shí)執(zhí)行打包腳本,將備份文件和校驗(yàn)flag推送到服務(wù)端
*/1 * * * * sh /scripts/script_clinet_bash.sh? >/dev/null

五、QQ郵箱收到郵件
