提問(wèn)的方法:
1.我現(xiàn)在在做什么?
測(cè)試rsync客戶端連接服務(wù)端
2.我遇到了什么問(wèn)題
截圖
3.我嘗試了什么解決辦法?
關(guān)閉firewalld關(guān)閉selinux ping 了對(duì)應(yīng)得主機(jī)
1.有關(guān)rsync守護(hù)進(jìn)程得解釋說(shuō)明
問(wèn)題1.rsync用戶與rsync_backup用戶有什么區(qū)別?
1.1 rsync用戶是rsyncd進(jìn)程運(yùn)行得用戶身份
1.2rsync_backup是rsync認(rèn)證時(shí)需要使用得虛擬用戶
問(wèn)題2.rsync.passwd與rsync.pass有什么關(guān)系?
2.1 rsync.passwd該文件主要定義虛擬用戶名稱以及 虛擬用戶對(duì)應(yīng)得密碼(服務(wù)端才能定義)
2.2 rsync.pass其實(shí)可以沒(méi)有,也可以是文件 因?yàn)檫@里面只有密碼便于我們向服務(wù)器推送文件是不需要密碼(客戶端,只能有密碼,不能有用戶名) 或者 設(shè)定環(huán)境變量 RSYNC_PASSWORD
問(wèn)題3.為什么寫入到backup中的文件或目錄屬主和屬組都是rsync呢
3.1客戶端推送文件至服務(wù)端,服務(wù)端需要以該進(jìn)程的用戶身份將文件存儲(chǔ)下來(lái),所以屬主和屬組就發(fā)生了變化( 變化為了 rsync該進(jìn)程的運(yùn)行用戶身份)
問(wèn)題4什么時(shí)候使用守護(hù)進(jìn)程模式,什么時(shí)候使用遠(yuǎn)程傳輸模式
4.1守護(hù)進(jìn)程可以設(shè)置定時(shí)任務(wù)進(jìn)行,這種常用于定期備份
4.2遠(yuǎn)程守護(hù)方式主要用于用戶臨時(shí)操作
用戶名稱:
? 遠(yuǎn)程傳輸: 系統(tǒng)用戶 root
? 守護(hù)進(jìn)程:虛擬用戶 rsync_backup
拷貝資源:
? 遠(yuǎn)程傳輸:可以是系統(tǒng)中任何路徑下的文件 使用方式 :
? 守護(hù)傳輸:固定模塊下的資源 使用方式::
今日內(nèi)容
已知3臺(tái)服務(wù)器主機(jī)名分別為web01、backup、 nfs 主機(jī)信息見(jiàn)下表
| 角色 | 外網(wǎng)(NAT) | 內(nèi)網(wǎng)IP(LAN) | 主機(jī)名稱 |
|---|---|---|---|
| WEB | eth0:10.0.0.7 | eth1:172.16.1.7 | web01 |
| NFS | eth0:10.0.0.31 | eth1:172.16.1.31 | nfs |
| Rsync | eth0:10.0.0.41 | eth1:172.16.1.41 | backup |
客戶端需求
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)磁盤空間
5.客戶端每天凌晨1點(diǎn)定時(shí)執(zhí)行該腳本
1.我們需要備份什么
/etc/rc.local /etc/fstab /etc/hosts
/var/spool/cron/ /etc/firewalld /server/scripts
2.我們要備份到哪里去
/backup目錄
該主機(jī)的主機(jī)名稱_該主機(jī)的IP地址 _今天的日期
3.我要推送到哪去
備份服務(wù)器 172.16.1.41 backup模塊
客戶端類似于:散貨———裝車———運(yùn)輸———下一個(gè)倉(cāng)庫(kù)點(diǎn)
1.我們要準(zhǔn)備一個(gè)目錄
[root@nfs ~]# mkdir -p "/backup/$(hostname)_$(ifconfig eth1 | awk '/inet / {print $2}')_$(date +%F)"
2.將文件備份到該目錄中
[root@nfs ~]# cp -r /etc/rc.local /etc/fstab /etc/hosts /backup/nfs_172.16.1.31_2020-04-15/
3.使用rsync命令進(jìn)行運(yùn)輸
[root@nfs ~]#rsync -avz /backup/ rsync_back@172.16.1.41::backup
4.保留最近7天
[root@nfs ~] find /backup -type d -mtiem +7 |xargs -rf
5.編寫定時(shí)任務(wù)
6.腳本文件
[root@backup ~]# vim /scripts/clinet_push_data.sh
#!/usr/bin/bash
#客戶端nfs服務(wù)器推送備份的數(shù)據(jù)到backup服務(wù)器
0.將目錄需要用到的主機(jī)名IP地址日期定義為變量
exprot PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Host=$(hostname)
Addr=$(ifconfig eth1 |awk '/inte / {print $2}')
Time=$(date +%F)
Path=/backup
DirName="{$Host_$Addr_$Time}"
#1.我們需要準(zhǔn)備一個(gè)目錄
[root@nfs ~]# mkdir -p "$Path/$DirName"
#2.將文件備份到該目錄
[root@nfs ~]#cd / && \
#[root@nfs ~]# cp -r /etc/rc.local/etcfstab /etc/hosts $Path$Addr
[root@nfs ~]# tar czf $Path/DirName/sys.tar.gz etc/fstab etc/hosts && \
[root@nfs ~]# tar czf $Path/DirName/other.tar.gz etc/scripts && \
[root@nfs ~]# md5sum $Path/DirName/*.tar.gz > $Path/DirName/check_flag_$Time
#3.使用rsync命令進(jìn)行傳輸
export RSYNC_PASSWORD=123456
rsync -avz $Path/ rsync_backup@172.16.1.41::backup
#4.保留本地7天的數(shù)據(jù)
find $Path -type d -mtime +7 |xargs rm -rf
服務(wù)端需求
1.服務(wù)端部署rsync,用于接收客戶端推送過(guò)來(lái)的備份數(shù)據(jù)
http://www.itdecent.cn/writer#/notebooks/45118667/notes/67186911
2.服務(wù)端需要每天校驗(yàn)客戶端推送過(guò)來(lái)的數(shù)據(jù)是否完整
3.服務(wù)端需要將每天的校驗(yàn)結(jié)果通知給管理員
根據(jù)服務(wù)端的需求這就需要我們優(yōu)化客戶端的腳本
將散貨————打包————貼上封條—————推送給服務(wù)端
2.服務(wù)端
更具客戶端推送的封條——校驗(yàn)數(shù)據(jù)是否一致,最后通知管理員
[root@backup ~]# vim /scripts/check_clint_data.sh
#!/usr/bin/bash
#檢查客戶端推送的數(shù)據(jù) by xiaolai
#0.將目錄需要的主機(jī)名 ip 時(shí)間定義為變量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Time=$(date +%F)
Path=/backup
#1.找到當(dāng)天的check_flag文件,校驗(yàn)數(shù)據(jù)是否完整并將校驗(yàn)的結(jié)果存儲(chǔ)至某個(gè)文件
find /backup/nfs/ -type f -name check_flag_$Time |xargs md5sum -c >$Path/result_$Time
mail -s "Rsync Bachup %Time" 1026044751@qq.com < $Path/result_$Time
#4.服務(wù)端僅保留6個(gè)月的備份數(shù)據(jù),其余全部刪除
find $Path -type d -mtime +180 |xargs rm-rf
2.1在服務(wù)端配置發(fā)件人郵箱賬號(hào)密碼
[root@backup ~]# vim /etc/mail.rc
set from=123@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=123@qq.com
set smtp-auth-password=#客戶端授權(quán)碼zaxgohuyknnrbdgs
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
3.如何快速備份一臺(tái)新的機(jī)器
[root@web01 ~]# rsync -azv root@172.16.1.31:/scripts/clinet_push_data.sh /scripts/
[root@web01 ~]#chmod +x /scripts/clinet_push_data.sh
[root@web01 ~]# sh /scripts/clinet_push_data.sh
然后給所有的客戶端配置定時(shí)任務(wù)
給服務(wù)端配置定時(shí)任務(wù)
附:完整的腳本文件
客戶端的腳本文件
[root@nfs ~]# cat /scripts/clinet_push_data.sh
#!/usr/bin/bash
# 客戶端推送備份的數(shù)據(jù)至備份服務(wù)器 by oldxu
#0.將目錄需要用的主機(jī)名,IP,時(shí)間,定義為變量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Host=$(hostname)
Addr=$(ifconfig eth1 | awk '/inet / {print $2}')
Time=$(date +%F)
Path=/backup
DirName="${Host}_${Addr}_${Time}"
#1.我們要準(zhǔn)備一個(gè)目錄
mkdir -p "$Path/$DirName"
#2.將文件備份到該目錄中
cd / && \
tar czf $Path/$DirName/sys.tar.gz etc/rc.local etc/fstab && \
tar czf $Path/$DirName/other.tar.gz etc/hosts scripts && \
md5sum $Path/$DirName/*.tar.gz > $Path/$DirName/check_flag_$Time
#3.使用rsync命令進(jìn)行運(yùn)輸
export RSYNC_PASSWORD=123456
rsync -avz $Path/ rsync_backup@172.16.1.41::backup
#4.保留本地7天的數(shù)據(jù)
find $Path -type d -mtime +7 | xargs rm -rf
服務(wù)端的腳本文件
[root@backup ~]# cat /scripts/check_clinet_data.sh
#!/usr/bin/bash
# 檢查客戶端推送的數(shù)據(jù) by oldxu
#0.將目錄需要用的主機(jī)名,IP,時(shí)間,定義為變量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Time=$(date +%F)
Path=/backup
#1.找到當(dāng)天的check_flag文件,校驗(yàn)數(shù)據(jù)是否是完整的,并且將校驗(yàn)結(jié)果存儲(chǔ)至某個(gè)文件中
find $Path/ -name "check_flag_$Time"|xargs md5sum -c > $Path/result_$Time
#3.將校驗(yàn)的結(jié)果通知給管理人員
mail -s "Rsync Backup $Time" 1026044760@qq.com <$Path/result_$Time
#4.服務(wù)端僅保留6個(gè)月的備份數(shù)據(jù),其余的全部刪除
find $Path -type d -mtime +180 | xargs rm -rf