inotify+unison 양방향 동기화 환경 배치

인터넷에서 많은 방안을 찾았는데 liux에서 파일 동기화를 하는 데는 다음과 같은 몇 가지 방법이 있다.
1. nfs는 웹 데이터 공유를 실현한다 2. rsync+inotify는 웹 데이터 동기화를 실현한다 3. rsync+sersync는 더욱 빠르고 자원을 절약하여 웹 데이터 동기화를 실현한다 4. unison+inotify는 웹 데이터 양방향 동기화를 실현한다
여기에 네 번째 방안을 상세하게 소개하는데, 앞의 몇 가지는 모두 각자의 부족함이 있다.네 번째 방안만 양방향 실시간 동기화를 지원하고 그 중 한 서버가 다운되면 웹 접근에 영향을 주지 않는다.(ps: 이전에 nfs를 좋아했는데 설정이 매우 간단하지만 치명적인 단점은 웹 서비스 한 대가 끊어지면 웹 페이지에 접근할 수 없다는 것이다.
환경 구축, 두 서버의 양방향 동기화 필요
192.168.10.1은 서버1,
192.168.10.2 서버2
첫 번째 단계는 두 서버 간에 ssh를 통해 비밀번호가 없이 접근할 수 있도록 보증합니다. (이곳은 루트 사용자를 예로 들습니다.)
예: 192.168.10.1에서 SSH에서 192.168.10.2로 암호 없이 액세스
1. 192.168.10.1에서 조작: 1. cd~/.ssh2, ssh-keygen-trsa는 계속 택시를 타면 됩니다.3、cp id_rsa.pub authorized_keys4、ssh-copy-id -i [email protected]
참고 2223 포트와 같은 2223 포트가 아닌 경우 다음과 같습니다.
1、cd ~/.ssh
2. ssh-keygen-trsa는 계속 택시를 타면 됩니다.
3、ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22223 [email protected]"
이 사용자에게 승인이 완료됩니다.2단계, 소프트웨어 설치, 서버 1과 서버 2 모두 설치
Unison을 설치하려면 먼저 ocaml을 설치합니다. 버전 3.07 이상 다운로드 주소:http://caml.inria.fr/pub/distrib/ocaml-3.12/tar xf ocaml-3.12.0.tar.gzcd ocaml-3.12.0./configuremake world optmake installcd ..
설치 unison
다운로드 주소:http://www.seas.upenn.edu/~bcpierce/unison//download/releases/unison-2.40.65/tar xvf unison-2.40.65.tar.gzcd unison-2.40.65make UISTYLE=text cp unison /usr/local/bincd ..
inotify 설치
다운로드 주소:http://inotify-tools.sourceforge.nettar xvf inotify-tools-3.14.tar.gzcd inotify-tools-3.14./configuremakemake installcd ..
여기에 필요한 소프트웨어가 설치되었습니다. 서버 1 서버에서 이 명령을 실행하여 두 서버 간에 파일을 동기화할 수 있는지 확인할 수 있습니다.
# unison -batch /home/server1/ ssh://192.168.10.2//home/server2 
만약 이때 다음과 같은 실수를 안는다면
/usr/local/bin/inotifywait: error while loading shared libraries: libinotify

이 명령을 실행할 수 있습니다.
ln -sv /usr/local/lib/libinotify* /usr/lib/

실행이 성공하면 디렉터리 아래의 파일이 동기화되었는지 보십시오.
3단계, 만들기.sh 스크립트로 동기화
1) server1에 스크립트/root/inotify를 만듭니다.sh(chmod a+x/root/inotify.sh):
#/bin/bash
ip2="192.168.10.2"
src2="/home/server1/"
dst2="/home/server2/"
/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.log
echo `date | cut -d " " -f1-4` >> /var/log/inotify.log
done

참고: 22포트가 아닌 2223포트의 경우 ip1 = "192.168.10.2:2223"
1) server2에서 스크립트/root/inotify를 만듭니다.sh(chmod a+x/root/inotify.sh):
#/bin/bash 
ip1="192.168.10.1"
src1="/home/server2/"
dst1="/home/server1/"
/usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src1 | while read line; do
/usr/local/bin/unison -batch $src1 ssh://$ip1/$dst1
echo -n "$line " >> /var/log/inotify.log
echo `date | cut -d " " -f1-4` >> /var/log/inotify.log
done

참고: 22포트가 아닌 2223포트의 경우 ip1 = "192.168.10.1:2223"
마지막으로 각각 서버 1과 서버 2에서 위의 두 스크립트를 실행하면 두 서버의 디렉터리가 서로 실시간으로 동기화됩니다!!!
두 대의 기기가 수동으로 실행됩니다:nohup/root/inotify.sh&하면 돼요.
/etc/rc에 넣을 수도 있습니다.local에서/root/inotofy입니다.sh & disown

좋은 웹페이지 즐겨찾기