1. 程式人生 > >Centos7 unison+inotify資料目錄雙向同步

Centos7 unison+inotify資料目錄雙向同步

unison+inotify

#安裝Objective Caml compiler
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
yum -y 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/
unison -version # 有版本資訊出現,則安裝成功


6. 安裝inotify
inotify官方地址:https://en.wikipedia.org/wiki/Inotify
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo


yum -y install inotify-tools

#配置雙機ssh信任

unison的使用
unison的用法非常靈活和簡單,可以通過如下三種方式呼叫unison。 
第一種方式:”unison profile_name [options]” 
unison預設會讀取~/.unison目錄下的配置檔案”profile_name.prf”。

注意,在這種方式下,命令列中並沒有指出要進行同步的兩個地址,所以,此種呼叫unison的方式必須在配置檔案profile_name.prf中通過相關的root指令設定同步的路徑和同步的引數,如:

#Unison preferences file 
root = /tmp/test 
root = ssh://[email protected]

//tmp/test/ 
#force = 
#ignore = 
batch = true

 


第二種方式:”unison profile root1 root2 [options]” 
root1、root2分別表示要執行同步的兩個路徑。這兩個路徑可以是本地目錄路徑,也可以是遠端伺服器的路徑,如ssh://[email protected]//tmp/test 。由於同步的路徑已經在命令列指定了,所以這裡無需在profile.prf配置檔案中進行root指令的相關設定。

第三種方式:”unison root1 root2 [options]” 
這種方式相當於執行”unison default root1 root2”命令,即unison預設讀取default.prf的配置。

9. 配置雙機web目錄同步
[[email protected] src]# mkdir -p /root/.unison/
[[email protected] src]# vim /root/.unison/default.prf

#Unison preferences file 
root = /data/
root = ssh://[email protected]//data/
#force = 
#ignore = 
batch = true
maxthreads = 300
#repeat = 1 
#retry = 3 
owner = true
group = true
perms = -1
fastcheck = false
rsync = false
sshargs = -C
xferbycopying = true
log = true
logfile = /root/.unison/unison.log


[[email protected] tmp]# mkdir -p /root/.unison/
[[email protected] tmp]# vim /root/.unison/default.prf

#Unison preferences file 
root = /data/
root = ssh://[email protected]//data/
#force = 
#ignore = 
batch = true
maxthreads = 300
#repeat = 1 
#retry = 3 
owner = true
group = true
perms = -1
fastcheck = false
rsync = false
sshargs = -C
xferbycopying = true
log = true
logfile = /root/.unison/unison.log

在兩臺機器都新增如下指令碼,並使用nohup方式執行。有需要則將指令碼新增到/etc/rc.local中。

#/bin/bash 
src="/data/"
/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