XML配置說(shuō)明
sersync可選功能是通過(guò)xml配置文件來(lái)實(shí)現(xiàn)的,基本配置文件如下:
——————————————————————————————————————————————
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <head version="2.5">
03 <host hostip="localhost" port="8008"></host>
04 <filter start="false">
05 <exclude expression="(.*)\.gz"></exclude>
06 <exclude expression="^info/*"></exclude>
07 </filter>
08 <inotify>
09 <delete start="true"/>
10 <createFolder start="true"/>
<createFile start="true"/>
11 </inotify>
12 <debug start="false"/>
13 <sersync>
14 <localpath watch="/opt/tongbu">
15 <remote ip="192.168.0.104" name="tongbu1"/>
16 <!--<remote ip="192.168.8.39" name="tongbu"/>-->
17 <!--<remote ip="192.168.8.40" name="tongbu"/>-->
18 </localpath>
19 <rsync>
20 <commonParams params="-artuz"/>
20 <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
21 <userDefinedPort start="false" port="874"/><!-- port=874 -->
22 <timeout start="false" time="100"/><!-- timeout=100 -->
23 <ssh start="false"/>
24 </rsync>
25 <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60min execute once-->
26 <crontab start="false" schedule="600"><!--600mins-->
27 <crontabfilter start="false">
28 <exclude expression="*.gz"></exclude>
29 <exclude expression="info/*"></exclude>
30 </crontabfilter>
31 </crontab>
32 <plugin start="false" name="command"/>
33 </sersync>
——————————————————————————————————————————————
下面做逐行的進(jìn)行解釋說(shuō)明:
03 <host hostip="localhost" port="8008"></host>
hostip與port是針對(duì)插件的保留字段,對(duì)于同步功能沒(méi)有任何作用,保留默認(rèn)即可。
filter文件過(guò)濾功能
對(duì)于sersync監(jiān)控的文件,會(huì)默認(rèn)過(guò)濾系統(tǒng)的臨時(shí)文件(以“.”開頭,以“~”結(jié)尾),除了這些文件外,可以自定義其他需要過(guò)濾的文件。
04 <filter start="true">
05 <exclude expression="(.*)\.gz"></exclude>
06 <exclude expression="^info/*"></exclude>
07 </filter>
將start設(shè)置為 true,在exclude標(biāo)簽中,填寫正則表達(dá)式,默認(rèn)給出兩個(gè)例子分別是過(guò)濾以".gz"結(jié)尾的文件與過(guò)濾監(jiān)控目錄下的info路徑(監(jiān)控路徑/info/*),可以根據(jù)需要添加,但開啟的時(shí)候,自己測(cè)試一下,正則表達(dá)式如果出現(xiàn)錯(cuò)誤,控制臺(tái)會(huì)有提示。相比較使用rsync 的exclude功能,被過(guò)濾的路徑,不會(huì)加入監(jiān)控,大大減少rsync的通訊量。
inotify監(jiān)控參數(shù)設(shè)定(優(yōu)化)
對(duì)于inotify監(jiān)控參數(shù)可以進(jìn)行設(shè)置,根據(jù)您項(xiàng)目的特點(diǎn)優(yōu)化srsync。
08 <inotify>
09 <delete start="true"/>
10 <createFolder start="true"/>
11 <createFile start="true"/>
12 </inotify>
對(duì)于大多數(shù)應(yīng)用,可以嘗試把createFile(監(jiān)控文件事件選項(xiàng))設(shè)置為false來(lái)提高性能,減少 rsync通訊。因?yàn)榭截愇募奖O(jiān)控目錄會(huì)產(chǎn)生create事件與close_write事件,所以如果關(guān)閉create事件,只監(jiān)控文件拷貝結(jié)束時(shí)的事 件close_write,同樣可以實(shí)現(xiàn)文件完整同步。
注意:強(qiáng)將createFolder保持為true,如果將createFolder設(shè)為false,則不會(huì)對(duì)產(chǎn)生的目錄進(jìn)行監(jiān)控,該目錄下的子文件與子目錄也不會(huì)被監(jiān)控。所以除非特殊需要,請(qǐng)開啟。
默認(rèn)情況下對(duì)創(chuàng)建文件(目錄)事件與刪除文件(目錄)事件都進(jìn)行監(jiān)控,如果項(xiàng)目中不需要?jiǎng)h除遠(yuǎn)程目標(biāo)服務(wù)器的文件(目錄),則可以將delete 參數(shù)設(shè)置為false,則不對(duì)刪除事件進(jìn)行監(jiān)控。
Debug開啟
12 <debug start="false"/>
設(shè)置為true,開啟debug模式,會(huì)在sersync正在運(yùn)行的控制臺(tái),打印inotify事件與rsync同步命令。
XFS文件系統(tǒng)
<fileSystem xfs="false"/>
對(duì)于xfs文件系統(tǒng)的用戶,需要將這個(gè)選項(xiàng)開啟,才能使sersync正常工作
文件監(jiān)控與遠(yuǎn)程同步設(shè)置
3 <sersync>
14 <localpath watch="/opt/tongbu">
15 <remote ip="192.168.0.104" name="tongbu1"/>
16 <!--<remote ip="192.168.8.39" name="tongbu"/>-->
17 <!--<remote ip="192.168.8.40" name="tongbu"/>-->
18 </localpath>
詳見
sersync2 完全安裝配置說(shuō)明(一) ----基本功能使用Rsync參數(shù)配置
19 <rsync>
20 <commonParams params="-artuz"/>
20 <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
21 <userDefinedPort start="false" port="874"/><!-- port=874 -->
22 <timeout start="false" time="100"/><!-- timeout=100 -->
23 <ssh start="false"/>
24 </rsync>
commonParams可以用戶自定義rsync參數(shù),默認(rèn)是-artuz
auth start="false" 設(shè)置為true的時(shí)候,使用rsync的認(rèn)證模式傳送,需要配置user與passwrodfile(--password-file=/etc/rsync.pas),來(lái)使用。userDefinedPort 當(dāng)遠(yuǎn)程同步目標(biāo)服務(wù)器的rsync端口不是默認(rèn)端口的時(shí)候使用(--port=874)。timeout設(shè)置rsync的timeout時(shí)間(--timeout=100)。ssh 使用rsync -e ssh的方式進(jìn)行傳輸。
失敗日志腳步配置
25 <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60min
對(duì)于失敗的傳輸,會(huì)進(jìn)行重新傳送,再次失敗就會(huì)寫入rsync_fail_log,然后每隔一段時(shí)間(timeToExecute進(jìn)行設(shè)置)執(zhí)行該腳本再次重新傳送,然后清空該腳本。可以通過(guò)path來(lái)設(shè)置日志路徑。
Crontab定期整體同步功能
26 <crontab start="false" schedule="600"><!--600mins-->
27 <crontabfilter start="false">
28 <exclude expression="*.gz"></exclude>
29 <exclude expression="info/*"></exclude>
30 </crontabfilter>
31 </crontab>
crontab可以對(duì)監(jiān)控路徑與遠(yuǎn)程目標(biāo)主機(jī)每隔一段時(shí)間進(jìn)行一次整體同步,可能由于一些原因兩次失敗重傳都失敗了,這個(gè)時(shí)候如果開啟了crontab功能,還可以進(jìn)一步保證各個(gè)服務(wù)器文件一致,如果文件量比較大,crontab的時(shí)間間隔要設(shè)的大一些,否則可能增加通訊開銷。schedule這個(gè)參數(shù)是設(shè)置crontab的時(shí)間間隔,默認(rèn)是600分鐘
如果開啟了filter文件過(guò)濾功能,那么crontab整體同步也需要設(shè)置過(guò)濾,否則雖然實(shí)時(shí)同步的時(shí)候文件被過(guò)濾了,但crontab整體同步的時(shí)候如果不單獨(dú)設(shè)置crontabfilter,還會(huì)將需過(guò)濾的文件同步到遠(yuǎn)程,crontab的過(guò)濾正則與filter過(guò)濾的不同,也給出了兩個(gè)實(shí)例分別對(duì)應(yīng)與過(guò)濾文件與目錄??傊绻瑫r(shí)開啟了filter與crontab,則要開啟crontab的crontabfilter,并按示例設(shè)置使其與filter的過(guò)濾一一對(duì)應(yīng)。
插件設(shè)置
32 <plugin start="false" name="command"/>
當(dāng)設(shè)置為true的時(shí)候,將文件同步到遠(yuǎn)程服務(wù)器后會(huì)調(diào)用name參數(shù)指定的插件。詳見請(qǐng)看
插件設(shè)置。