Linux unison 效率,linux利用unison实现双向或多向实时同步
以下內容是linux服務器中雙向(多向)同步的部署過程,
環境:
服務器A:192.168.1.6,同步目錄:/var/www
服務器B:192.168.1.7,同步目錄:/var/www
安裝unison
首先安裝ocaml,版本至少為3.07或更高
下載地址:http://caml.inria.fr
tar xf ocaml-3.10.2.tar.gz
cd ocaml-3.10.2
./configure
make world opt
make install
cd ..
安裝unison
下載地址:www.seas.upenn.edu/~bcpierce/unison/
tar xvf unison-2.32.52.tar.gz
cd unison-2.32.52
make UISTYLE=text
cp unison /usr/local/bin
cd ..
注:
UISTYLE=text THREADS=true STATIC=true表示使用命令行方式,加入線程支持以靜態模式編譯
安裝inotify
下載地址:http://inotify-tools.sourceforge.net
tar xvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install
cd ..
配置雙機ssh信任
參考此教程:http://www.lvtao.net/server/ssh-no-password.html
添加腳本
在192.168.1.6服務器A上添加腳本:
mkdir /script
vim /script/inotify.sh
######################以下是腳本內容#########################
#/bin/bash
UNISON=`ps -ef |grep -v grep|grep -c inotifywait`
if [ ${UNISON} -lt 1 ]
then
ip2="192.168.1.7"
src2="/var/www/"
dst2="/var/www/ "
/usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line
do
/usr/local/bin/unison -batch $src2 ssh://$ip2/$dst2
echo -n "$line " >> /var/log/inotify/inotify$(date +%u).log
echo ` date +%F\ %T " " -f1-4` >> /var/log/inotify/inotify$(date +%u).log
done
fi
###########################################################
在192.168.1.7服務器上添加腳本:
mkdir /script
vim /script/inotify.sh
######################以下是腳本內容#########################
#/bin/bash
UNISON=`ps -ef |grep -v grep|grep -c inotifywait`
if [ ${UNISON} -lt 1 ]
then
ip2="192.168.1.6"
src2="/var/www/"
dst2="/var/www/ "
/usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line
do
/usr/local/bin/unison -batch $src2 ssh://$ip2/$dst2
echo -n "$line " >> /var/log/inotify/inotify$(date +%u).log
echo ` date +%F\ %T " " -f1-4` >> /var/log/inotify/inotify$(date +%u).log
done
fi
###########################################################
在二臺服務器上修改腳本權限:
chmod a+x /script/inotify.sh
在計劃任務中添加任務(原本在/etc/rc.local下添加開機啟動的,但出問題,腳本并不執行)
crontab –e
#unison+inotify
* * * * * /bin/sh /script/inotify.sh > /dev/null 2>&1 &
測試:
重啟電腦,測試二臺服務器中/var/www的內容是否能同步
不重啟電腦,手動執行腳本也可以測試
sh /script/inotify
相關參數說明
特別注意:在遠程使用unison時,在遠程主機和目錄直接要多加一個"/"
force??? 表示會以本地所指定文件夾為標準,將該目錄同步到遠端。這里需要注意,如果指定了force參數,那么Unison就變成了單項同步了,也就是說會以force指定的文件夾為準進行同步,類似與rsync。
Unison雙向同步基本原理是:假如有A B兩個文件夾,A文件夾把自己的改動同步到B,B文件夾也把自己的改動同步到A,最后A B兩文件夾的內容相同,是AB文件夾的合集。
Unison雙向同步的一個缺點是:對于一個文件在兩個同步文件夾中都被修改時,unison是不會去同步的,因為unison無法判斷以那個為準。
testserver????? 該參數用來測試連通性,連接到服務器后退出,并不進行實際的同步
servercmd?????? 指定服務器端的unison命令路徑
ignore = Path?? 表示忽略指定目錄,即同步時不同步它。
batch = true??? 表示全自動模式,接受缺省動作,并執行。
-fastcheck true 表示同步時僅通過文件的創建時間來比較,如果選項為false,Unison則將比較兩地文件的內容。
log = true????? 表示在終端輸出運行信息。
logfile???????? 指定輸出的log文件。
另外,Unison有很多參數,這里僅介紹常用的幾個,詳細的請參看Unison手冊。
-auto?????????? 接受缺省的動作,然后等待用戶確認是否執行。
-batch????????? batch mode, 全自動模式,接受缺省動作,并執行。
-ignore xxx???? 增加 xxx 到忽略列表中
-ignorecase [true|false|default]?? 是否忽略文件名大小寫
-follow xxx??? 是否支持對符號連接指向內容的同步
owner = true?? 保持同步過來的文件屬主
group = true?? 保持同步過來的文件組信息
perms = -1???? 保持同步過來的文件讀寫權限
repeat = 1???? 間隔1秒后,開始新的一次同步檢查
retry = 3????? 失敗重試次數
sshargs = -C?? 使用ssh的壓縮傳輸方式
xferbycopying? 優化參數,默認true
-immutable xxx?? 不變目錄,掃描時可以忽略
-silent????????? 安靜模式,除了錯誤,不打印任何信息
-times?????????? 同步修改時間
-path xxx??????? 只同步 -path 參數指定的子目錄以及文件,而非整個目錄,-path 可以多次出現。
總結
以上是生活随笔為你收集整理的Linux unison 效率,linux利用unison实现双向或多向实时同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据分析】如何构建指标体系 设计一份
- 下一篇: 计算机应用基础上海交通大学出版社双色版,