sersync+rsync原理及部署

1、爲何要用rsync+sersync架構?php

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

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

 

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

1、rsync+inotify-tools安全

 a、inotify只能記錄下被監聽的目錄發生了變化(增,刪,改)並無把具體是哪一個文件或者哪一個目錄發生了變化記錄下來;服務器

 b、rsync在同步的時候,並不知道具體是哪一個文件或目錄發生了變化,每次都是對整個目錄進行同步,當數據量很大時,整個目錄同步很是耗時(rsync要對整個目錄遍歷查找對比文件),所以效率很低架構

    

2、rsync+sersync併發

 a、sersync能夠記錄被監聽目錄中發生變化的(增,刪,改)具體某個文件或目錄的名字;app

 b、rsync在同步時,只同步發生變化的文件或目錄(每次發生變化的數據相對整個同步目錄數據來講很小,rsync在遍歷查找對比文件時,速度很快),所以效率很高。dom

 

總結: 

            當同步的目錄數據量不大時,建議使用rsync+inotify 

            當同步的目錄數據量很大時(幾百G甚至1T以上)文件不少時,建議使用rsync+sersync

 

2、sersync安裝配置

2.1sersync同步邏輯圖

    當前版本的sersync依賴於rsync進行數據同步; 

wKiom1WwkXyQXHIzAACvg-bwYDE379.jpg

原理步驟:

  1. 1.  在同步服務器(Master)上開啓sersync服務,sersync負載監控配置路徑中的文件系統事件變化;

  2. 2.  調用rsync命令把更新的文件同步到目標服務器(S1 和 S2);

  3. 3.  須要在主服務器配置sersync,在同步目標服務器配置rsync server(注意:是rsync服務)

同步原理:

1.  用戶實時的往sersync服務器(M)上寫入更新文件數據;

2.  此時須要在同步主服務器(M)上配置sersync服務;

3.  在S1 和S2上開啓rsync守護進程服務,以同步拉取來自sersync服務器(M)上的數據;

經過rsync的守護進程服務後能夠發現,實際上sersync就是監控本地的數據寫入或更新事件;而後,在調用rsync客戶端的命令,將寫入或更新事件對應的文件經過rsync推送到目標服務器(S1 和S2),如此簡單;

2.2 安裝環境準備

1.系統資源列表

角色

服務器配置

操做系統版本

IP

機器名

sersync服務(M)

VM

CentOS6.6

172.16.1.28

sersync

rsync服務(S1)

VM

CentOS6.6

172.16.1.25

WEB1

rsync服務(S2)

VM

CentOS6.6

172.16.1.26

WEB2

2.檢查系統環境

[root@web ~]# cat/etc/redhat-release 
CentOS release 6.6 (Final)
[root@web ~]# uname -r
2.6.32-504.el6.x86_64
[root@web ~]# uname -m
x86_64

2.3 配置同步服務器

1.slave上部署rsync服務

2. 升級rsync到3.0版本

[root@web1 ~]# rsync --version|head -2
rsync  version 3.0.6 protocol version 30
Copyright (C) 1996-2009 byAndrew Tridgell, Wayne Davison, and others.

3.部署rsync服務

    肯定S1和S2服務器版本是最新的,這看下多臺目標服務器(S1,S2)上配置以下:

[root@web1 ~]# vim /etc/rsyncd.conf
#Rsync server
uid = root
gid = root
use chroot = no                         # 安全相關
max connections = 2000                  # 併發鏈接數
timeout = 600                           # 超時時間(秒)
pid file =/var/run/rsyncd.pid           # 指定rsync的pid目錄
lock file =/var/run/rsync.lock          # 指定rsync的鎖文件【重要】
log file = /var/log/rsyncd.log          # 指定rsync的日誌目錄
ignore errors 
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file =/etc/rsync.password
#################################################
[www]                                   # 模塊 
comment = www 
path = /data/www/
#################################################
[bbs]
comment = bbs
path = /data/bbs/
#################################################
[blog]
comment = blog
path = /data/blog/
#rsync_config____________end

