rsync安裝部署

第一章 Rsync 基本概述

rsync 是一款開源的備份工具村象,可以在不同主機(jī)之間進(jìn)行同步昵济,可實(shí)現(xiàn)全量備份與增量備份涮坐,因此非常適合用于架構(gòu)集中式備份或異地備份等應(yīng)用。
rsync 官方地址: 傳送門 [http://rsync.samba.org](https://links.jianshu.com/go?to=http%3A%2F%2Frsync.samba.org)
rsync 監(jiān)聽端口: 873
rsync 運(yùn)行模式: C/S

第二章 Rsync應(yīng)用場(chǎng)景

2.1 備份方式:

既然需要備份讶凉,那么我們應(yīng)該了解備份的方式
完全備份
增量備份
假設(shè)客戶端上有 file1 file2 file3 文件腮猖,服務(wù)端上有 file1 文件,現(xiàn)要將客戶端上的數(shù)據(jù)備份至服務(wù)端
完全備份方式:

image

增量備份方式:

image

2.2 備份架構(gòu):

image
image
image
image

第三章 Rsync三種模式

3.1 本地模式

[root@backup ~]# echo 123 > test.txt
[root@backup ~]# cat test.txt 
123
[root@backup ~]# rsync test.txt /tmp/
[root@backup ~]# cat /tmp/test.txt 
123

3.2 遠(yuǎn)程模式

下載方式:

rsync -avz root@10.0.1.31:/root/test.txt /tmp

上傳方式:

rsync -avz oldzhang.txt root@10.0.1.31:/tmp

拉取目錄

rsync -avz root@172.16.1.31:/etc/hostname ./  #拉取遠(yuǎn)程文件
rsync -avz root@172.16.1.31:/root/ /backup/   #拉取遠(yuǎn)程目錄下的所有文件
rsync -avz root@172.16.1.31:/root /backup/    #拉取遠(yuǎn)程目錄以及目錄下的所有文件

3.3 后臺(tái)服務(wù)模式

Rsync 借助 SSH 協(xié)議同步數(shù)據(jù)存在的缺陷
1.使用系統(tǒng)用戶(不安全)
2.使用普通用戶(會(huì)導(dǎo)致權(quán)限不足情況)
3.守護(hù)進(jìn)程傳輸方式: rsync 自身非常重要的功能(不使用系統(tǒng)用戶烦秩,更加安全)

3.4 命令參數(shù)解釋

rsync #命令
[OPTION...] #選項(xiàng)
SRC... #遠(yuǎn)程主機(jī)模塊(不是目錄)
[USER@] #遠(yuǎn)程主機(jī)用戶(虛擬用戶)
HOST:: #遠(yuǎn)程主機(jī)地址
[DEST] #將遠(yuǎn)程主機(jī)模塊備份至本地什么位置
-a #歸檔模式傳輸, 等于-tropgDl
-v #詳細(xì)模式輸出, 打印速率, 文件數(shù)量等
-z #傳輸時(shí)進(jìn)行壓縮以提高效率
-r #遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸郎仆。
-t #保持文件時(shí)間信息
-o #保持文件屬主信息
-p #保持文件權(quán)限
-g #保持文件屬組信息
-l #保留軟連接
-P #顯示同步的過程及傳輸時(shí)的進(jìn)度等信息
-D #保持設(shè)備文件信息
-L #保留軟連接指向的目標(biāo)文件
-e #使用的信道協(xié)議,指定替代 rsh 的 shell 程序
--exclude=PATTERN #指定排除不需要傳輸?shù)奈募J?--exclude-from=file #文件名所在的目錄文件
--bwlimit=100 #限速傳輸
--partial #斷點(diǎn)續(xù)傳
--delete #讓目標(biāo)目錄和源目錄數(shù)據(jù)保持一致

第四章 后臺(tái)服務(wù)模式-服務(wù)端配置

4.1 安裝rsync

yum -y install rsync -y

4.2 修改配置文件

[root@backup /server/scripts]# cat /etc/rsyncd.conf 
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

4.3 配置文件解釋

注意只祠!以下配置只是為了理解rsync配置參數(shù),配置文件中不要帶有#或者中文丸升,不然啟動(dòng)會(huì)報(bào)錯(cuò)

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.4 創(chuàng)建用戶以及數(shù)據(jù)目錄

useradd -M -s /sbin/nologin www -u 666
mkdir /backup
chown -R www.www /backup/

4.5 創(chuàng)建虛擬用戶密碼文件并授權(quán)

echo "rsync_backup:oldboy" >/etc/rsync.passwd
chmod 600 /etc/rsync.passwd

4.4 加入開機(jī)啟動(dòng)

systemctl start rsyncd
systemctl enable rsyncd

4.5 檢查端口是否存在

netstat -lntup|grep 873

第五章 后臺(tái)服務(wù)模式-客戶端配置

5.1 安裝

yum -y install rsync -y
/usr/local/rsync --port=873 --daemon

5.2 配置密碼文件及授權(quán)

兩種方式:
1.使用密碼文件

yum install rsync -y
echo "oldboy" > /etc/rsync.pass
chmod 600 /etc/rsync.pass

2.使用rsync變量-腳本中使用-推薦這種

export RSYNC_PASSWORD=oldboy

第六章 實(shí)戰(zhàn)內(nèi)容

6.1 客戶端推送 backup 目錄下所有內(nèi)容至 Rsync 服務(wù)端

export RSYNC_PASSWORD=oldboy
rsync -avz /backup/ rsync_backup@172.16.1.41::backup

6.2 客戶端拉取 Rsync 服務(wù)端 backup 模塊數(shù)據(jù)至本地客戶端的 /backup 目錄

export RSYNC_PASSWORD=oldboy
rsync -avz rsync_backup@172.16.1.41::backup /backup/

6.3 Rsync 實(shí)現(xiàn)數(shù)據(jù)無(wú)差異同步

#拉取遠(yuǎn)端數(shù)據(jù):遠(yuǎn)端與本地保持一致,遠(yuǎn)端沒有本地有會(huì)被刪除, 造成客戶端數(shù)據(jù)丟失
export RSYNC_PASSWORD=oldboy
rsync -avz --delete rsync_backup@172.16.1.41::backup /data/
#推送數(shù)據(jù)至遠(yuǎn)端:本地與遠(yuǎn)端保持一致, 本地沒有遠(yuǎn)端會(huì)被刪除, 造成服務(wù)器端數(shù)據(jù)丟失
export RSYNC_PASSWORD=oldboy
rsync -avz --delete /data/ rsync_backup@172.16.1.41::backup

6.4 Rsync 的 Limit 限速

#企業(yè)案例: 某 DBA 使用 rsync 拉取備份數(shù)據(jù)時(shí)狡耻,由于文件過大導(dǎo)致內(nèi)部交換機(jī)帶寬被沾滿墩剖,導(dǎo)致用戶的請(qǐng)求無(wú)法響應(yīng)
export RSYNC_PASSWORD=oldboy
rsync -avz --bwlimit=1 rsync_backup@172.16.1.41::backup /data/

第七章 全網(wǎng)備份案例

7.1 客戶端需求:

客戶端需求:
1.客戶端 每天凌晨1點(diǎn)在服務(wù)器本地打包備份(系統(tǒng)配置文件\日志文件\其他目錄\應(yīng)用配置等文件)
2.客戶端備份的數(shù)據(jù)必須存放至以主機(jī)名*ip地址*當(dāng)前時(shí)間命名的目錄中
3.客戶端最后通過rsync推送本地已經(jīng)打包好的備份文件至backup服務(wù)器
4.客戶端服務(wù)器本地保留最近7天的數(shù)據(jù),避免浪費(fèi)磁盤空間

7.2任務(wù) 拆解

1.客戶端 每天凌晨1點(diǎn)在服務(wù)器本地打包備份(系統(tǒng)配置文件\日志文件\其他目錄\應(yīng)用配置等文件)

系統(tǒng)配置文件:

/etc/fstab
/etc/passwd

日志文件:

/var/log/messages
/var/log/secure

打包壓縮:

cd / && tar zcvf /backup/sys.tar.gz etc/fstab etc/passwd
cd / && tar zcvf /backup/log.tar.gz var/log/messages var/log/secure

2.客戶端備份的數(shù)據(jù)必須存放至以主機(jī)名ip地址當(dāng)前時(shí)間命名的目錄中
命名要求:

nfs_172.16.1.31_2019-07-17

主機(jī)名:

hostname

ip地址:

ifconfig eth1|awk 'NR==2{print $2}'

時(shí)間:

date +%F

拼接在一起:

[root@nfs ~]# echo "$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date
+%F)"
nfs_172.16.1.31_2019-10-7

