Lsyncd+ssh
1、描述
開源lsyncd采用inotify原理監聽某一個目錄,如果目錄内發生變化,利用rsync協定自動同步多伺服器,是以lsyncd是一個輕量級的實時鏡像解決方案。
細粒度的定制可以通過配置檔案來實作,配置檔案可以編寫lua代碼,這種方式簡單,功能強大和靈活的配置。
2、開源軟體
依賴lua環境:
1
2
3
4
5
6
7
8
9
<code>#wget https://lsyncd.googlecode.com/files/lsyncd-2.1.5.tar.gz</code>
<code>#yum install lua lua-static lua-devel</code>
<code>#tar -xzvf lsyncd-2.1.5.tar.gz</code>
<code>#cd lsyncd-2.1.5</code>
<code>#./configure</code>
<code>#make</code>
<code>#make install</code>
<code>#whereis lsyncd</code>
<code>lsyncd: </code><code>/usr/local/bin/lsyncd</code>
建立配置檔案目錄:
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<code>#mkdir /etc/lsyncd</code>
<code>#cd /etc/lsyncd</code>
<code>#vim lsyncd.lua --注意:lua文法的規則</code>
<code>--檔案配置文法</code>
<code>settings{</code>
<code> </code><code>logfile = </code><code>"/var/log/lsyncd.log"</code><code>, --日志路徑</code>
<code> </code><code>statusFile = </code><code>"/var/log/lsyncd-status.log"</code><code>, --狀态檔案</code>
<code> </code><code>pidfile = </code><code>"/var/run/lsyncd.pid"</code><code>, --pid檔案路徑</code>
<code> </code><code>statusInterval = 1, --狀态檔案寫入最短時間</code>
<code> </code><code>nodaemon = </code><code>false</code><code>, --daemon運作</code>
<code> </code><code>maxProcesses = 4, --最大程序</code>
<code> </code><code>maxDelays = 1 --最大延遲</code>
<code>}</code>
<code>--多host同步</code>
<code>servers = {</code>
<code> </code><code>"192.168.0.10"</code><code>,</code>
<code> </code><code>"192.168.0.20"</code>
<code>--同步規則</code>
<code>for</code> <code>_, server </code><code>in</code> <code>ipairs(servers) </code><code>do</code> <code>--疊代servers</code>
<code> </code><code>sync</code><code>{</code>
<code> </code>
<code> </code><code>default.rsyncssh, --預設</code><code>rsync</code><code>+</code><code>ssh</code><code>,</code><code>rsync</code><code>版本需要更新3以上版本</code>
<code> </code><code>source</code> <code>= </code><code>"/test1"</code><code>, --源目錄</code>
<code> </code><code>delete = </code><code>true</code><code>, </code>
<code> </code><code>host = server, </code>
<code> </code><code>targetdir = </code><code>"/test1"</code><code>, --目标目錄</code>
<code> </code><code>exclude={ </code>
<code> </code><code>".txt"</code> <code>--排除</code>
<code> </code><code>},</code>
<code> </code><code>rsync</code> <code>= {</code>
<code> </code><code>binary = </code><code>"/usr/bin/rsync"</code><code>,</code>
<code> </code><code>archive = </code><code>true</code><code>, --歸檔</code>
<code> </code><code>compress = </code><code>false</code><code>, --壓縮</code>
<code> </code><code>owner = </code><code>true</code><code>, --屬主</code>
<code> </code><code>perms = </code><code>true</code><code>, --權限</code>
<code> </code><code>whole_file = </code><code>false</code>
<code> </code><code>ssh</code> <code>= {</code>
<code> </code><code>port = 22</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code>end</code>
注意:伺服器之間需要配置ssh 無密碼登入
啟動lsyncd服務:
<code>#lsyncd /etc/lsyncd/lsyncd.lua</code>
<code>#ps -ef | grep lsyncd</code>
<code>lsyncd lsyncd.lua</code>
本人線上環境同步檔案使用rsync+crontab方式同步,由于同步檔案複雜,是以crontab檔案相當備援複雜,經過整改,整個配置一個lua檔案搞定,而且同步模式基本能達到實時同步,想實作更複雜的朋友,需要研究lua文法。如果有什麼建議,請各位朋友不吝賜教。
To change the limit, run:
To make the change permanent, edit the file /etc/sysctl.conf and add this line to the end of the file:
本文轉自 Art_Hero 51CTO部落格,原文連結:http://blog.51cto.com/curran/1416620,如需轉載請自行聯系原作者