1. 程式人生 > >linux rsync遠程同步+sersync+rsync實現實時同步

linux rsync遠程同步+sersync+rsync實現實時同步

保存 error 創建 服務 auth word add 同步時間 emc

rsync是什麽

rsync全稱Remote Sync ,遠程同步,是Linux/UNIX系統下的文件同步和數據傳輸工具,數據備份,它采用了“rsync算法”使一個客戶機和遠程文件服務器之間的文件同步。

作用

可以將同一個服務器的數據從一個分區備份到另一個分區,也可以將本地系統的數據通過網絡傳輸方式備份到任何一個遠程主機上;

優點

rsync可以在中斷後恢復傳輸

rsync的功能特性

可以鏡像保存整個目錄樹和文件系統;
可以增量同步數據,文件傳輸效率高,因而同步時間很短;
可以保持原文件的權限、時間、軟硬鏈接等屬性;
無需特殊權限即可安裝;
快速:第一次同步時rsync會復制全部內容,但在下一次只傳輸修改過的文件;

壓縮傳輸:rsync在傳輸數據的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬;
加密傳輸數據,保證了數據的安全性;
可以使用scp、ssh等方式來傳輸文件,也可以通過直接的socket鏈接;
支持匿名傳輸,以方便進行網站鏡像;

xinetd管理rsync工作原理

xinetd,超級互聯網守護進程服務,管理服務
使用rsync來同步是先通過xinetd監聽873號端口,如果rsync進來的是873號端口,那麽xinetd就會通知它所管轄的rsync服務來做回應,接下來就是rsync兩服務之間的通訊。
rsync服務依賴xinetd,是使用超級服務來管理的。

環境

兩臺服務器
分別安裝rsync服務和xinetd

原服務器:192.168.80.100
目的服務器:192.168.80.101

安裝rsync

yum install -y xinetd rsync
開啟服務
rsync --daemon
檢查是否開啟服務
netstat -anpt | grep 873

rsync主要命令選項

-r:遞歸模式,對子目錄以遞歸模式處理
-l:--links 保留軟鏈結
-v:--verbose 詳細模式輸出
-a:--archive 權限保存模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,相當於-rlptgoD
-z:--compress 壓縮模式,對備份的文件在傳輸時進行壓縮處理
-p:--perms 保持文件權限,文件原有屬性。

-o:--owner 保持文件原有屬主信息。
-g:--group 保持文件原有屬組信息。
-D:--devices 保持設備文件信息。
-t:--times 保持文件時間信息。
-A:保持ACL屬性信息
-D:保留設備文件及其其他特殊文件
--delete:刪除目標位置有而原始位置沒有的文件
--password-file=FILE,從FILE中得到密碼
例如:rsync -avz --delete /var/www/html/ [email protected]:/web-back
註:通常avz一起使用

開始同步

對192.168.80.100 網站根目錄的/var/www/html目錄備份到192.168.80.101的/web-back
在源服務器和目標服務器上:
useradd rget1;echo rget1:123456|chpasswd //創建用戶並設置密碼

創建同步文件目錄

mkdir -p /var/www/html/

給文件目錄單用戶授權

setfacl -R -m u:rget1:rwx/var/www/html/

設置默認權限

setfacl -R -m default:rget1:rwx /var/www/html

查看權限

getfacl /var/www/html

給同步目錄添加文件

cp -rf /etc/b* /var/www/html
技術分享圖片

在目標服務器
創建一個同步目錄

mkdir /web-back

修改歸屬

chown rget1:rget -R /web-back/

在源服務器推送數據

rsync -avz --delete /var/www/html/ [email protected]:/web-back
技術分享圖片
目的服務器同步目錄:
技術分享圖片
註:如果只想傳輸目錄下的內容,在該目錄後面加“/”,如果想連該目錄一起傳輸,就不加“/”.
以上是使用系統用戶備份數據

非系統用戶備份數據

使用系統配置文件/etc/rsyncd.conf來備份數據,創建備份賬戶,最後把rsync以deamon方式運行。
rsync.conf配置文件分為兩部分:全局參數,模塊參數
全局參數:對rsync服務器生效,如果模塊參數和全局參數沖突,沖突的地方模塊參數優先。
模塊參數:定義需要通過rsync輸出的目錄定義的參數。

在目的服務器上配置rsyncd.conf
配置文件詳解

該配置文件在centos 6.x版本中沒有,在centos 7.x才有
vi /etc/rsyncd.conf
?uid = root #用戶ID
gid = root #用戶組ID
address = 192.168.80.100 #監聽地址
port = 873 #監聽端口
hosts allow = 192.168.80.0/24 #黑名單
use chroot = yes #禁錮家目錄
max connections = 10 #最大並發連接數,默認0(無限制)
strict modes = yes #是否檢查口令文件的權限,yes時必須為root用戶權限
pid file = /var/run/rsyncd.pid #守護進程PID路徑
lock file = /var/run/rsync.lock #指定支持max connections的鎖文件
log file = /var/run/rsyncd.log #日誌輸出文件路徑
motd file = /etc/rsyncd.motd #指定消息文件,當客戶連接服務器時給文件的內容顯示給客戶,默認沒有該文件
?
[www] #自定義模塊名稱
path = /web-back/ #需備份的文件或目錄,真實系統路徑
comment = ftp area #描述文字
ignore errors #可以忽略一些無關的I/O錯誤
read only = false #false:客戶端可以上傳文件 yes:只讀
write only = false #false:客戶端可以下載文件 yes:不能下載
hosts allow = #:允許連接任何主機
hosts deny = 192.168.100.10 #禁止連接rsync服務器的IP
list = yes #客戶端請求可以使用的模塊列表時,該模塊是否被列出
uid = root
gid = root
auth users = backup #用戶名backup,與系統用戶沒有任何關系
secrets file = /etc/server.pass #只有定義了auth users項,該文件才起作用,默認沒有此文件,須手動創建(文件格式為:"用戶名:密碼")
技術分享圖片

