Linux unison 效率,Linux中inotify+unison实现数据双向(多向)实时同步
引言
在某種特定的情況下需要在多個Linux服務(wù)器上做指定文件文件夾的實時同步,一個服務(wù)器修改了文件其它服務(wù)器的文件能保持一致.
準(zhǔn)備環(huán)境
Centos服務(wù)器1:139.199.152.84
Centos服務(wù)器2:111.230.103.208
指定同步的文件夾:/usr/Tomcat/image與/usr/Tomcat/upload 目錄兩個服務(wù)器都創(chuàng)建好目錄
目錄.png
配置步驟
安裝Objective Caml compiler
服務(wù)器1與服務(wù)器2都要安裝
#yum install make gcc gcc-c++
#cd/tmp
#wget http://caml.inria.fr/pub/distrib/ocaml-4.03/ocaml-4.03.0.tar.gz
#tar -zxvf ocaml-4.03.0.tar.gz
#cd ocaml-4.03.0
#./configure
#make world opt
#make install
安裝Unison
服務(wù)器1與服務(wù)器2都要安裝
#yum install ctags-etags
#cd/tmp
#wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.48.4.tar.gz
#mkdir unison-2.48.4 && cd unison-2.48.4
#tar -zxvf /tmp/unison-2.48.4.tar.gz
#cd src
#make UISTYLE=text THREADS=true
#cp unison /usr/local/bin/
//有版本信息出現(xiàn)則安裝成功
#unison -version
安裝inotfy
服務(wù)器1與服務(wù)器2同樣安裝
#yum -y install inotify-tools
配置雙機(jī)SSH信任
兩臺服務(wù)器先安裝一下rsync
#yum install rsync -y
ssh信任.png
測試是否成功只要不用輸入密碼說明配置成功
服務(wù)器1測試
#ssh -p 22 111.230.103.208 date
服務(wù)器2測試
#ssh -p 22 139.199.152.84 date
測試SSH信任.png
在服務(wù)器139.199.152.84配置
#ssh-keygen
//連續(xù)按三次空格
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
//給權(quán)限
# chmod 700 ~/.ssh
# chmod 600 ~/.ssh/authorized_keys
//需要輸入一次密碼
# rsync -avz /root/.ssh/authorized_keys root@111.230.103.208:/root/.ssh/authorized_keys
在服務(wù)器111.230.103.208配置
#ssh-keygen
//連續(xù)按三次空格
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
//給權(quán)限
# chmod 700 ~/.ssh
# chmod 600 ~/.ssh/authorized_keys
//需要輸入一次密碼
# rsync -avz /root/.ssh/authorized_keys root@139.199.152.84:/root/.ssh/authorized_keys
配置雙機(jī)同步
在服務(wù)器139.199.152.84配置
//先進(jìn)入/tem/uniso/src/目錄
#mkdir -p /root/.unison/
#vim /root/.unison/default.prf
//配置的內(nèi)容
#Unison preferences file
//root是配置的兩個目錄本地和遠(yuǎn)程,注意遠(yuǎn)程IP地址后面是兩個//
root = /usr/Tomcat/
root = ssh://root@111.230.103.208//usr/Tomcat/
//path 指定的文件夾如果是Tomcat整個目錄不用指定path
path = upload
path = image
#force =
#ignore =
batch = true
maxthreads = 300
#repeat = 1
#retry = 3
owner = true
group = true
//使用ssh壓縮傳輸方式
perms = -1
fastcheck = false
//true表示通過文件創(chuàng)建時間來比較兩地文件,若為false比較文件的內(nèi)容
rsync = false
//保持同步過來保持讀寫權(quán)限
sshargs = -C
xferbycopying = true
//默認(rèn)值是true,表示當(dāng)需要同步的兩個目錄一個為空時,unison將停止,這里設(shè)置為false,即便為空unison也不會停止運轉(zhuǎn)
confirmbigdel = false
log = true
logfile = /root/.unison/unison.log
服務(wù)器1.png
在服務(wù)器111.230.103.208配置
//先進(jìn)入/tem/uniso/src/目錄
#mkdir -p /root/.unison/
#vim /root/.unison/default.prf
//配置的內(nèi)容
#Unison preferences file
//root是配置的兩個目錄本地和遠(yuǎn)程,注意遠(yuǎn)程IP地址后面是兩個//
root = /usr/Tomcat/
root = ssh://root@139.199.152.84//usr/Tomcat/
//path 指定的文件夾如果是Tomcat整個目錄不用指定path
path = upload
path = image
#force =
#ignore =
batch = true
maxthreads = 300
#repeat = 1
#retry = 3
owner = true
group = true
//使用ssh壓縮傳輸方式
perms = -1
fastcheck = false
//true表示通過文件創(chuàng)建時間來比較兩地文件,若為false比較文件的內(nèi)容
rsync = false
//保持同步過來保持讀寫權(quán)限
sshargs = -C
xferbycopying = true
//默認(rèn)值是true,表示當(dāng)需要同步的兩個目錄一個為空時,unison將停止,這里設(shè)置為false,即便為空unison也不會停止運轉(zhuǎn)
confirmbigdel = false
log = true
logfile = /root/.unison/unison.log
服務(wù)器2.png
創(chuàng)建腳本文件
兩個服務(wù)器都要創(chuàng)建.sh腳本
//到usr目錄下創(chuàng)建
#cd usr/
#vim unison.sh
//內(nèi)容
#/bin/bash
src="/usr/Tomcat/"
/usr/bin/inotifywait -mrq -e create,delete,modify,move $src | while read line; do
/usr/local/bin/unison
echo -n "$(date +%F-%T) $line" >> /var/log/inotify.log
done
//執(zhí)行腳本
#sh unison.sh
腳本編寫.png
//讓腳本后臺執(zhí)行
#chmod +x unison.sh
#nohup ./unison.sh >/dev/null 2>&1 &
完成
從服務(wù)器1 upload中添加一個文件刷新服務(wù)器2的upload看是不是同步過去了
upload.png
檢查image文件夾是否可以同步
image文件.png
檢查nosynchro文件夾是否屏蔽了同步
image.png
多服務(wù)器實時同步思路
image.png
總結(jié)
以上是生活随笔為你收集整理的Linux unison 效率,Linux中inotify+unison实现数据双向(多向)实时同步的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx 屏蔽某些ip,防止有些人刷接
- 下一篇: linux 其他常用命令