一、前期准备

 1、准备两台主机,我这里的系统是rhel7,分别是192.168.4.11和192.168.4.22


二、rsync命令的用法:

1、基本格式:   rsync  [选项]   目录1/   目录2/

  注意加斜线和不加斜线的区别,加斜线就是只同步目录下的文件

2、选项:列举一些常用的选项

 -n      //测试同步过程,不做实际修改

 -r      //递归,包括目录/子目录及所有文件

 -l      //保留符号链接文件

 -a     //归档模式,相当于-rlptgoD

 --delete     //删除目标文件夹内多于的文档

 -z     //传输中启用压缩/解压

 -v    //显示同步信息

3、测试远程同步:在4.11和4.22 /opt/dir1下测试,从4.11同步到4.22下

   rsync -avz --delete /opt/dir1/ 192.168.4.22:/opt/dir1/

4、在测试过程中就会发现,会要求输入远程主机的密码

   如何去掉密码的验证呢,用ssh密钥对

  生成:在4.11主机上 :ssh-keygen

  传递公钥到被远程端: ssh-copy-id 192.168.4.22


三、安装inotify-tools-3.13软件和基本使用

 1、安装依赖:gcc,make

 2、源码安装inotify-tools-3.13

 3、得到命令:inotifywait

 4、inotifywait     选项   目标文件夹

    -m 持续监控   -r 递归目录   -q 减少输出信息


四、利用while循环+inotifywait+rsync实现实时同步

1、脚本

    #!/bin/bash

   while inotifywait -qqr /opt/dir1/        //监控该目录,如果发生变化,则执行下面的语句

    do

       rsync -az --delete /opt/dir1/ [email protected]:/opt/dir1/     //拷贝该目录到远端的主机,实时同步

    done

 2、可以直接放置在后台进行

 3、测试,可以在11上创建文件或者修改,然后去22上查看是否有变化