<a href="http://hi.baidu.com/johntech/blog/item/be8559d2ebc99282a1ec9c18.html">http://hi.baidu.com/johntech/blog/item/be8559d2ebc99282a1ec9c18.html</a>
一..linux之間的檔案實時同步
sersync的設計用以替代inotify-tool工具,同樣是調用rsync+inotify來執行實時同步的,它的效率更高。
server端:
1.首先需要确定核心版本為2.6(支援inotify)并确認系統已經安裝rsync
請參考我如下的操作步驟:
2.配置rsync.conf:
以上的配置檔案說明在server配置了一個名為tongbu1的子產品,需要同步的目錄為/usr/local/test 通路的使用者名為transfer,密碼存放檔案為rsyncd.secrets。注意修改密碼檔案的屬性600.
3.開啟rsync daemon格式
client端配置:
1..首先需要下載下傳sersync最新版本2.5
2.解壓并編輯confxml.xml ,confxml.xml 是sersync的配置檔案,用于指定需要同步的目錄及是否重新整理cdn接口等
-bash-3.2# tar zxvf sersync2[1].5beta1_32bit_binary.tar.gz
-bash-3.2# cd GNU-Linux-x86/
目前最新版本中已經增加了同步過濾,密碼驗證以及--delete功能,仍然不支援多目錄同步到多目錄的操作。
以上配置檔案我做一下解釋:使用使用者名transfer(密碼存放在/etc/rsync.pas中)将本機的/opt/tongbu/實時目錄同步到區域網路内38和188這兩個rsync server端定義的tongbu1和webbackup子產品中(我的截圖有一個錯誤188處的注釋沒完整去掉),并且開啟--delete功能。
3.啟用實時同步功能(完整同步一次并開啟駐留程序)
-bash-3.2# ./sersync2 -d -r
請使用 sersync --heltp 擷取幫助
linux之間的實時檔案同步到這裡就完成了、
二.linux向windows做實時的檔案同步
這個可以通過samba挂載windows目錄到linux上面實作。我們仍然采用sersync進行實時同步。window安裝比較簡單,就不截圖了
1..在windows端下載下傳cwrsync
<a href="http://sourceforge.net/project/showfiles.php?group_id=69227&package_id=68081">http://sourceforge.net/project/showfiles.php?group_id=69227&package_id=68081</a>
2..安裝并編輯rsyncd.conf檔案
3..設定RsyncServer為自動啟動
幾點說明:配置和linux下的是差不多的。要注意的是密碼檔案的所有使用者的讀屬性都要去掉,我這裡權限出了問題。記得同步的目錄d盤的cms檔案夾要開啟SvcCWRSYNC使用者的完全控制權限,記得修改配置檔案後重新開機服務。
更改密碼檔案屬組方法:
在cmd下進入安裝目錄,chmod 600 /rsyncd.passwd
錯誤invalid uid nobody處置辦法:
打開配置檔案:rsyncd.conf
在檔案開頭添加
uid = 0
gid = 0
3..用戶端的配置
同之前linux到linux之間的實時同步是一樣的
三.windows到linux之間的資料實時同步
提供以下三種方法供各位參考,其中方法一和方法二延時約1分鐘,方法三實時。
1..linux通過samba挂載windows目錄
遺憾的是在server端的資料更改,samba并不通知核心,inotify也就無法檢視到。可以定時(幾秒鐘)向挂載的目錄中echo一個空檔案,用以激活inotify進行同步。經過線上使用此方法尚可,延時不到1分。samba的效率确實不高
2.sersync定期去取位于windows下的cwrsync定義的子產品内容
配置就不提供了,經過試驗此方式效率優于samba但是仍然不能做到實時,即使每秒鐘去同步一次也不可以。
3.借助windows下的軟體實作
我們使用此種方式在沒有專線的情況下每天大約實時傳輸約3g的資料量,暫時沒有出現什麼問題。