rsync和inotify实时同步

1.inotify作用:内核模块,监控文件和目录的变化,通过inotify-tools工具提供inotify-wait(持续监控)和inotify-watch(短期监控)两个模块进行监控;

2.优化内核参数:

max_queued_events ##最大的时间列队

max_user_instances ##最大的实例

max_user_watchs ##最大的监控文件数量

注:实时同步是基于监控文件的,所以需要在文件所在端,并且rsync只能在发起端发出;

总结:实时同步只能处理上行,不能实现下行;

3.inotify+rsync实时同步案例:上行同步

a.安装inotify-tools;发起端192.168.100.150

tar  zxvf  inotify-tools-*.tar.gz  -C  /usr/src/

cd  /usr/src/inotify-tools-*/

./configure  &&make &&make  install

ls  /usr/local/bin/inotify*

b.inotify的使用:发起端192.168.100.150

vi  /etc/sysctl.conf

  fs.inotify.max_queued_events = 16384    ##监控事件队列数

  fs.inotify.max_user_instances = 1024    ##监控实例数

  fs.inotify.max_user_watches = 1048576  ##监控的文件数量

:wq

sysctl  -p

c.测试inotify命令;发起端192.168.100.150

    mkdir /root/data

    inotifywait -mrq  -e  modify,create,attrib,move,delete  /root/data  

选项注解:-m持续监控,r递归目录,q简化输出,-e指定监控事件:modify修改、create创建、attrib权限修改、move移动、delete删除;在其他终端操作文件,查看变化

d.编写脚本:发起端192.168.100.150

vi  rsync_inotify.sh    ##实时同步脚本

  #!/bin/bash

  RSYNC="rsync -avzH /root/data/ [email protected]:/tmp/ --delete"

  INT_CMD="inotifywait -mrq -e modify,create,move,delete,attrib /root/data/"

  $INT_CMD |while read DIRECOTRY EVENT FILE;do

  $RSYNC

  done

:wq

chmod  +x  rsync_inotify.sh

rsync_inotify.sh  &  ##启动脚本

e.生成密钥对;发起端192.168.100.150

    ssh-keygen -t rsa

ssh-copy-id [email protected]

f.测试验证,发起端创建测试文件。发起端192.168.100.150

cd /root/data

touch 1.txt

g.备份源验证文件是否同步;备份端192.168.100.151

    ls /tmp/

猜你喜欢

转载自blog.csdn.net/Richardlygo/article/details/81664944