特別提示: S1,S2的機器 同時部署上述服務;

上面rsync服務的配置文件,表面容許sersync主服務器(ip:172.16.1.28)訪問rsync同步模塊名爲[www][bbs][blog] 將同步過來的文件分別放入對應的path指定的目錄/data/{www,bbs,blog}下面; 若是有多臺目標服務器,則每一臺都須要進行相似的rsync服務配置,上面的uid、gid要換成您服務器的相應的同步用戶;注意,rsync服務帳戶(本文用的是root)要有對被同步目錄(/data/)的寫入更新權限;

4.建立rsync同步密碼文件,並設置權限爲600

[root@web1 ~]# echo"rsync_backup:liubl">/etc/rsync.password
[root@web1 ~]# chmod 600 /etc/rsync.password  
[root@web1 ~]# ll /etc/rsync.password        
-rw-------. 1 root root 19Jun  3 18:19 /etc/rsync.password 
[root@web1 ~]# cat /etc/rsync.password 
rsync_backup:liubl

5.啓動守護進程,並寫入開機自啓動

[root@web1 ~]# rsync --daemon
[root@web1 ~]# lsof -i:873
COMMAND  PID USER  FD   TYPE   DEVICE SIZE/OFF NODE NAME
rsync   1070 root   4u  IPv4 17190189      0t0 TCP *:rsync (LISTEN)
[root@web1 ~]# 
[root@web1 ~]# netstat -nulpt| grep rsync
tcp        0     0 0.0.0.0:873                0.0.0.0:*                   LISTEN      1070/rsync
設置開機自啓動【寫入到/etc/rc.local裏面】
[root@web1 ~]# vim /etc/rc.local
# rsync server progress
/usr/bin/rsync --daemon

6. 建立相關待同步的目錄

mkdir -p /data/{www,bbs,blog}
tree /data
提示: 此步驟在S1,S2都要執行,不然rsync服務會由於沒有PATH路徑而沒法啓動

2.4Master上配置rsync客戶端

在master上配置rsync客戶端相關權限認證:

[root@web ~]# echo"liubl">/etc/rsync.password
[root@web ~]# chmod 600 /etc/rsync.password 
[root@web ~]# ll/etc/rsync.password 
-rw-------. 1 root root 19Jun  5 05:57 /etc/rsync.password
[root@web ~]# cat /etc/rsync.password 
liubl

2.4.1master上手工測試rsync同步狀況

特別提示:此步很是關鍵,若是測試不成功,後面的sersync配好了也不會同步數據;

1)分別建立待同步數據

[root@web ~]# mkdir -p /data/{www,bbs,blog}
[root@web ~]# touch /data/www/www.log /data/bbs/bbs.log/data/blog/blog.log
[root@web ~]# tree /data/
/data/
├── bbs
│   └── bbs.log
├── blog
│   └── blog.log
└── www
    └── www.log
  
3 directories, 3 files

2)執行同步命令

# rsync-avzP /data/www/ rsync_backup@172.16.1.25::www/--password-file=/etc/rsync.password
sending incremental file list
  
sent 38 bytes  received 8 bytes  92.00 bytes/sec
total size is 0  speedup is 0.00
rsync-avzP /data/www/ rsync_backup@172.16.1.25::www/--password-file=/etc/rsync.password
rsync-avzP /data/www/ rsync_backup@172.16.1.26::www/--password-file=/etc/rsync.password
rsync-avzP /data/bbs/ rsync_backup@172.16.1.26::bbs/--password-file=/etc/rsync.password
rsync-avzP /data/bbs/ rsync_backup@172.16.1.25::bbs/--password-file=/etc/rsync.password
rsync-avzP /data/blog/ rsync_backup@172.16.1.25::blog/--password-file=/etc/rsync.password
rsync-avzP /data/blog/ rsync_backup@172.16.1.26::blog/--password-file=/etc/rsync.password
提示: 
在後面進行部署sersync以前,sersync主服務器上必需要確保手工能夠把文件推送到S1,S2上,這樣後續sersync才能調用這些命令來自動推送
在推送前關閉iptables

