집 >운영 및 유지보수 >리눅스 운영 및 유지 관리 >Linux에서 두 서버의 실시간 동기화 방법 소개
다음 요구 사항을 가정합니다.
두 개의 서버를 가정합니다.
192.168.0.1 원본 서버에는 /opt/test/
192.168.0.2 대상 서버에 /opt/bak/test/
디렉터리가 있습니다. 목적 구현 방법은 두 서버의 특정 파일 디렉터리를 유지하여 실시간 동기화를 유지하는 것입니다
구현 방법: rsync+inotify-tools의 조합을 통해 달성
먼저 두 시스템에 신뢰 관계를 추가합니다. . 구체적인 방법은 이전 기사에 소개되었습니다. 통과
자세히 보기: Linux는 비밀번호 로그인 없이 신뢰 관계를 추가합니다
필요한 소프트웨어 설치:
원본 서버와 대상 모두에 설치해야 합니다. server
원본 서버: rsync 클라이언트이며 구성이 필요하지 않습니다
대상 서버: rsync 서버이며 /etc/rsyncd.conf의 내용을 구성해야 합니다
운영 체제에서 지원하는지 확인하고 다음과 같이 실행합니다.
uname -r 확인 버전
반환:
2.6.32-358.6.1.el6.x86_64
이는 버전 2.6.32가 2.6.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 테스트:
로그 파일을 볼 수 있습니다: /opt/soft/log/rsync.log 명령은 다음과 같습니다: 실시간 동기화 상황을 관찰합니다.
tail -f /opt/soft/log/rsync.log
오류 해결:
이는 라이브러리 파일을 열 수 없기 때문입니다. 찾았으니까 그냥 가볍게 인연을 만들어보세요
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
위 내용은 Linux에서 두 서버의 실시간 동기화 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!