> 백엔드 개발 > PHP 튜토리얼 > Linux에서 두 서버 간의 실시간 파일 동기화 체계 설계 및 구현

Linux에서 두 서버 간의 실시간 파일 동기화 체계 설계 및 구현

WBOY
풀어 주다: 2016-07-30 13:31:28
원래의
1149명이 탐색했습니다.

원본 주소 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

done


참고: 여기서 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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