第一章 rsync介紹
作?:
Rsync是?款開源的傳輸?具,可以?于不同主機(jī)之間同步傳輸數(shù)據(jù),可以實(shí)現(xiàn)全量備份與增量備份
運(yùn)?端?:
rsync默認(rèn)運(yùn)?端?:873
?作模式:
rsync有三種?作模式:
1.本地模式:類似于cp命令,不常?
2.遠(yuǎn)程模式:常?,在不同的主機(jī)之間傳輸數(shù)據(jù)
3.后臺(tái)服務(wù)模式:常?,?于實(shí)時(shí)同步數(shù)據(jù),安全性較好
第二章 備份?式介紹
1.備份的?式
從備份的?式來(lái)說(shuō),共有兩種備份:
1.全量備份:將客戶端所有的數(shù)據(jù)內(nèi)容全部備份至服務(wù)端(效率低下,占用空間)
2.增量備份:將客戶端的增量備份至服務(wù)端(提高備份效率,節(jié)省空間,適合異地備份)
2.備份的架構(gòu)

第三章 rsync本地模式和遠(yuǎn)程模式
1.命令說(shuō)明 (1V4)
安裝命令:
yum install rsync -y
命令格式:
Usage:
#本地模式
rsync [OPTION]... SRC [SRC]... DEST
1)本地備份:
src: 要備份的數(shù)據(jù)信息
dest:備份到什么路徑中
#遠(yuǎn)程服務(wù)模式,推送的?式,將??的數(shù)據(jù)發(fā)送到遠(yuǎn)程服務(wù)器
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
#遠(yuǎn)程服務(wù)模式,拉取的?式,從遠(yuǎn)程服務(wù)器拉取數(shù)據(jù)
rsync [OPTION]... [USER@]HOST:SRC [DEST]
rsync [OPTION]... [USER@]HOST::SRC [DEST]
2.本地模式
a. 本地備份數(shù)據(jù)(cp)
[root@nf01 backup]# cp /etc/host /tmp
[root@nf01 backup]# ll /tmp/host
-rw-r--r-- 1 root root 371 May 6 16:11 /tmp/hosts
[root@nf01 backup]# rsync /etc/host /tmp/host_rsync
[root@nf01 backup]# ll /tmp/host_rsync
-rw-r--r-- 1 root root 371 May 6 16:12 /tmp/host_rsync
b. 遠(yuǎn)程備份數(shù)據(jù)
說(shuō)明:scp命令它是全量模式備份
01.命令語(yǔ)法格式說(shuō)明:
2)遠(yuǎn)程備份數(shù)據(jù):(#最好是以root身份進(jìn)行遠(yuǎn)程傳輸,因?yàn)橛嘘P(guān)權(quán)限要求)
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
[USER@] --- 以什么用戶身份拉取數(shù)據(jù)(默認(rèn)以當(dāng)前用戶)
HOST --- 指定遠(yuǎn)程主機(jī)ip地址或者主機(jī)名稱
SRC --- 要拉取的數(shù)據(jù)信息
dest --- 保存到本地的路徑信息
Push: rsync [OPTION...] SRC:... [USER@]HOST:DEST
SRC --- 本地要進(jìn)行遠(yuǎn)程傳輸備份的數(shù)據(jù)
[USER@] --- 以什么用戶身份推送數(shù)據(jù)(默認(rèn)以當(dāng)前用戶)
HOST --- 指定遠(yuǎn)程主機(jī)ip地址或者主機(jī)名稱
dest --- 保存到遠(yuǎn)程的路徑信息
實(shí)例演示如下:
1.從存儲(chǔ)服務(wù)器主機(jī)上的/etc/hosts文件拉取到本地的/backup目錄下(默認(rèn)為root用戶)
[root@nf01 ~]# rsync -rp /etc/hosts 10.0.0.41:/backup/hosts_rsync
root@10.0.0.41's password:
2.如以oldboy的身份從存儲(chǔ)服務(wù)器主機(jī)上的/etc/hosts文件拉取到本地的/backup目錄下
[root@backup ~]# rsync -rp oldboy@nfs01:/etc/hosts /backup
oldboy@nf101's password:
[root@backup ~]# ll /backup/
-rw-r--r-- 1 root root 434 Jan 25 00:01 hosts
#若以olddog的身份從存儲(chǔ)服務(wù)器主機(jī)上的/etc/hosts文件拉取到本地的/backup目錄下,會(huì)報(bào)錯(cuò)
[root@backup ~]# rsync -rp olddog@10.0.0.31:/etc/hosts /backup
###
#說(shuō)明:首先備份服務(wù)器上要有olddog用戶,存儲(chǔ)服務(wù)器上也要相應(yīng)的olddog用戶,其次還得要有權(quán)限(屬主屬組)
[root@backup ~]# ll /backup/
-rw-r--r-- 1 olddog olddog 434 Jan 25 00:01 hosts
3.需求把存儲(chǔ)服務(wù)器里的/etc/hosts文件備份到備份服務(wù)器指定的目錄下
[root@nf01 ~]# scp -rp /etc/hosts root@10.0.0.41:/backup
root@10.0.0.41's password:
hosts 100% 371 42.8KB/s 00:00
-r --- 遞歸復(fù)制傳輸數(shù)據(jù)
-p --- 保持文件屬性信息不變
[root@nf01 ~]# rsync -rp /etc/hosts root@10.0.0.41:/backup/hosts_rsync
root@10.0.0.41's password:
##說(shuō)明以上備份的都是文件
02.rsync遠(yuǎn)程備份目錄--(rsync命令它是增量模式備份:如果執(zhí)行命令多次,它會(huì)進(jìn)行比較看是否已有)
[root@nf01 ~]# rsync -rp /oldboy root@10.0.0.41:/backup (備份的目錄后面沒(méi)有'/')
root@10.0.0.41's password:
[root@backup ~]# ll /backup
total 0
drwxr-xr-x 2 root root 48 May 6 16:22 oldboy
[root@backup ~]# tree /backup/
/backup/
|--oldboy
|-- oldboy01.txt
|-- oldboy02.txt
|-- oldboy03.txt
[root@nf01 ~]# rsync -rp /oldboy/ root@10.0.0.41:/backup (備份的目錄后面有'/')
root@10.0.0.41's password:
[root@backup ~]# ll /backup
total 0
-rw-r--r-- 1 root root 0 Dec 18 17:17 oldboy01.txt
-rw-r--r-- 1 root root 0 Dec 18 17:17 oldboy02.txt
-rw-r--r-- 1 root root 0 Dec 18 17:17 oldboy03.txt
03.總結(jié):在使用rsync備份目錄時(shí)
備份目錄后面有 / -- /oldboy/:只將目錄下的內(nèi)容進(jìn)行備份傳輸
備份目錄后面沒(méi)有/ -- /oldboy: 會(huì)將目錄本身及下面的內(nèi)容進(jìn)行傳輸備份
c.替代刪除命令(rm)
[root@nf01 ~]# mkdir /unll
[root@nf01 ~]# ll /null/
total 0
[root@nf01 ~]# rsync -rp --delete /null 10.0.0.41:/backup
root@10.0.0.41's password:
--delete 實(shí)現(xiàn)無(wú)差異同步數(shù)據(jù)
#說(shuō)明:
無(wú)差異指的是我這個(gè)'null'目錄沒(méi)有數(shù)據(jù),那么你/backup/目錄下也就沒(méi)有,用--delete就實(shí)現(xiàn)這個(gè)目的,
也會(huì)把你/backup/目錄中跟我不一樣的文件也會(huì)一并刪除,這就叫無(wú)差異同步
面試題目:有一個(gè)存儲(chǔ)數(shù)據(jù)信息的目錄,目錄中數(shù)據(jù)存儲(chǔ)了50G數(shù)據(jù),如何將目錄中的數(shù)據(jù)快速刪除: rm /目錄/* -rf
使用rm命令刪除小文件可以,但刪除大文件效率極低,因?yàn)樗獜拇疟P讀取數(shù)據(jù);故刪除大文件時(shí)則用rsync命令效率高
d.替代查看文件命令(ls)
[root@backup ~]# ls /etc/hosts
/etc/hosts
[root@backup ~]# rsync /etc/hosts
-rw-r--r-- 371 2019/08/08 12:12:12 hosts
3.遠(yuǎn)程模式
#PUSH 推送模式
rsync -avz bakup41.txt 10.0.0.7:/root/
#PULL 拉取模式
rsync -avz 10.0.0.7:/root/web.txt /opt/web-41.txt
#傳輸目錄注意
rsync -avz dir1 10.0.0.7:/root/ #傳輸整個(gè)目錄,包含目錄本身
rsync -avz dir1/ 10.0.0.7:/root/ #只傳輸目錄下的文件,不包含目錄本身
#不同主機(jī)之間同步數(shù)據(jù)
rsync -avz /root/html/ 10.0.0.41:/backup/web-7/
rsync -avz --delete /root/html/ 10.0.0.41:/backup/web-7/
#坑:如果/和一個(gè)空目錄進(jìn)行完全同步,那么效果和刪根一樣
rsync -avz --delete 10.0.0.41:/backup/web-7/ /
#坑:傳輸過(guò)程不限速導(dǎo)致帶寬被占滿
dd if=/dev/zero of=/root/5G.txt bs=100M count=50
rsync -avzP --bwlimit=50 5G.txt 10.0.0.7:/opt/
第四章 rsync服務(wù)模式-服務(wù)端配置
1.為什么需要服務(wù)模式
Rsync借助SSH 協(xié)議同步數(shù)據(jù)存在的缺陷:
1.使用系統(tǒng)用戶(不安全)
2.使用普通用戶(會(huì)導(dǎo)致權(quán)限不足情況)
3.守護(hù)進(jìn)程傳輸方式:rsync自身非常重要的功能(不使用系統(tǒng)用戶,更加安全)
2.rsync服務(wù)端部署
1) 安裝rsync
yum install rsync -y
2) 修改配置文件
cat > /etc/rsyncd.conf << 'EOF'
uid = www
gid = www
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
[data]
path = /data
EOF
3) 配置文件解釋
uid = www # 運(yùn)行進(jìn)程的用戶
gid = www # 運(yùn)行進(jìn)程的用戶組
port = 873 # 監(jiān)聽端口
fake super = yes # 無(wú)需讓 rsync 以 root 身份運(yùn)行,允許接收文件的完整屬性
use chroot = no # 禁錮推送的數(shù)據(jù)至某個(gè)目錄, 不允許跳出該目錄
max connections = 200 # 最大連接數(shù)
timeout = 600 # 超時(shí)時(shí)間
ignore errors # 忽略錯(cuò)誤信息
read only = false # 對(duì)備份數(shù)據(jù)可讀寫
list = false # 不允許查看模塊信息
auth users = rsync_backup # 定義虛擬用戶,作為連接認(rèn)證用戶
secrets file = /etc/rsync.passwd # 定義 rsync 服務(wù)用戶連接認(rèn)證密碼文件路徑
[backup] # 定義模塊信息
comment = commit # 模塊注釋信息
path = /backup # 定義接收備份數(shù)據(jù)目錄
4) 創(chuàng)建用戶以及數(shù)據(jù)目錄
[root@backup-41 ~]# useradd -u 1000 -M -s /sbin/nologin www
[root@backup-41 ~]# id www
uid=1000(www) gid=1000(www) groups=1000(www)
[root@backup-41 ~]# mkdir /data
[root@backup-41 ~]# mkdir /backup
[root@backup-41 ~]# chown -R www:www /data/
[root@backup-41 ~]# chown -R www:www /backup/
5) 創(chuàng)建虛擬用戶密碼文件并授權(quán)
[root@backup-41 ~]# cat /etc/rsync.passwd
rsync_backup:oldboy
[root@backup-41 ~]# chmod 600 /etc/rsync.passwd
[root@backup-41 ~]# ll /etc/rsync.passwd
-rw------- 1 root root 20 Apr 20 10:54 /etc/rsync.passwd
5) 加入開機(jī)自啟動(dòng)
[root@backup-41 ~]# systemctl start rsyncd
6) 檢查服務(wù)是否運(yùn)行
[root@backup-41 ~]# ps -ef|grep [r]sync
root 12312 1 0 10:58 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
[root@backup-41 ~]# netstat -lntup|grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 12312/rsync
tcp6 0 0 :::873 :::* LISTEN 12312/rsync
第五章 rsync服務(wù)模式-客戶端配置
1) 安裝rsync
[root@web-7 ~]# yum install rsync -y
2) 配置密碼文件及授權(quán)
方法1:將密碼寫入文件
[root@web-7 ~]# echo "oldboy" > /etc/rsync.pass
[root@web-7 ~]# chmod 600 /etc/rsync.pass
[root@web-7 ~]# cat /etc/rsync.pass
oldboy
[root@web-7 ~]# ll /etc/rsync.pass
-rw------- 1 root root 7 Apr 20 11:16 /etc/rsync.pass
[root@web-7 ~]# rsync -avz --password-file=/etc/rsync.pass /root/web-7.txt rsync_backup@10.0.0.41::backup
[root@web-7 ~]# rsync -avz --password-file=/etc/rsync.pass /root/web-7.txt rsync_backup@10.0.0.41::data
方法2:使用環(huán)境變量-推薦
[root@web-7 ~]# export RSYNC_PASSWORD=oldboy
[root@web-7 ~]# rsync -avz /root/web-7.txt rsync_backup@10.0.0.41::backup
[root@web-7 ~]# rsync -avz /root/web-7.txt rsync_backup@10.0.0.41::data
疑問(wèn)??
問(wèn)題1:配置文件運(yùn)行用戶是www,為什么進(jìn)程里是root
[root@backup-41 ~]# ps -ef|grep [r]sync
root 12312 1 0 10:58 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
原因:
因?yàn)閣ww進(jìn)程是工作進(jìn)程,只有出現(xiàn)任務(wù)的時(shí)候才會(huì)被創(chuàng)建啟動(dòng)
問(wèn)題2:發(fā)送主機(jī)的文件是root用戶的,為什么接收過(guò)來(lái)顯示是www用戶
原因:
配置文件里控制,無(wú)論客戶端的文件是什么用戶,接收文件時(shí)都強(qiáng)制轉(zhuǎn)換成www用戶
第六章 rsync排錯(cuò)指南
1.報(bào)錯(cuò)1
[root@backup-41 ~]# rsync -avz bakup41.txt 10.0.0.7:/root/
root@10.0.0.7's password:
bash: rsync: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.2]
原因:
使用rsync傳輸,需要兩邊機(jī)器都安裝有rsync軟件
yum install rsync -y
2.報(bào)錯(cuò)2
[root@web-7 ~] # rsync -avz /root/111.txt rsync_backup@10.0.0.41::backup
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2]
原因:
密碼文件里的虛擬用戶名寫錯(cuò)了
3.報(bào)錯(cuò)3
[root@web-7 ~]# rsync -avz /root/web-7.txt rsync_backup@10.0.0.41::backup
rsync: failed to connect to 10.0.0.41 (10.0.0.41): Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]
原因:
服務(wù)端啟動(dòng)命令出錯(cuò),少加了d
systemctl start rsyncd
4.報(bào)錯(cuò)4
[root@web-7 ~]#rsync -avz /root/web-7.txt rsync_backup@10.0.0.41::backup
@ERROR: Unknown module 'backup'
rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2]
原因:
[root@backup-41 ~]#cat /etc/rsyncd.conf
cat > /etc/rsyncd.conf << 'EOF'
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
#省略部分信息
復(fù)制粘貼沒(méi)有看清楚,直接一把梭了
5.報(bào)錯(cuò)5
[root@web-7 ~]# rsync -avz /root/a/123.txt rsync_backup@10.0.0.41::backup
Password:
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2]
原因:
客戶端沒(méi)有配置密碼
客戶端密碼出錯(cuò)
6.報(bào)錯(cuò)6
[root@web-7 ~]# export RSYNC_PASSWORD=oldboy
[root@web-7 ~]# rsync -avz /root/456.txt rsync_backup@10.0.0.41::backup
@ERROR: Unknown module 'backup'
rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2]
原因:
#####################################
##[backup]
##comment = welcome to oldboyedu backup!
##path = /backup
##
##[data]
##path = /data
#
[root@backup-41 ~]# cat /etc/rsync.passwd
cat: /etc/rsync.passwd: No such file or directory
1.配置文件注釋有問(wèn)題
2.沒(méi)有創(chuàng)建密碼文件
7.報(bào)錯(cuò)7
[root@ceisi tmp]# rsync -avzP /tmp/wordpress rsync_backup@10.0.0.7::backup
rsync: failed to connect to 10.0.0.7 (10.0.0.7): No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]
原因:
#防火墻沒(méi)有關(guān)閉
[root@backup ~]# iptables -nL
[root@backup ~]# systemctl stop firewalld.service
第七章 rsync服務(wù)模式實(shí)戰(zhàn)
1.客戶端推送 /backup?錄下所有內(nèi)容?rsync服務(wù)端
export RSYNC_PASSWORD=oldboy
rsync -avz /backup/ rsync_backup@172.16.1.41::backup
2.客戶端拉取rsync服務(wù)端backup模塊數(shù)據(jù)?本地客戶端的/backup?錄
export RSYNC_PASSWORD=oldboy123
rsync -avz rsync_backup@172.16.1.41::backup /backup/
3.rsync 實(shí)現(xiàn)數(shù)據(jù)?差異同步
#拉取遠(yuǎn)端數(shù)據(jù):遠(yuǎn)端與本地保持?致,遠(yuǎn)端沒(méi)有本地有會(huì)被刪除, 造成客戶端數(shù)據(jù)丟失
export RSYNC_PASSWORD=oldboy
rsync -avz --delete rsync_backup@172.16.1.41::backup /data/
#推送數(shù)據(jù)?遠(yuǎn)端:本地與遠(yuǎn)端保持?致, 本地沒(méi)有遠(yuǎn)端會(huì)被刪除, 造成服務(wù)器端數(shù)據(jù)丟失
export RSYNC_PASSWORD=oldboy
rsync -avz --delete /data/ rsync_backup@172.16.1.41::backup
4.rsync的 Limit 限速
#企業(yè)案例: 某 DBA 使? rsync 拉取備份數(shù)據(jù)時(shí),由于?件過(guò)?導(dǎo)致內(nèi)部交換機(jī)帶寬被沾滿,導(dǎo)致?戶的請(qǐng)求?法響應(yīng)
export RSYNC_PASSWORD=oldboy
rsync -avz --bwlimit=1 rsync_backup@172.16.1.41::backup /data/
第八章 全網(wǎng)備份項(xiàng)目
<<每日備份任務(wù)需求>>
客戶端需求:
1.客戶端每天凌晨1點(diǎn)在服務(wù)器本地打包備份(/etc目錄和/var/log目錄) ;
2.客戶端備份的數(shù)據(jù)必須存放至以 "主機(jī)名_ip地址_當(dāng)前時(shí)間" 命名的目錄中;
3.客戶端最后通過(guò)rsync推送本地已經(jīng)打包好的備份文件至backup服務(wù)器 ;
4.客戶端服務(wù)器本地保留最近7天的數(shù)據(jù),避免浪費(fèi)磁盤空間.
服務(wù)端需求:
1.服務(wù)端部署rsync,用于接收客戶端推送過(guò)來(lái)的備份數(shù)據(jù) ;
2.服務(wù)端需要每天校驗(yàn)客戶端推送過(guò)來(lái)的數(shù)據(jù)是否完整;
3.服務(wù)端需要每天校驗(yàn)的結(jié)果通知給管理員 ;
4.服務(wù)端僅保留6個(gè)月的備份數(shù)據(jù),其余的全部刪除 ;
注意:所有服務(wù)器的備份目錄必須都為/backup;
<< 解決方案思路如下:將多個(gè)任務(wù)需求進(jìn)行拆分 >>
A:客戶端需求拆解
1.打包備份
客戶端每天凌晨1點(diǎn)在服務(wù)器本地打包備份(/etc目錄和/var/log目錄)
cd /
tar zcvf etc.tar.gz etc
tar zcvf log.tar.gz var/log
2.目錄命名
客戶端備份的數(shù)據(jù)必須存放至以 "主機(jī)名ip地址當(dāng)前時(shí)間" 命名的目錄中,期望的結(jié)果:
web-7_172.16.1.7_2021-04-21
命令拆解:
主機(jī)名: hostname
ip地址: ifconfig eth1|awk 'NR==2{print $2}'
當(dāng)前時(shí)間: date +%F
命令拼接:
mkdir -p /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)
3.文件傳輸
rsync -avz /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F) rsync_backup@172.16.1.41::backup
4.刪除過(guò)期文件
find /backup -mtime +7 |xargs rm -rf
5.最終腳本
現(xiàn)在shell里面運(yùn)行:
mkdir -p /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)
cd /
tar zcvf /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)/etc.tar.gz etc
tar zcvf /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)/log.tar.gz var/log
rsync -avz /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F) rsync_backup@172.16.1.41::backup
find /backup -mtime +7 |xargs rm -rf
然后再寫入腳本,注意,要添加注釋:
6.最終客戶端備份腳本
[root@ceisi scripts]# vim back_cm.sh
#!/bin/bash
#time:2021-04-21 name: date_backup by:tan
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export RSYNC_PASSWORD=oldboy123
#1.創(chuàng)建備份目錄
mkdir /backup/ -p
#2.本地打包備份
cd /
tar -cf backup/$(hostname)_$(ifconfig eth0|awk 'NR==2{print $2}')_$(date +%F).etc.tar.gz etc
tar -cf backup/$(hostname)_$(ifconfig eth0|awk 'NR==2{print $2}')_$(date +%F).log.tar.gz var/log
#3.將打包文件生成指紋件
md5sum /backup/*.tar.gz >/backup/$(hostname)_$(ifconfig eth0|awk 'NR==2{print $2}')_$(date +%F).finger.txt
#4.將本地備份文件推送到備份服務(wù)器
rsync -az /backup/$(hostname)_$(ifconfig eth0|awk 'NR==2{print $2}')_$(date +%F).finger.txt rsync_backup@10.0.0.200::backup
rsync -az /backup/*.tar.gz rsync_backup@10.0.0.200::backup
#5.保留最近7天的數(shù)據(jù)
find /backup/ -time +7|xargs rm -rf
7.客戶端定時(shí)任務(wù)
[root@ceisi scripts]# crontab -l
#time sync by oldboy at 2021-01-24
* * * * * /usr/sbin/ntpdate time1.aliyun.com >/dev/null 2>&1
#數(shù)據(jù)備份
#time=2021-04-21 by=tan
00 01 * * * /bin/bash /server/scripts/back_cm.sh 2>&1
B.服務(wù)端需求拆解
1.服務(wù)部署
服務(wù)端部署rsync,用于接收客戶端推送過(guò)來(lái)的備份數(shù)據(jù)
#!/bin/bash
yum install rsync -y
cat > /etc/rsyncd.conf << 'EOF'
uid = www
gid = www
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
EOF
useradd -u 1000 -M -s /sbin/nologin www
mkdir -p /{backup,data}
chown -R www:www /{backup,data}
echo "rsync_backup:oldboy" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
systemctl start rsyncd
2.校驗(yàn)數(shù)據(jù)完整性
服務(wù)端需要每天校驗(yàn)客戶端推送過(guò)來(lái)的數(shù)據(jù)是否完整
3.郵件通知
#1.安裝配置mailx:
yum install mailx -y
#2.郵箱配置文件
cat > /etc/mail.rc << 'EOF'
set from=526195417@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=526195417@qq.com
set smtp-auth-password=xxxxxxxx
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
EOF
#3.服務(wù)端生成校驗(yàn)結(jié)果文件:
md5sum -c /backup/md5.txt > /backup/check.txt
#4.校驗(yàn)發(fā)送命令
mail -s "check-rsync-$(date +%F)" 526195417@qq.com < /backup/check.txt
4.刪除過(guò)期文件
find /backup -mtime +180 |xargs rm -rf
5.最終服務(wù)端檢查備份腳本
#!/bin/bash
#time:2021-04-21 name:check_backup by:tan
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#1.部署rsync服務(wù)
#bash /server/scripts/rsync_sv.sh
#2.校驗(yàn)客戶端推送過(guò)來(lái)的數(shù)據(jù)是否完整
md5sum -c /backup/ceisi_10.0.0.100_$(date +%F).finger.txt >/backup/check.txt
#3.每天校驗(yàn)的結(jié)果郵件通知
mail -s "$(date +%F)_log" 1987623828@qq.com </backup/check.txt
#4.僅保留6個(gè)月的備份數(shù)據(jù),其余的全部刪除
find /backup/ -mtime +180|xargs rm -rf
6.服務(wù)端檢查備份定時(shí)任務(wù)
[root@oldboy scripts]# crontab -l
#time sync by oldboy at 2021-01-24
* * * * * /usr/sbin/ntpdate time1.aliyun.com >/dev/null 2>&1
#檢查備份數(shù)據(jù)是否完整
#time:2012-04-21 by:tan
00 01 * * * /bin/bash /server/scripts/check_backup.sh 2>&1