3)推送的命令是在 master端(也就是 sersync服務器上)操做的,同步後查看S1,S2

[root@web1 ~]# tree /data/
/data/
├── bbs
│   └── bbs.log
├── blog
│   └── blog.log
└── www
    └── www.log
  
3 directories, 3 files

2.5Mster上開始部署sersync服務

1、下載sersync

    在google code下載sersync的可執行文件版本,裏面有配置文件與可執行文件,這用

mkdir -p /applition/tools
cd /applition/tools
wgethttps://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz
【有時下載失敗,全部要本地留存才行】
[root@web ~]# tar fxzsersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
[root@web ~]# cd /usr/local/
[root@cache local]# mv GNU-Linux-x86 sersync
[root@cache local]# treesersync/
sersync/
├── confxml.xml      #   配置文件
└── sersync2         #   二進制文件【啓動sersync使用】
  
0 directories, 2 files

2、配置sersync

[root@cache local]# cp sersync/confxml.xmlsersync/confxml.xml.$(date +%F)
[root@cache local]# ll sersync/confxml.xml
-rwxr-xr-x. 1 root root 2214Oct 26  2011 sersync/confxml.xml
[root@cache local]# llsersync/confxml.xml*
-rwxr-xr-x. 1 root root 2214Oct 26  2011 sersync/confxml.xml
-rwxr-xr-x. 1 root root 2214Jun  5 06:38sersync/confxml.xml.2015-06-05

更改優化sersync配置文件:

a) 修改24--28行

 24         <localpathwatch="/opt/tongbu">     # 定義本地要同步的目錄
 25             <remote ip="127.0.0.1"name="tongbu1"/>
 26             <!--<remoteip="192.168.8.39" name="tongbu"/>-->        # 同步到哪臺機器上 tongbu模塊rsync端模塊名字
 27             <!--<remoteip="192.168.8.40" name="tongbu"/>-->        # 同步到哪臺機器上 tongbu模塊
 28         </localpath>

修改後的內容爲:

         <localpathwatch="/data/www">
             <remoteip="172.16.1.25" name="www"/>
             <remoteip="172.16.1.26" name="www"/>
         </localpath>
         <!--################################################## -->
         <localpathwatch="/data/bbs">
             <remoteip="172.16.1.25" name="bbs"/>
             <remoteip="172.16.1.26" name="bbs"/>
         </localpath>
         <!--################################################## -->
         <localpathwatch="/data/blog">
             <remote ip="172.16.1.25"name="blog"/>
             <remoteip="172.16.1.26" name="blog"/>
         </localpath>
         <!--################################################## -->
提示:  此步watch="/data/blog"就是定義服務端待同步的目錄,和目標服務器的模塊name="blog"

b)修改31--34行,認證部分【rsync密碼認證】

        <rsync>
            <commonParamsparams="-artuz"/>
            <auth start="false"users="root" passwordfile="/etc/rsync.pas"/>
             <userDefinedPortstart="false" port="874"/><!-- port=874 -->
             <timeoutstart="false" time="100"/><!-- timeout=100 -->
             <sshstart="false"/>
         </rsync>

修改後的內容以下:

         <rsync>
             <commonParamsparams="-artuz"/>
             <auth start="true"users="rsync_backup" passwordfile="/etc/rsync.password"/>
             <userDefinedPortstart="false" port="874"/><!-- port=874 -->
             <timeout start="true" time="100"/><!--timeout=100 -->
             <sshstart="false"/>
        </rsync>
# ***修改內容爲 rsync的密碼文件以及 同步所使用的帳號相似:
rsync -avzP /data/www/rsync_backup@172.16.1.25::www/ --password-file=/etc/rsync.password

