>운영 및 유지보수 >리눅스 운영 및 유지 관리 >Linux에서 두 서버의 실시간 동기화 방법 소개

Linux에서 두 서버의 실시간 동기화 방법 소개

巴扎黑
巴扎黑원래의
2017-08-22 13:13:584477검색

다음 요구 사항을 가정합니다.

두 개의 서버를 가정합니다.

192.168.0.1 원본 서버에는 /opt/test/

192.168.0.2 대상 서버에 /opt/bak/test/

디렉터리가 있습니다. 목적 구현 방법은 두 서버의 특정 파일 디렉터리를 유지하여 실시간 동기화를 유지하는 것입니다

구현 방법: rsync+inotify-tools의 조합을 통해 달성

준비 작업:

먼저 두 시스템에 신뢰 관계를 추가합니다. . 구체적인 방법은 이전 기사에 소개되었습니다. 통과

자세히 보기: Linux는 비밀번호 로그인 없이 신뢰 관계를 추가합니다

필요한 소프트웨어 설치:

1 rsync 동기화 소프트웨어

원본 서버와 대상 모두에 설치해야 합니다. server

원본 서버: rsync 클라이언트이며 구성이 필요하지 않습니다

대상 서버: rsync 서버이며 /etc/rsyncd.conf의 내용을 구성해야 합니다

2. 이 도구는 Linux 운영 체제 커널 지원이 필요한 실시간 파일 모니터링 도구입니다. 커널 지원이 필요합니다. 최소 버전은 2.6.13

운영 체제에서 지원하는지 확인하고 다음과 같이 실행합니다.

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. 시작 정보

대상 서버: 먼저 rsync 백그라운드 서비스 시작: /usr/bin/rsync --daemon

소스 서버: inotify_bak.sh 실행 및

5 테스트:

생성 소스 서버 디렉터리의 새 디렉터리 및 파일, inotify_bak.sh 스크립트는 이를 감지하여 대상 서버의 관련 디렉터리와 동기화합니다

로그 파일을 볼 수 있습니다: /opt/soft/log/rsync.log 명령은 다음과 같습니다: 실시간 동기화 상황을 관찰합니다.

    tail -f  /opt/soft/log/rsync.log

오류 해결:

/usr/local/bin/inotifywait: 공유 라이브러리를 로드하는 동안 오류 발생: libinotifytools.so.0: 공유 개체 파일을 열 수 없습니다: 해당 파일이나 디렉터리가 없습니다

이는 라이브러리 파일을 열 수 없기 때문입니다. 찾았으니까 그냥 가볍게 인연을 만들어보세요

ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0

위 내용은 Linux에서 두 서버의 실시간 동기화 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.