3.客戶端最后通過rsync推送本地已經(jīng)打包好的備份文件至backup服務(wù)器的/backup

rsync -avzP /backup/ oldzhang@172.16.1.41::backup

4.創(chuàng)建測(cè)試數(shù)據(jù)

[root@nfs /backup]# cat date.sh
#!/bin/bash
for i in {1..30}
do
Backup="/backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date
+%F)"
date -s 2019/07/${i}
mkdir -p ${Backup}
cd / && tar zcvf ${Backup}/sys.tar.gz etc/fstab etc/passwd
cd / && tar zcvf ${Backup}/log.tar.gz var/log/messages var/log/secure
done

5.客戶端服務(wù)器本地保留最近7天的數(shù)據(jù)夷狰,避免浪費(fèi)磁盤空間

find /backup/ -mtime +7 |xargs rm -rf

6.調(diào)試腳本參數(shù)

bash -x xxx.sh

7.最終腳本

[root@nfs /server/scripts]# cat push_rsync.sh
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
BACKUP=/backup
HOST=$(hostname)
TIME=$(date +%F)
IP=$(ifconfig eth1|awk 'NR==2{print $2}')
DEST=${HOST}_${IP}_${TIME}
#1.創(chuàng)建目錄
mkdir ${BACKUP}/${DEST} -p
#2.打包數(shù)據(jù)
cd / && tar zcvf ${BACKUP}/${DEST}/sys.tar.gz etc/fstab etc/passwd
cd / && tar zcvf ${BACKUP}/${DEST}/log.tar.gz var/log/messages
var/log/secure
#3.推送
export RSYNC_PASSWORD=oldboy
rsync -avzP ${BACKUP}/ oldzhang@172.16.1.41::backup
#4.刪除7天前文件
find ${BACKUP}/ -mtime +7 |xargs rm -rf