c)修改37行

         <failLogpath="/tmp/rsync_fail_log.sh"timeToExecute="60"/><!--default every 60mins execute once-->

修改後以下:

        <failLog path="/usr/local/sersync/logs/rsync_fail_log.sh"timeToExecute="60"/><!--default every 60mins execute once-->
# 當同步失敗後,日誌記錄到/usr/local/sersync/logs/rsync_fail_log.sh文件中,而且每60分鐘對失敗的log進行從新同步

修改後的完整配置文件爲:

[root@cache local]# cat  sersync/confxml.xml
<?xmlversion="1.0" encoding="ISO-8859-1"?>
<headversion="2.5">
    <host hostip="localhost"port="8008"></host>
    <debug start="false"/>
    <fileSystem xfs="false"/>
    <filter start="false">
        <excludeexpression="(.*)\.svn"></exclude>
        <excludeexpression="(.*)\.gz"></exclude>
        <excludeexpression="^info/*"></exclude>
        <excludeexpression="^static/*"></exclude>
    </filter>
    <inotify>
        <delete start="true"/>
        <createFolderstart="true"/>
        <createFilestart="false"/>
        <closeWritestart="true"/>
        <moveFromstart="true"/>
        <moveTo start="true"/>
        <attrib start="false"/>
        <modify start="false"/>
    </inotify>
  
    <sersync>
        <localpathwatch="/data/www">
            <remoteip="172.16.1.25" name="www"/>
            <remoteip="172.16.1.26" name="www"/>
        </localpath>
        <!--################################################## -->
        <localpathwatch="/data/bbs">
            <remoteip="172.16.1.25" name="bbs"/>
            <remoteip="172.16.1.26" name="bbs"/>
        </localpath>
        <!--################################################## -->
        <localpathwatch="/data/blog">
            <remoteip="172.16.1.25" name="blog"/>
            <remoteip="172.16.1.26" name="blog"/>
        </localpath>
        <!-- ##################################################-->
        <rsync>
            <commonParamsparams="-artuz"/>
            <auth start="true"users="rsync_backup"passwordfile="/etc/rsync.password"/>
            <userDefinedPortstart="false" port="874"/><!-- port=874 -->
            <timeout start="true"time="100"/><!-- timeout=100 -->
            <sshstart="false"/>
        </rsync>
        <failLogpath="/usr/local/sersync/logs/rsync_fail_log.sh"timeToExecute="60"/><!--default every 60mins execute once-->
        <crontab start="false"schedule="600"><!--600mins-->
            <crontabfilterstart="false">
                <excludeexpression="*.php"></exclude>
                <excludeexpression="info/*"></exclude>
            </crontabfilter>
        </crontab>
        <plugin start="false"name="command"/>
    </sersync>
  
    <plugin name="command">
        <param prefix="/bin/sh"suffix="" ignoreError="true"/>  <!--prefix /opt/tongbu/mmm.sh suffix-->
        <filter start="false">
            <include expression="(.*)\.php"/>
            <includeexpression="(.*)\.sh"/>
        </filter>
    </plugin>
  
    <plugin name="socket">
        <localpathwatch="/opt/tongbu">
            <deshostip="192.168.138.20" port="8009"/>
        </localpath>
    </plugin>
    <plugin name="refreshCDN">
        <localpathwatch="/data0/htdocs/cms.xoyo.com/site/">
            <cdninfodomainname="ccms.chinacache.com" port="80"username="xxxx" passwd="xxxx"/>
            <sendurlbase="http://pic.xoyo.com/cms"/>
            <regexurlregex="false"match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/p_w_picpaths"/>
        </localpath>
    </plugin>
</head>

3、開啓sersync守護進程同步數據

啓動命令

[root@web ~]# /usr/local/sersync/sersync2  -d -r -o /usr/local/sersync/confxml.xml
配置sersync環境變量
[root@web ~]# echo"PATH=$PATH:/usr/local/sersync/">>/etc/profile
[root@web ~]# source /etc/profile
[root@web ~]# sersync2

