Rsync服务
目錄
- Rsync服務(wù)
- Rsync
- rsync 簡介
- Rsync的特性
- 生產(chǎn)場(chǎng)景架構(gòu)集群備份方案
- 備份的類型
- rsync的應(yīng)用場(chǎng)景
- Rync的數(shù)據(jù)同步模式
- rsync的三種模式
- 1. 本地方式
- 2.遠(yuǎn)程傳輸方式
- 3.守護(hù)進(jìn)程傳輸方式
- 服務(wù)端配置
- 客戶端配置
- rsync實(shí)戰(zhàn)
- 實(shí)戰(zhàn)一
- 報(bào)錯(cuò)解決方法:
- Rsync選項(xiàng)
- rsync無差異同步
- rsync限速
- 客戶端需求
- 服務(wù)端需求
Rsync服務(wù)
Rsync
rsync是一款開源、快速、多功能、可實(shí)現(xiàn)全量及增量的本地或遠(yuǎn)程數(shù)據(jù)同步備份的優(yōu)秀工具。rsync軟件適用于Unix/linux/Windows等多種操作系統(tǒng)平臺(tái)。
rsync 簡介
rsync英文稱為remote synchronizetion,從軟件的名稱就可以看出來,rsync具有可使本地和遠(yuǎn)程兩臺(tái)主機(jī)之間的數(shù)據(jù)快速復(fù)制同步鏡像、遠(yuǎn)程備份的功能,這個(gè)功能類似于ssh帶的scp命令,但是又優(yōu)于scp命令的功能,scp每次都是全量拷貝,而rsync可以增量拷貝。當(dāng)然,rsync還可以在本地主機(jī)的不同分區(qū)或目錄之間全量及曾量的復(fù)制數(shù)據(jù),這又類似cp命令。但是同樣也優(yōu)于cp命令,cp每次都是全量拷貝,而rsync可以增量拷貝。
在同步數(shù)據(jù)的時(shí)候,默認(rèn)情況下,rsync通過其獨(dú)特的“quick check”算法,它僅同步大小或者最后修改時(shí)間發(fā)生變化的文件或目錄,當(dāng)然也可根據(jù)權(quán)限、屬主等屬性的變化同步,但是需要制定相應(yīng)的參數(shù),甚至可以實(shí)現(xiàn)只同步一個(gè)文件里有變化的內(nèi)容部分,所以,可是實(shí)現(xiàn)快速的同步備份數(shù)據(jù)。
rsync官方地址:TP
rsync監(jiān)聽端口:873
rsync運(yùn)行模式:C/S
client/server
客戶端/服務(wù)端
小提示:利用rsync還可以實(shí)現(xiàn)刪除文件和目錄的功能,這又相當(dāng)于rm命令,一個(gè)rsync相當(dāng)于scp、cp、rm,但是還優(yōu)于他們的每一個(gè)命令。
Rsync的特性
支持拷貝特殊文件,如連接文件、設(shè)備等。
可以有排除指定文件或目錄同步的功能,相當(dāng)于打包命令tar的排除功能。
可以做到保持原文件或目錄的權(quán)限、時(shí)間、軟硬鏈接、屬主、組等所有屬性均不改變 –p。
可以實(shí)現(xiàn)增量同步,既只同步發(fā)生變化的數(shù)據(jù),因此數(shù)據(jù)傳輸效率很高(tar-N)。
可以使用rcp、rsh、ssh等方式來配合傳輸文件(rsync本身不對(duì)數(shù)據(jù)加密)。
可以通過socket(進(jìn)程方式)傳輸文件和數(shù)據(jù)(服務(wù)端和客戶端)*****。
支持匿名的活認(rèn)證(無需系統(tǒng)用戶)的進(jìn)程模式傳輸,可以實(shí)現(xiàn)方便安全的進(jìn)行數(shù)據(jù)備份和鏡像。
生產(chǎn)場(chǎng)景架構(gòu)集群備份方案
1.借助cron+rsync把所有客戶服務(wù)器數(shù)據(jù)同步到備份服務(wù)器。
2.針對(duì)公司重要數(shù)據(jù)備份混亂狀況和領(lǐng)導(dǎo)提出備份全網(wǎng)數(shù)據(jù)的解決方案。
3.通過本地打包備份,然后rsync結(jié)合inotify應(yīng)用把全網(wǎng)數(shù)統(tǒng)一備份到一個(gè)固定存儲(chǔ)服務(wù)器,然后在存儲(chǔ)服務(wù)器上通過腳本檢查并報(bào)警管理員備份結(jié)果。
4.定期將IDC機(jī)房的數(shù)據(jù) 備份公司的內(nèi)部服務(wù)器,防止機(jī)房地震及火災(zāi)問題導(dǎo)致數(shù)據(jù)丟失。
5.實(shí)時(shí)同步,解決存儲(chǔ)服務(wù)器等的單點(diǎn)問題。
備份的類型
rsync的應(yīng)用場(chǎng)景
Rync的數(shù)據(jù)同步模式
rsync的三種模式
1. 本地方式
? 單個(gè)主機(jī)本地之間的數(shù)據(jù)傳輸(類似于cp命令)
? [root@web01 ~]# rsync /etc/b.txt /tmp/
#本地拷貝數(shù)據(jù)命令 Local: rsync [OPTION...] SRC... [DEST]#本地拷貝數(shù)據(jù)示例 [root@backup ~]# rsync -avz /etc/passwd /tmp/ rsync #備份命令(cp) [options] #選項(xiàng) SRC... #本地源文件 [DEST] #本地目標(biāo)文件2.遠(yuǎn)程傳輸方式
通過ssh通道傳輸數(shù)據(jù),(類似于scp命令)
Access via remote shell: #pull拉取數(shù)據(jù)命令 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]#push推送數(shù)據(jù)命令 Push: rsync [OPTION...] SRC... [USER@]HOST:DESTrsync -avz root@172.16.1.41:/tmp ./
pull拉: [root@web01 ~]# rsync -avz root@172.16.1.41:/tmp ./rysnc -avz /var root@172.16.1.41:/tmp/
push推: [root@web01 ~]# rsync -avz /var root@172.16.1.41:/tmp/注意: rsync不管是推還是拉,推送目錄的時(shí)候帶/和不帶/
? 1.帶/ :/etc/ 將etc目錄下的所有內(nèi)容,推過去(拉過來)
? 2.不帶/:/etc 將etc目錄整體推過去(拉過來)
3.守護(hù)進(jìn)程傳輸方式
rsync自身非常重要的功能(不使用系統(tǒng)用戶,更加安全)
Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync -avz /data/ rsync_backup@172.16.1.41::zls| backup | 10.0.0.41 | 172.16.1.41 | 服務(wù)端 |
| web01 | 10.0.0.7 | 172.16.1.7 | 客戶端 |
服務(wù)端配置
1.服務(wù)端安裝rsync
[root@backup ~]# yum -y install rsync2.服務(wù)端,修改配置文件
[root@backup ~]# vim /etc/rsyncd.conf #用戶名 uid = rsync #用戶組 gid = rsync #端口 port = 873 #無需讓rsync以root身份運(yùn)行 fake super = yes #禁錮目錄,不允許操作指定目錄之外的目錄 use chroot = no #最大連接數(shù)200 max connections = 200 #超時(shí)時(shí)間600s 10分鐘 timeout = 600 #忽略錯(cuò)誤 ignore errors #關(guān)閉只讀 read only = false #不允許查看模塊信息 list = false #認(rèn)證用戶 auth users = rsync_backup #認(rèn)證用戶的密碼文件 secrets file = /etc/rsync.passwd #日志文件 log file = /var/log/rsyncd.log ##################################### #模塊(任意名字都可以) [zls] #注釋信息(無關(guān)緊要) comment = welcome to oldboyedu backup! #路徑 path = /backup2.服務(wù)端(backup),創(chuàng)建用戶,創(chuàng)建一個(gè)用來運(yùn)行rsync服務(wù)的用戶身份
#檢查用戶是否存在 [root@backup ~]# id rsync id: rsync: no such user#創(chuàng)建用戶(不允許登錄,不創(chuàng)建家目錄) [root@backup ~]# useradd rsync -s /sbin/nologin -M -s:指定登錄的shell -M:不創(chuàng)建家目錄3.服務(wù)端,創(chuàng)建一個(gè)備份目錄
[root@backup ~]# mkdir /backup #授權(quán)rsync用戶 [root@backup ~]# chown -R rsync.rsync /backup/4.服務(wù)端,創(chuàng)建虛擬用戶及密碼文件
#創(chuàng)建用戶名和密碼文件 [root@backup ~]# vim /etc/rsync.passwd rsync_backup:123456 #授權(quán) [root@backup ~]# chmod 600 /etc/rsync.passwd5.服務(wù)端,啟動(dòng)rsync添加開機(jī)自啟
[root@backup ~]# ll /usr/lib/systemd/system/rsyncd.service -rw-r--r-- 1 root root 237 Apr 26 01:17 /usr/lib/systemd/system/rsyncd.service #啟動(dòng)rsyncd守護(hù)進(jìn)程 [root@backup ~]# systemctl start rsyncd #允許開機(jī)自啟 [root@backup ~]# systemctl enable rsyncd客戶端配置
1.安裝rsync
[root@web01 ~]# yum install -y rsync2.創(chuàng)建虛擬用戶的密碼文件
#創(chuàng)建用戶密碼文件,也可以手動(dòng)敲,為了寫腳本 [root@web01 ~]# vim /etc/rsync.pass 123456 #授權(quán) [root@web01 ~]# chmod 600 /etc/rsync.passrsync實(shí)戰(zhàn)
實(shí)戰(zhàn)一
[root@web01 ~]# mkdir /data [root@web01 ~]# cd /data [root@web01 data]# touch file{1..100} [root@web01 data]# ll推:
[root@web01 ~]# rsync -avz /data/ rsync_backup@172.16.1.41::zls拉:
[root@web01 ~]# rsync -avz rsync_backup@172.16.1.41::zls /root/非交互式:
[root@web01 data]# rsync -avz /data/ rsync_backup@10.0.0.41::naonao --password-file=/etc/rsync.pass #密碼文件報(bào)錯(cuò)解決方法:
服務(wù)端的/backup目錄權(quán)限不是 rsync
認(rèn)證失敗:
1.先檢查配置文件:服務(wù)端:/etc/rsyncd.conf
[模塊]
2.檢查服務(wù)端,/etc/rsync.passwd文件的權(quán)限是不是600
3.再檢查服務(wù)端,/etc/rsync.passwd文件的內(nèi)容,是不是 用戶名:密碼
rsyncd.conf 里的 rsync_backup
4.再檢查客戶端,/etc/rsync.pass 權(quán)限600
5./etc/rsync.pass 內(nèi)容只寫密碼
6.修改完配置文件要重啟服務(wù),[backup] [zls]
systemctl restart rsyncd 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 = /backupRsync選項(xiàng)
-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ù)保持一致 --password-file=xxx #使用密碼文件rsync無差異同步
rsync -avz --delete rsync_backup@172.16.1.41::zlsrsync限速
rsync -avz --bwlimit=1024 /etc rsync_backup@172.16.1.41::zls客戶端需求
1.客戶端提前準(zhǔn)備存放的備份的目錄,目錄規(guī)則如下:/backup/nfs_172.16.1.31_2018-09-02
#實(shí)現(xiàn)第一部分內(nèi)容,將備份的數(shù)據(jù)目錄創(chuàng)建出來 [root@web01 ~]# vim rsync.sh #!/bin/bash H=`hostname` IP=`ifconfig eth1|awk 'NR==2{print $2}'` DATE=`date +%F` SRC=${H}_${IP}_${DATE} mkdir -p /backup/$SRC[root@web01 ~]# sh rsync.sh [root@web01 ~]# ll /backup/ total 0 drwxr-xr-x 2 root root 6 Aug 2 19:00 web01_172.16.1.7_2019-08-022.客戶端在本地打包備份(系統(tǒng)配置文件、應(yīng)用配置等)拷貝至/backup/nfs_172.16.1.31_2018-09-02
#!/bin/bashH=`hostname` IP=`ifconfig eth1|awk 'NR==2{print $2}'` DATE=`date +%F` SRC=${H}_${IP}_${DATE} mkdir -p /backup/$SRCtar zcf /backup/${SRC}/conf_${DATE}.tar.gz /var/log/messages /etc/passwd /etc/gshadow /etc/shadow /etc/group &>/dev/null3.客戶端最后將備份的數(shù)據(jù)進(jìn)行推送至備份服務(wù)器
#!/bin/bashH=`hostname` IP=`ifconfig eth1|awk 'NR==2{print $2}'` DATE=`date +%F` SRC=${H}_${IP}_${DATE} export RSYNC_PASSWORD=123456mkdir -p /backup/$SRCtar zcf /backup/${SRC}/conf_${DATE}.tar.gz /var/log/messages /etc/passwd /etc/gshadow /etc/shadow /etc/group &>/dev/nullrsync -avz /backup/$SRC rsync_backup@172.16.1.41::zls測(cè)試命令:
[root@web01 ~]# for n in `seq -w 30`;do date -s "201908$n";sh rsync.sh;done4.客戶端服務(wù)器本地保留最近7天的數(shù)據(jù), 避免浪費(fèi)磁盤空間
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin H=`hostname` IP=`ifconfig eth1|awk 'NR==2{print $2}'` DATE=`date +%F` SRC=${H}_${IP}_${DATE} export RSYNC_PASSWORD=123456mkdir -p /backup/$SRCtar zcf /backup/${SRC}/conf_${DATE}.tar.gz /var/log/messages /etc/passwd /etc/gshadow /etc/shadow /etc/group &>/dev/nullmd5sum /backup/${SRC}/conf_${DATE}.tar.gz > /backup/res.txtrsync -az /backup/ rsync_backup@172.16.1.41::zlsfind /backup/ -type d -mtime +7 |xargs rm -fr5.客戶端每天凌晨1點(diǎn)定時(shí)執(zhí)行該腳本
[root@web01 ~]# crontab -e #每天凌晨一點(diǎn)備份重要數(shù)據(jù) By:zls At:2019-08-02 00 01 * * * /bin/sh /root/rsync.sh &>/dev/null#腳本中需加入,以防定時(shí)任務(wù)時(shí)。目錄中缺少ip [root@web01 ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin#驗(yàn)證 yum -y install nptdate ntpdate time1.aliyun.com date -s 20190803 [root@web01 ~]# tail -f /var/log/cron #查看服務(wù)端需求
1.服務(wù)端部署rsync,用于接收客戶端推送過來的備份數(shù)據(jù)
2.服務(wù)端需要每天校驗(yàn)客戶端推送過來的數(shù)據(jù)是否完整
3.服務(wù)端需要每天校驗(yàn)的結(jié)果通知給管理員
4.服務(wù)端僅保留6個(gè)月的備份數(shù)據(jù),其余的全部刪除
vim check_md5.sh #!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin H=`hostname` IP=`ifconfig eth1|awk 'NR==2{print $2}'` DATE=`date +%F` SRC=${H}_${IP}_${DATE}md5sum -c /backup/res/*|mail -s "${DATE} check backup" 133411023@qq.comfind /backup -type d -mtime +180|xargs rm -fr crontab -e #xxx by:zls at:xx 01 00 * * * /bin/sh /root/check_md5.sh &>/dev/null驗(yàn)證轉(zhuǎn)載于:https://www.cnblogs.com/1naonao/p/11285846.html
總結(jié)
- 上一篇: DataWhale 组队学习爬虫 Tas
- 下一篇: 性能优化概述