rsync + sersync2進行實時同步數據

rsync服務端:54.172.72.40

rsync+sersync2:120.26.68.152

首先安裝rsync服務端:

wKiom1e0_wvBh9LSAAAUv7ondt8663.jpg

表示已經有安裝,於是編輯配置文件vim /etc/rsyncd.conf

uid = root

gid = root

use chroot = no

max connections = 2000

timeout = 300

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

ignore errors

port = 873 

read only = false

list = false

hosts allow = 120.26.68.152             允許120.26.68.152的客戶端

hosts deny = *

auth user = rsyncd_backup

secrets file = /etc/rsync.password

motd file = /etc/rsyncd.Motd



[data]

comment = data

path = /data/120.26.68.152      接收從120.26.68.152同步過來的數據,放在本地54.172.72.40目錄


根據rsyncd.conf 文件的配置,在/etc 目錄下創建同步的驗證文件rsync.password

rsyncd_backup:redhat------>前者爲用戶名,後者爲密碼

chmod 600 /etc/rsync.password


mkdir -p /data/120.26.68.152

啓動rsync服務:

rsync --daemon

查看服務是否啓動:

wKiom1e1AGPAkOWFAAAyENRt7UQ571.jpg

由於我這一臺是aws服務器,所以要修改安全組進站出口,打開tcp的873端口


接下來

在120.26.68.152主機上配置rsync.password,只需要添加如下內容

[root@aliyun_test sersync]# cat /etc/rsync.password 

redhat      該值爲同步用戶的密碼

chmod 600 /etc/rsync.password

至此rsync的簡單配置同步完成,嘗試用手動命令同步數據

rsync -avzP /var/log/* [email protected]::data --password-file=/etc/rsync.password

提示:data爲定義的模塊名

然後在我的aws上/data/120.26.68.152目錄下觀察可以發現日誌文件目錄都同步過來了

[root@ip-172-31-63-27 ~]# cd /data/120.26.68.152/

[root@ip-172-31-63-27 120.26.68.152]# ll

total 1156

drwxr-x---. 2 root root      6 May 28  2014 audit

-rw-r--r--. 1 root root   2036 Aug  5 02:22 boot.log

-rw-------. 1 root utmp   3072 Aug 12 06:31 btmp

drwxr-xr-x. 2 root root      6 Nov 10  2010 ConsoleKit

於是在此基礎上安裝sersync2軟件


wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz

tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/

cd /usr/local/

ln -sv GNU-Linux-x86/ /usr/local/sersync

cp /usr/local/sersync/confxml.xml /usr/local/sersync/confxml.xml.bak

cp /usr/local/sersync/sersync2 /usr/sbin/

vim /usr/local/sersync/confxml.xml

修改如下幾行

<debug start="true"/>   將debug信息打開

<localpath watch="/sersync">    修改120.26.68.152本地需要同步的目錄

<remote ip="54.172.72.40" name="data"/>   修改遠端服務器的ip和模塊名

<auth start="false" users="rsyncd_backup" passwordfile="/etc/rsync.password"/>   修改同步用戶驗證信息

創建本地數據目錄文件:mkdir /sersync -p


然後啓動sersync

sersync2 -d -n 3 -o /usr/local/sersync/confxml.xml >> /var/log/sersync2.log 2>&1

參數-d:啓用守護進程模式

參數-n: 指定開啓守護線程的數量,默認爲10個

參數-r:在監控前,將監控目錄與遠程主機用rsync命令推送一遍


然後進行同步驗證:

cd /sersync/

[root@aliyun_test sersync]# mkdir {a,b,c}


在aws54.172.72.40上觀察如下結果

[root@ip-172-31-63-27 120.26.68.152]# ll

total 0

drwxr-xr-x. 2 root root 6 Aug 16 22:15 a

drwxr-xr-x. 2 root root 6 Aug 16 22:15 b

drwxr-xr-x. 2 root root 6 Aug 16 22:15 c

至此同步成功


記:

一、爲什麼要用rsync+sersync架構?


1、sersync是基於inotify開發的,類似於inotify-tools的工具


2、sersync可以記錄下被監聽目錄中發生變化的(包括增加、刪除、修改)具體某一個文件或某一個目錄的名字,然後使用rsync同步的時候,只同步發生變化的這個文件或者這個目錄。


二、rsync+inotify-tools與rsync+sersync這兩種架構有什麼區別?


1、rsync+inotify-tools

(1):inotify-tools只能記錄下被監聽的目錄發生了變化(包括增加、刪除、修改),並沒有把具體是哪個文件或者哪個目錄發生了變化記錄下來;


(2):rsync在同步的時候,並不知道具體是哪個文件或者哪個目錄發生了變化,每次都是對整個目錄進行同步,當數據量很大時,整個目錄同步非常耗時(rsync要對整個目錄遍歷查找對比文件),因此,效率很低。


2、rsync+sersync


(1):sersync可以記錄下被監聽目錄中發生變化的(包括增加、刪除、修改)具體某一個文件或某一個目錄的名字;


(2):rsync在同步的時候,只同步發生變化的這個文件或者這個目錄(每次發生變化的數據相對整個同步目錄數據來說是很小的,rsync在遍歷查找比對文件時,速度很快),因此,效率很高。


小結:當同步的目錄數據量不大時,建議使用rsync+inotify-tools;當數據量很大(幾百g甚至1t以上)、文件很多時,建議使用rsync+sersync。

參考文章:http://www.linuser.com/thread-1318-1-1.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章