원본 주소 http://blog.csdn.net/5iasp/article/details/13630927
Linux에서 두 서버에 대한 실시간 파일 동기화 방식 설계 및 구현
가정 다음과 같은 요구 사항이 있습니다.
두 개의 서버를 가정합니다.
192.168.0.1 원본 서버에 /opt/test/
192.168.0.2 디렉터리가 있습니다. 대상 서버에는 /opt/bak 디렉토리가 있습니다. /test/
의 목적은 두 서버의 특정 파일 디렉토리를 실시간으로 동기화하는 것입니다
구현 방법: rsync+inotify-tools 조합
소프트웨어 설치 필요:
1. rsync 동기화 소프트웨어
를 원본 서버와 서버 모두에 설치해야 합니다. 대상 서버
원본 서버: rsync 클라이언트이므로 구성할 필요가 없습니다.
대상 서버: rsync 서버이며 /etc/rsyncd.conf의 내용 구성 필요
설치 후 새 구성 파일을 생성해야 합니다: /etc/rsyncd.conf
구성 파일 위치: /etc/
파일 내용은 다음과 같습니다.
uid = root
gid = root
chroot 사용 = no
최대 연결 = 10
strict 모드 = yes
pid 파일=/var/run/rsyncd.pid
잠금 파일=/var/run/rsyncd.lock
로그 파일 = =/var/run/rsyncd.log
[www ]
경로= /opt/bak/test
comment= 분석
읽기 전용 = false
호스트 허용 = *
2. -tools 도구
이 도구는 실시간 파일 모니터링 도구이며 Linux 운영 체제 커널 지원이 필요합니다. 커널을 지원하려면 버전 13 이상이 필요합니다
운영 체제에서 지원하는지 확인하세요. 다음과 같이 실행합니다:
uname -r 버전 보기
반환:
2.6.32-220.4.1.el6 .x86_64
은 해당 버전 2.6.32는 2.6.13보다 높으며 지원됩니다.
실행:
ll /proc/sys/fs/inotify
총 0
-rw-r--r-- 1 루트 루트 0 10월 18일 12:18 max_queued_events
-rw-r--r-- 루트 루트 1개 0 10월 18일 12:18 max_user_instances
-rw-r--r-- 루트 루트 1개 0 10월 18일 12:18 max_user_watches
출력이 3개이면 기본적으로 inotify가 지원된다는 의미이며 inotify-tools 도구를 설치할 수 있습니다.
지원되지 않는 경우 새 버전의 Linux 운영 체제를 사용해야 합니다. system
버전이 요구사항을 충족하면 설치가 가능합니다.
inotify-tools를 설치하면 관련 설치 디렉터리에 다음 두 파일이 생성됩니다.
ll /usr/local/bin/
total 88
-rwxr- xr- x 1 root root 44327 Oct 10 15:32 inotifywait
-rwxr-xr-x 1 root root 41417 Oct 10 15:32 inotifywatch
는 설치가 성공했음을 의미합니다.
참고: Inotify는 원본 서버에 설치해야 하며, Inotify는 대상 서버에 설치할 필요가 없습니다.
3. 관련 스크립트:
원본 서버에 새 스크립트 만들기:
inotify_bak.sh
#!/ bin/bash
src=/opt/test/
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f%e' -e close_write,delete,create,attrib $src | 파일을 읽는 동안
실행
echo " ${file}이(가) 다시 동기화되었습니다" >>/opt/soft/ log/rsync.log 2>&1
참고: 여기서 www는 대상 서버/etc에 있습니다. /rsyncd.conf에 구성된 모듈 이름: [www]
실행 제공 허가: chmod +x inotify_bak.sh
그런 다음 실행: inotify_bak.sh & 실행을 위해 백그라운드에 두십시오
4. 시작 정보
대상 서버: rsync를 시작합니다. 백그라운드 서비스 우선: /usr/bin/rsync --daemon
원본 서버: inotify_bak.sh 실행 &
5. 테스트:
새 디렉터리 만들기 소스 서버 디렉터리에 파일을 저장하면 inotify_bak.sh 스크립트가 이를 감지한 다음 대상 서버의 관련 디렉터리와 동기화합니다.
예 로그 파일을 확인하세요: /opt/soft/log /rsync.log 명령은 다음과 같습니다. 실시간 동기화 상황을 관찰합니다.
tail -f /opt/soft/log/rsync.log
위 내용은 관련 측면을 포함하여 Linux에서 두 서버 간의 실시간 파일 동기화 설계 및 구현을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.