8.注意踩坑

我們的備份腳本最終會(huì)以定時(shí)任務(wù)的形式實(shí)現(xiàn)岭皂,而定時(shí)任務(wù)能識(shí)別的PATH變量有限,所以最好在腳本里添加PATH變量沼头,或者腳本里命令寫絕對(duì)路徑爷绘。

7.4 服務(wù)端需求:

1.服務(wù)端部署 rsync,用于接收客戶端推送過來(lái)的備份數(shù)據(jù)
2.服務(wù)端需要每天校驗(yàn)客戶端推送過來(lái)的數(shù)據(jù)是否完整
3.服務(wù)端需要每天校驗(yàn)的結(jié)果通知給管理員
4.服務(wù)端僅保留 6 個(gè)月的備份數(shù)據(jù),其余的全部刪除
注意:所有服務(wù)器的備份目錄必須都為/backup

7.5 服務(wù)端步驟:

服務(wù)端需要每天校驗(yàn)客戶端推送過來(lái)的數(shù)據(jù)是否完整

1.要在客戶端做
2.做一個(gè)標(biāo)記,貼一個(gè)防撕貼

#第一種
cd nfs_172.16.1.31_2019-07-23/ && md5sum log.tar.gz > md5.txt
#第二種
md5sum log.tar.gz sys.tar.gz >md5.txt
#第三種
md5sum *.tar.gz >md5.txt

實(shí)現(xiàn)命令:
1.客戶端增加md5校驗(yàn)的步驟:

