Linux에서 두 서버 간의 실시간 파일 동기화를 구현하는 방법

黄舟
풀어 주다: 2017-06-07 10:31:00
원래의
2483명이 탐색했습니다.

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

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

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

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

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

구현 방법: rsync+inotify-tools

Preparation:

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

세부 정보 보기: linux신뢰 관계 및 비밀번호 없는 로그인 추가

Requiresinstallation소프트웨어:

1 rsync 동기화 소프트웨어

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

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

대상 서버: rsync 서버이며 /etc/rsyncd.conf의 내용이 필요합니다. inotify-tools 도구

이 도구는 Linux 운영 체제 커널 지원이 필요하며, 커널 지원에는 최소 버전 2.6.13

이 필요합니다. 다음과 같이 실행하세요:

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

대상 서버: 먼저 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: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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