다음 요구 사항을 가정합니다.
두 개의 서버를 가정합니다.
192.168.0.1 원본 서버에는 /opt/test/
192.168.0.2 대상 서버에 /opt/bak/test/
디렉터리가 있습니다. 목적 구현 방법은 두 서버의 특정 파일 디렉터리를 유지하여 실시간 동기화를 유지합니다
구현 방법: rsync+inotify-tools
먼저 a를 추가합니다. 두 시스템에 대한 신뢰 관계, 구체적인 방법은 이전 기사에서 소개되었습니다
세부 정보 보기: linux신뢰 관계 및 비밀번호 없는 로그인 추가
Requiresinstallation소프트웨어:
원본 서버와 대상 서버 모두에 설치해야 합니다.
원본 서버: rsync 클라이언트이므로 구성이 필요하지 않습니다.
대상 서버: rsync 서버이며 /etc/rsyncd.conf의 내용이 필요합니다. inotify-tools 도구
이 필요합니다. 다음과 같이 실행하세요:
uname -r 버전 보기
반환:
2.6.32-358.6.1.el6.x86_64
이는 버전 2.6.32가 13보다 크고 지원된다는 의미입니다.
실행:
ll /proc/sys/fs/inotify total 0 -rw-r--r-- 1 root root 0 Oct 18 12:18 max_queued_events -rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_instances -rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_watches
출력이 3개이면 기본적으로 inotify가 지원되며 inotify-tools 도구를 설치할 수 있다는 의미입니다.
지원되지 않으면 새 버전의 Linux 운영 체제가 필요합니다.
버전이 요구 사항을 충족하면 설치할 수 있습니다.
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는 대상 서버에 설치할 필요가 없습니다.
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 | while read file do /usr/bin/rsync -arzuq $src 192.168.0.1::www/ echo " ${file} was rsynced" >>/opt/soft/log/rsync.log 2>&1 done
실행 권한 부여:
chmod +x inotify_bak.sh
실행: nohup inotify_ bak.sh & put 백그라운드 실행
4. 시작 정보
원본 서버: inotify_bak.sh 실행 &
5 테스트:
tail -f /opt/soft/log/rsync.log
오류 해결 방법:
/usr/local/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0: cannot open shared object file: No such file or directory
라이브러리 파일을 찾을 수 없기 때문입니다. 소프트 연결을 하세요
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
위 내용은 Linux에서 두 서버 간의 실시간 파일 동기화를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!