md5sum ${BACKUP}/${DEST}/*.tar.gz > ${BACKUP}/${DEST}/md5.txt

2.服務(wù)端校驗(yàn)命令:

find /backup/*_$(date +%F) -name "md5.txt"|xargs md5sum -c

服務(wù)端需要每天郵件校驗(yàn)的結(jié)果通知給管理員

1.安裝配置mailx:

yum install mailx -y

2.郵件配置文件

[root@backup /server/scripts]# cat /etc/mail.rc 
set from=1003451503@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=1003451503@qq.com
set smtp-auth-password=xxxxxxxx
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/

3.服務(wù)端生成校驗(yàn)結(jié)果文件:

find /backup/*_$(date +%F) -name "md5.txt"|xargs md5sum -c >
/backup/check.txt

4.校驗(yàn)發(fā)送命令:

mail -s "check-rsync-$(date +%F)" 526195417@qq.com < /backup/check.txt

第八章 配置文件匯總

8.1 客戶端腳本:

[root@nfs01 /server/scripts]# cat push_rsync.sh 
#!/bin/bash

#1.定義變量
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Host=$(hostname)
Addr=$(ifconfig eth1|awk 'NR==2{print $2}')
Date=$(date +%F)
Dest=${Host}_${Addr}_${Date}
Path=/backup
#2.創(chuàng)建備份目錄
[ -d $Path/$Dest ] || mkdir -p $Path/$Dest
#3.備份對(duì)應(yīng)的文件
cd / && \
    [ -f $Path/$Dest/system.tar.gz ] || tar czf $Path/$Dest/system.tar.gz etc/fstab etc/rsyncd.conf && \
    [ -f $Path/$Dest/log.tar.gz ] || tar czf $Path/$Dest/log.tar.gz var/log/messages var/log/secure && \
#4.攜帶 md5 驗(yàn)證信息
[ -f $Path/$Dest/flag ] || md5sum $Path/$Dest/*.tar.gz >$Path/$Dest/flag_$Date
#5.推送本地?cái)?shù)據(jù)至備份服務(wù)器
export RSYNC_PASSWORD=oldboy
rsync -avz $Path/ rsync_backup@172.16.1.41::backup
#6.本地保留最近 7 天的數(shù)據(jù)
find $Path/ -type d -mtime +7|xargs rm -rf

8.2 服務(wù)端腳本:

[root@backup /server/scripts]# cat check_backup.sh 
#!/bin/bash

#1.定義全局的變量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#2.定義局部變量
Path=/backup
Date=$(date +%F)
#3.查看 flag 文件,并對(duì)該文件進(jìn)行校驗(yàn), 然后將校驗(yàn)的結(jié)果保存至 result_時(shí)間
find $Path/ -type f -name "flag_$Date"|xargs md5sum -c >$Path/result_${Date}
#4.將校驗(yàn)的結(jié)果發(fā)送郵件給管理員
mail -s "Rsync Backup $Date" 526195417@qq.com <$Path/result_${Date}
#5.刪除超過 7 天的校驗(yàn)結(jié)果文件, 刪除超過 180 天的備份數(shù)據(jù)文件
find $Path/ -type f -name "result*" -mtime +7|xargs rm -f
find $Path/ -type d -mtime +180|xargs rm -rf

8.3 服務(wù)端rsync配置文件

[root@backup /server/scripts]# cat /etc/rsyncd.conf 
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

第九章: 報(bào)錯(cuò)

報(bào)錯(cuò)1:驗(yàn)證失敗
1.檢查密碼文件權(quán)限是否為600
2.檢查配置文件用戶屬主是否為root,不需要改成普通用戶
3.密碼文件是否寫錯(cuò)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末进倍,一起剝皮案震驚了整個(gè)濱河市土至,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猾昆,老刑警劉巖陶因,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異垂蜗,居然都是意外死亡楷扬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門贴见,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)烘苹,“玉大人,你說(shuō)我怎么就攤上這事片部×秃猓” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵档悠,是天一觀的道長(zhǎng)捆探。 經(jīng)常有香客問我,道長(zhǎng)站粟,這世上最難降的妖魔是什么黍图? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮奴烙,結(jié)果婚禮上助被,老公的妹妹穿的比我還像新娘。我一直安慰自己切诀,他們只是感情好服爷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著陈辱,像睡著了一般盒刚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上倒庵,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天褒墨,我揣著相機(jī)與錄音炫刷,去河邊找鬼。 笑死郁妈,一個(gè)胖子當(dāng)著我的面吹牛浑玛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播噩咪,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼顾彰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了胃碾?” 一聲冷哼從身側(cè)響起涨享,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仆百,沒想到半個(gè)月后灰伟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡儒旬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年栏账,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栈源。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挡爵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甚垦,到底是詐尸還是另有隱情茶鹃,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布艰亮,位于F島的核電站闭翩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏迄埃。R本人自食惡果不足惜疗韵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侄非。 院中可真熱鬧蕉汪,春花似錦、人聲如沸逞怨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)叠赦。三九已至驹马,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背糯累。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工算利, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寇蚊。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像棍好,于是被迫代替她去往敵國(guó)和親仗岸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容