啓動命令後返回結果以下爲正常:

set the system param
execute:echo50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679> /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -d      run as a daemon
option: -r      rsync all the local files to the remoteservers before the sersync work
option: -o      config xml name:  /usr/local/sersync/confxml.xml
daemon thread num: 10
parse xml config file
host ip : localhost     host port: 8008
daemon start,sersync runbehind the console 
use rsync password-file :
user is rsync_backup
passwordfile is         /etc/rsync.password
config xml parse success
please set /etc/rsyncd.confmax connections=0 Manually
sersync working thread 12  = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)
Max threads numbers is: 32 = 12(Thread pool nums) +20(Sub threads)
please according your cpu ,use -n paramto adjust the cpu rate
chmod: cannot access`/usr/local/sersync/logs/rsync_fail_log.sh': No such file or directory
------------------------------------------
rsync the directory recursivlyto the remote servers once
working please wait...
execute command: cd /data/www&& rsync -artuz -R --delete ./ --timeout=100 rsync_backup@172.16.1.25::www--password-file=/etc/rsync.password >/dev/null 2>&1 
run the sersync: 
watch path is: /data/www

補充: 多實例狀況

    1、配置多個confxml.xml文件(好比:www、bbs、blog....等等)

    2、根據不一樣的需求同步對應的實例文件

/usr/local/sersync/sersync2  -d -o /usr/local/sersync/www_confxml.xml
/usr/local/sersync/sersync2  -d -o /usr/local/sersync/bbs_confxml.xml
/usr/local/sersync/sersync2  -d -o /usr/local/sersync/blog_confxml.xml
# 多實例初始化同步命令:
/usr/local/sersync/sersync2 -r-d -o /usr/local/sersync/www_confxml.xml
/usr/local/sersync/sersync2 -r-d -o /usr/local/sersync/bbs_confxml.xml
/usr/local/sersync/sersync2 -r-d -o /usr/local/sersync/blog_confxml.xml
 
/bin/cp /etc/rc.local/etc/rc.local_$(data +%F)
cat>>/etc/rc.local<<EOF
#sync data to 25 26
/usr/local/sersync/sersync2  -d -o /usr/local/sersync/www_confxml.xml
/usr/local/sersync/sersync2  -d -o /usr/local/sersync/bbs_confxml.xml
/usr/local/sersync/sersync2  -d -o /usr/local/sersync/blog_confxml.xml
EOF


壓測:寫入10K個文件批量同步測試結果:

# for n in `seq 10000`;do echodddd>www/$n.txt;done
# ps -ef |greprsync
root     17283    1  0 Jun05 ?        00:00:02 /usr/local/sersync/sersync2 -d-r -o /usr/local/sersync/confxml.xml
root     19363    1  0 Jun05 ?        00:00:01 /usr/local/sersync/bin -d -o/usr/local/sersync/confxml.xml
root     19394    1  0 Jun05 ?        00:00:01 /usr/local/sersync/bin -r -d-o /usr/local/sersync/confxml.xml
root     19414    1  0 Jun05 ?        00:00:01 /usr/local/sersync/bin -r -d-o /usr/local/sersync/confxml.xml
root     29484 17283  0 01:33 ?        00:00:00 sh -c cd /data/www &&rsync -artuz -R  --timeout=100"./395.txt" rsync_backup@172.16.1.25::www--password-file=/etc/rsync.password >/dev/null 2>&1 
root     29487 29484  0 01:33 ?        00:00:00 rsync -artuz -R --timeout=100./395.txt rsync_backup@172.16.1.25::www --password-file=/etc/rsync.password
root     29490 17283  0 01:33 ?        00:00:00 sh -c cd /data/www &&rsync -artuz -R  --timeout=100"./396.txt" rsync_backup@172.16.1.25::www--password-file=/etc/rsync.password >/dev/null 2>&1 
提示:咱們發現本地已經寫完了10000個,可是同步的線程,依然在同步;甚至才同步了1000多個

2.6 檢查節點是否同步成功

WEB1 同步查看對比 WEB2 同步查看對比

[root@web1 data]# du /data/www/

26944   /data/www/

[root@web1 data]# du /data/www/

26964   /data/www/

[root@web1 data]# du /data/www/

27024   /data/www/

[root@web1 data]# du /data/www/

27036   /data/www/

[root@web2 data]# du /data/www/

26880   /data/www/

[root@web2 data]# du /data/www/

26908   /data/www/

[root@web2 data]# du /data/www/

26940   /data/www/

[root@web2 data]# du /data/www/

26960   /data/www/
每秒同步20--30個文件 每秒同步20-30個文件

3、命令參數說明

Sersync參數 說明
./sersync -r

-r參數做用是:開啓實時監控的以前對主服務器目錄與遠程目標機器的目錄進行一次總體同步;若是須要將sersync運行前,主服務器目錄下已經存在的全部文件或目錄所有同步到遠端,則要以 -r參數運行sersync,將本地與遠程總體同步一次;

提別說明:若是設置了過濾器,即在xml文件中,filter爲true,則暫時不能使用-r參數進行總體同步;
./sersync -o xx.xml

不指定 -o參數: sersync使用sersync可執行文件目錄下的默認配置文件confxml.xml

指定 -o 參數:能夠指定多個不一樣的配置文件,從而實現sersync多進程多實例的數據同步
./sersync -n num

-n參數爲:指定默認的線程池的線程總數;

例如: ./sersync -n 5 則指定線程總數爲5,若是不指定,默認啓動線程池數量是10,若是cpu使用太高,能夠經過該參數調低,若是機器配置較高,能夠調高默認的線程總數,提高同步效率;
./sersync -d -d參數爲:後臺服務,一般狀況下使用 -r參數對本地到遠端總體同步一遍後,在後臺運行此參數啓動守護進程實時同步;在第一次總體同步時,-d 和 -r參數常常會聯合使用;

./sersync -m

pluginName

-m參數:不進行同步,只運行插件 ./sersync -m pluginName

例如:./sersync -m command,則在監控到事件後,不對遠程目標服務器進行同步,而是直接運行command插件
組合命令使用說明:
-n 8 -o liubl.xml -r -d 多個參數能夠配合使用,例如:./sersync -n 16 -o config.xml -r -d 表示設置線程池工做線程爲16個,指定liubl.xml做爲配置文件,在實時監控前 作一次總體同步,以守護進程方式在後臺運行;
./sersync --help 很遺憾,它沒有查看幫助(須要的話2條路,要麼看源代碼,要麼自測求驗證)

4、sersync服務配置文件參數詳解

4.1 初始的配置文件

    sersync可選功能是經過xml配置文件來實現的,基本配置文件以下:

[root@cache sersync]# cat confxml.xml.2015-06-05 
     1 <?xml version="1.0" encoding="ISO-8859-1"?>
     2 <head version="2.5">
     3     <host hostip="localhost" port="8008"></host>
     4     <debug start="false"/>
     5     <fileSystem xfs="false"/>
     6     <filter start="false">
     7         <exclude expression="(.*)\.svn"></exclude>
     8         <exclude expression="(.*)\.gz"></exclude>
     9         <exclude expression="^info/*"></exclude>
    10         <exclude expression="^static/*"></exclude>
    11     </filter>
    12     <inotify>
    13         <delete start="true"/>
    14         <createFolder start="true"/>
    15         <createFile start="false"/>
    16         <closeWrite start="true"/>
    17         <moveFrom start="true"/>
    18         <moveTo start="true"/>
    19         <attrib start="false"/>
    20         <modify start="false"/>
    21     </inotify>
    22
    23     <sersync>
    24         <localpath watch="/opt/tongbu">
    25              <remoteip="127.0.0.1" name="tongbu1"/>
    26              <!--<remoteip="192.168.8.39" name="tongbu"/>-->
    27              <!--<remoteip="192.168.8.40" name="tongbu"/>-->
    28         </localpath>
    29         <rsync>
    30              <commonParamsparams="-artuz"/>
    31              <auth start="false"users="root" passwordfile="/etc/rsync.pas"/>
    32              <userDefinedPortstart="false" port="874"/><!-- port=874 -->
    33              <timeoutstart="false" time="100"/><!-- timeout=100 -->
    34              <sshstart="false"/>
    35         </rsync>
    36         <failLog path="/tmp/rsync_fail_log.sh"timeToExecute="60"/><!--default every 60mins execute once-->
    37         <crontab start="false"schedule="600"><!--600mins-->
    38              <crontabfilterstart="false">
    39                  <excludeexpression="*.php"></exclude>
    40                  <excludeexpression="info/*"></exclude>
    41              </crontabfilter>
    42         </crontab>
    43         <plugin start="false" name="command"/>
    44     </sersync>
    45
    46     <plugin name="command">
    47         <param prefix="/bin/sh" suffix=""ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->
    48         <filter start="false">
    49              <includeexpression="(.*)\.php"/>
    50              <includeexpression="(.*)\.sh"/>
    51         </filter>
    52     </plugin>
    53
    54      <plugin name="socket">
    55         <localpath watch="/opt/tongbu">
    56              <deshostip="192.168.138.20" port="8009"/>
    57         </localpath>
    58     </plugin>
    59     <plugin name="refreshCDN">
    60         <localpath watch="/data0/htdocs/cms.xoyo.com/site/">
    61              <cdninfodomainname="ccms.chinacache.com" port="80"username="xxxx" passwd="xxxx"/>
    62              <sendurlbase="http://pic.xoyo.com/cms"/>
    63              <regexurlregex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/p_w_picpaths"/>
    64         </localpath>
    65     </plugin>
    66 </head>

4.2 xml配置文件說明

    說明: xml配置文件的註釋不用「#」,而是<!-- 中間是註釋內容 -->

     3     <host hostip="localhost"port="8008"></host>

hostip與port是針對插件的保留字段,對於同步功能沒有任何做用,保留默認便可;

4.3 Debug開啓開關

     4     <debug start="false"/>

設置爲true,表示開啓debug模式,會在sersync正在運行的控制檯打印inotify時間與rsync同步命令;

4.4 XFS文件系統開關

     5     <fileSystem xfs="false"/>

對於xfs文件系統的用戶,須要將這個選項開啓,才能使用sersync正常工做;

4.5 filter文件過濾功能

    說明:通常狀況下,不給客戶端添加過濾,若有必要才添加;

     6     <filter start="false">
     7         <exclude expression="(.*)\.svn"></exclude>
     8         <exclude expression="(.*)\.gz"></exclude>
     9         <exclude expression="^info/*"></exclude>
    10         <exclude expression="^static/*"></exclude>
    11     </filter>

對於大多數應用,能夠嘗試把createFile(監控文件事件選項)設置爲false來提升性能,減小rsync通信;

由於拷貝文件到監控目錄會產生create事件與close_write事件,因此若是關閉create事件,只監控文件拷貝結束時的時間close_write,一樣能夠實現文件完整同步;

注意:強將creatFolder保持爲true,若是將createFolder設爲false,則不會對產生的目錄進行監控,該目錄下的子文件與子目錄也不會被監控;因此除非特殊須要,請開啓; 默認狀況下對建立文件(目錄)事件與刪除文件(目錄)事件都進行監控,若是項目中不須要刪除遠程目標服務器的文件(目錄),則能夠將delete參數設置爲false,則不對刪除事件進行監控;


本文出處http://liubao0312.blog.51cto.com/2213529/1677586

相關文章
相關標籤/搜索