>  기사  >  운영 및 유지보수  >  rsync+inotify 실시간 동기화 예제 튜토리얼 공유

rsync+inotify 실시간 동기화 예제 튜토리얼 공유

PHP中文网
PHP中文网원래의
2017-06-20 11:57:301439검색

1.rsync

기존 cp, tar 백업 방법과 비교하여 rsyncrsync를 통해 높은 보안, 빠른 백업 및 증분 백업 지원이라는 장점이 있습니다. 원격 서버에 대한 파일 서버 데이터의 정기적인 백업, 로컬 디스크의 정기적인 데이터 미러링 등과 같이 높은 실시간 성능이 필요하지 않은 데이터 백업 요구 사항을 해결할 수 있습니다.

응용 시스템의 규모가 계속 확장됨에 따라 데이터 보안 및 안정성에 대한 요구 사항이 더욱 높아졌습니다. rsync는 고급 비즈니스에서 점차 많은 단점을 노출시켰습니다. 우선 rsync가 실시간으로 동기화할 때 비교 및 ​​차등 전송을 위해 모든 파일을 검사해야 합니다. 파일 수가 수백만, 심지어 수천만 개에 달하면 모든 파일을 검사하는 데 시간이 많이 걸리고 그 중 일부만 변경되므로 매우 비효율적인 방법입니다. 둘째, rsync는 실시간으로 데이터를 모니터링하고 동기화할 수 없습니다. linux 데몬을 통해 시작 동기화를 수행할 수 있지만 두 시작 작업 사이에는 시간 차이가 있어야 하며 이로 인해 서버와 클라이언트 간의 불일치가 발생하고 애플리케이션 장애 시 데이터를 완전히 복구할 수 없습니다. . 위의 이유를 바탕으로 rsync+inotify가 등장했습니다!

2.inotify

(모니터링)

inotify

는 강력하고 세분화된 비동기 파일 시스템 이벤트 모니터링 메커니즘입니다. inotify를 통해 파일 시스템의 추가, 삭제, 수정, 이동 등 다양한 미묘한 이벤트를 모니터링할 수 있습니다. 이 커널 인터페이스를 사용하면 타사 소프트웨어가 파일 시스템의 다양한 변경 사항을 모니터링할 수 있으며 inotify - tools는 그러한 타사 소프트웨어입니다.

1.

서버 구성(rsync만 설치해야 함)

/tmp/에 공유:

1.

가상 사용자 추가 useradd rsync -s / sbin/nologin

chown -R rsync.rsync /tmp/

2.

Configurationrsyncd.conf구성 파일

vim rsyncd.conf

#rsync_config_______________시작

#rsyncd.conf start##

uid = rsync(사용자)

gid = rsync(사용자)

use chroot = no(보안 문제 방지를 위해)

최대 연결 = 200(내 백업 서버에 연결할 수 있는 클라이언트 수)

timeout = 300(시간 초과, 조치 없이 연결을 끊는 데 걸리는 시간)

pid 파일 = /var/run/rsyncd.pid(프로세스 번호, 이 파일에 프로세스 번호를 넣는다)

lock 파일 = /var/run/rsync.lock ("lock" 개념과 동일, 화장실 문을 잠그는 개념)

log 파일 = /var/log/rsyncd.log (오류가 발생했습니다. 로그 파일을 볼 수 있습니다)

[tmp] (모듈)

path = /tmp/ (경로)

오류 무시 (무시 오류 )

읽기 전용 = false(읽기 전용은 false, 읽기 및 쓰기 가능을 의미)

list = false(허용되지 않는 목록)

hosts 허용 = 10.0.0.0/24(허용되는 호스트)

hosts 거부 = 0.0.0.0/32 (거부된 호스트)

auth users = rsync_backup (가상 사용자 지원)

secrets 파일 = /etc/rsync.password (사용자 해당 비밀번호) 파일)

#rsync_config_______________end

3. 비밀번호 파일 만들기

echo "rsync_backup:123456" >/etc/rsync.password

모든 비밀번호 파일 600 권한 chmod 600 / etc/rsync.password

4.rsync --daemon 데몬

모드 시작

5. rsync --daemon/etc/rc.local

에 추가

echo "/usr/bin/rsync --daomom" >>/etc/rc.local

2. 클라이언트 구성

설치 rsyncinotify

1.설치 rsync(그냥 설치하세요)

2 . 비밀번호 인증 파일 생성

echo “123456” >/etc/rsync.password 비밀번호만 필요

권한 설정 600 chmod 600 /etc/rsync.password

3. 설치 inotify:

cd /home/cai/tools/

wget

54 tar xf ify-tools-3.14.tar.gz

55 ls

56 cd inotify-tools-3.14

57 ./configure --prefix=/usr/local/inotify-tools-3.14

58 make && make install

59냠 install -y gcc

60 ./configure --prefix=/usr/local/inotify-tools-3.14

61 make && make install

62 cd /usr/local/inotify-tools- 4.

스크립트가 모두 배치되었습니다

/server/scripts

Download

vim /server/scripts/rsync.sh

#!/bin/sh

host=192.168.76.1 29 src=/tmp/

des=tmp

user=rsync_backup

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d%m%y % H:%M' --format ' %T %w%f%e' -e 수정, 삭제, 생성, 속성 $src |

파일을 읽는 동안

do

/usr/bin /rsync -avz --delete $src $user@$host::$des --password-file=/etc/rsync.password

echo "${files}이(가) rsync되었습니다" >>/var/ log/rsyncd.log 2>&1

done

exit o

~

764

권한 부여

테스트 스크립트:

sh /서버/스크립트/rsync. sh

스크립트 실행:

sh /server/scripts/rsync.sh &

부팅 항목에 rsync.sh스크립트를 넣습니다: echo

“/tmp/rsync.sh ” > >/etc/rc.local

위 내용은 rsync+inotify 실시간 동기화 예제 튜토리얼 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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