inotify + rsync 실시간 백업, inotify + rsync 동기 백업 mysql 데이터 시뮬레이션, inotify 기능 및 구현 원리, rsync 파일 실시간 동기화-~ @ Twang

환경 준비

centos7 두 개, 방화벽 및 selinux
A 백업 종료 ——192.168.112.153 [서버 측]
B 백업 소스 ——192.168.112.172 [클라이언트 측]

소개

  • Inotify는 강력하고 세분화 된 비동기 파일 시스템 이벤트 모니터링 메커니즘입니다. Linux 커널은 2.6.13 이후 Inotify 지원을 추가했습니다. Inotify를 통해 파일 시스템의 추가, 삭제, 수정 및 이동을 모니터링 할 수 있습니다. 이벤트,이 커널 인터페이스를 사용하여 타사 소프트웨어는 파일 시스템에서 파일의 다양한 변경 사항을 모니터링 할 수 있으며 inotify-tools는 이러한 타사 소프트웨어입니다.
  • Rsync는 높은 보안 성, 신속한 백업, 증분 백업 지원이라는 장점이 있습니다. rsync를 통해 실시간 성능이 필요하지 않은 데이터 백업 요구 사항을 해결할 수 있지만 rsync는 데이터를 실시간으로 모니터링하고 동기화 할 수 없습니다.

원리

  • Inotify는 동기화 클라이언트에만 배포하면됩니다. 모니터링되는 파일이 변경되면 rsync 스크립트가 동기화되도록 트리거됩니다.

A에서 작업

1. EPEL 설치

yum -y install epel-release

2. inotify 및 rsync 서비스 설치

yum -y install inotify-tools rsync

3. rsync 구성 파일 수정

vim /etc/rsyncd.conf 
uid=root
gid=root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[mysqldata]
path = /data/mysqldata
comment = mysql data
ignore errors
read only = no
write only = no
hosts allow = 192.168.112.172
list = false
auth users = rsync_user
secrets file = /etc/rsync.password
  • 참고 : ip는 B의 ip [즉, 클라이언트의 ip]를 쓰고
    경로의 경로를 생성해야합니다! ! !

4. 디렉토리 생성

mkdir -p /data/mysqldata

5. rsync 사용자 이름 및 암호 파일을 만들고 권한을 추가합니다.

 echo "rsync_user:rsync_user_pwd" > /etc/rsync.password
 chmod -R 600 /etc/rsync.password

6. 서비스를 시작하고 포트를 확인합니다.

rsync --daemon
   netstat -nlpt|grep 873

여기에 사진 설명 삽입

B에서 작업

7. EPEL 설치

yum -y install epel-release

8. inotify 및 rsync 서비스 설치

yum -y install inotify-tools rsync

9. 클라이언트 암호 파일 설정 및 권한 수정

echo "rsync_user_pwd" > /etc/rsync.password
chmod -R 600 /etc/rsync.password

10. 스크립팅

vim bf.sh
#!/bin/bash
ip=192.168.112.153
src=/data/mysqldata_src/
dst=mysqldata
user=rsync_user
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${
    
    src} \
    | while read file
do
rsync -vzrtopg --delete --progress $src $user@$ip::$dst --password-file=/etc/rsync.password > /dev/null && echo "$src was rsyncd"
done
  • 참고 : 6 행의 경로, yum이 설치되고 /usr/bin/inotifywait
    소스가 설치 /usr/local/bin/inotifywait
    되고 src 경로를 생성해야합니다! ! !
  • 경로 확인
    여기에 사진 설명 삽입

11. 디렉토리 생성

mkdir -p /data/mysqldata_src

12. 스크립트 실행

sh bf.sh

13. 해당 디렉토리를 입력하고 파일을 만듭니다.

cd /data/mysqldata_src/
 touch aa.txt

14. A로 다시 전환하고

cd /data/mysqldata/
ls

여기에 사진 설명 삽입

추천

출처blog.csdn.net/qing1912/article/details/109309850