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]
#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