創建motd文件

echo "welcome to backup server" > /etc/rsyncd.motd

創建密碼文件(文件格式:user:pass)

vi /etc/server.pass
backup:123456

修改密碼文件權限

chmod 600 /etc/server.pass

重啟服務

pkill -9 rsync
systemctl start xinetd
systemctl enable xinetd
rsync --daemon --config=/etc/rsyncd.conf
註:啟動時有可能報pid錯誤 如果報pid錯誤就把pid文件刪除
netstat -anpt | grep 873
以上在目的服務器中配置

在源服務器中:

rsync -avz --delete /var/www/html/ [email protected]::www
192.168.80.101是目的服務器地址
技術分享圖片

無密碼交互傳輸:

在原服務器中創建一個密碼文件
vi /etc/server.pass
註:文件要和目的文件一樣
技術分享圖片

實時同步

rsync -avz --delete /var/www/html/ [email protected]::www --password-file=/etc/server.pass
技術分享圖片

腳本實現定時自動備份

vi autobackup.sh
#!/bin/bash
rsync -avz --delete /var/www/html [email protected]::www --password-file=/opt/file

授權

chmod +x autobackup.sh

周期計劃

crontab -e
1 sh /root/autobackup.sh &

配置sersync+rsync實現實時同步

環境

一臺裝sersync服務
一臺裝rsync服務
sersync服務器(數據源,源服務器):192.168.80.100
rsync服務器(備份端,目標服務器):192.168.80.101

1、為什麽要用rsync——sersync架構

(1)sersync是基於inotify開發的,類似於inotify-tools的工具
(2)sersync可以記錄下被監聽目錄中發生變化的(包括增加,刪除,修改)具體某一個文件或者某一個目錄的名字,然後使用rsync同步的時候,只同步發生變化的文件或者目錄

2、rsync+inotify-tools與rsync+sersync架構的區別

(1)rsync+inotify-tools
a、inotify只能記錄下被監聽的目錄發生了變化(增、刪、改)並沒有把具體是哪個文件或者哪個目錄發生了變化記錄下來
b、rsync在同步的時候,並不知道具體是哪個文件或目錄發生了變化,每次都是對整個目錄進行同步,當數據量很大時,整個目錄同步非常耗時(rsync要對整個目錄遍歷查找對比文件),因此效率很低

(2)rsync+sersync
a、sersync可以記錄被監聽目錄中發生變化的(增、刪、改)具體某個文件或者目錄的名字;
b、rsync在同步時,只同步發生變化的文件或目錄(每次發生變化的數據相對整個同步目錄數據來說很小,rsync在遍歷查找對比文件時,速度很快),因此效率很高。

3、同步過程

(1)在同步服務器上開啟sersync服務,sersync負責監控配置路徑中的文件系統時間變化;
(2)調用rsync命令把更新的文件同步到目標服務器;
(3)需要在主服務器配置sersync,在同步目標服務器配置rsync server(註:是rsync服務)

4、同步過程和原理

1)用戶實時的往sersync服務器上寫入更新文件數據;
(2)此時需要在同步主服務器上配置sersync服務;
(3)在另一臺服務器開啟rsync守護進程服務,以同步拉取來自sersync服務器上的數據;

通過rsync的守護進程服務後可以發現,實際上sersync就是監控本地的數據寫入或更新時間;然後,在調用rsync客戶端的命令,將寫入或更新時間對應的文件通過rsync推送到目標服務器上。

部署:

1,下載sersync

wget https://github.com/wsgzao/sersync/raw/master/sersync2.5.4_64bit_binary_stable_final.tar.gz

2、解壓

tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /opt
mv /opt/GNU-Linux-x86 /opt/sersync
cd sersync
confxml.xml #配置文件
sersync2 #啟動文件
cp confxml.xml confxml.xml.bak //做一個備份

配置:

vi confxml.xml
24行 <localpath watch="/var/www/html"> #監聽目錄
25行 <remote ip="192.168.80.101" name="www" /> #遠程地址,遠程目錄
31行 <auth start="true" users="backup" passwordfile="/etc/rsync.passwd" />
技術分享圖片

啟動

cd /opt/sersync/
./sersync2 -d -r -o ./confxml.xml
技術分享圖片

目的服務器

watch ls -lh //以全屏方式顯示ls -lh文件
技術分享圖片

linux rsync遠程同步+sersync+rsync實現實時同步