1.虚拟机:192.168.20.140 server端

          192.168.20.137 client端


2.下载安装rsync

    下载:tar -zxvf rsync-3.1.1.tar.gz

          cd     rsync-3.1.1

          ./configure --prefix=/usr/local/rsync

           make && make install


3.配置rsync的主配置文件。

        vim /etc/rsyncd.conf (这里要注意,是rsyncd.conf,不是rsync.conf,不然会读取不到)

        

uid = root            #/运行rsync守护进程的用户名

gid = root 

use chroot = no        #/不使用chroot

max connections = 0    #/不限制最大数

log file=/var/log/rsyncd.log     #日志记录文件的存放位置

pid file=/var/run/rsyncd.pid     #pid文件的存放位置    

lock file=/var/run/rsyncd.lock    #锁文件的存放位置


[21dir]      #/认证模块,client端是要认证的,要统一

path = /home/rsync/   #/同步路径

comment = rsync from 192.168.20.140   #/rsync 服务来自server端

read only = no    

list = no   

auth users = rsyncuser    #/认证用户名

secrets file = /etc/21.pas    #/用户密码认证



3.server端的密码表

    vim /etc/21.pas

     rsyncuser:123456

设置权限防止非root的修改密码

    chmod 600 /etc/21.pas

4.启动rsync服务

/usr/local/rsync/bin/rsync  --port=873 --address=192.168.20.140 --daemon

netstat -tlunp 查看rsync的873端口是否开启


5.client端

     vim /etc/21.pas

    123456  #/这里只需要密码就可以,能跟server端匹对上

   chmod 600 /etc/21.pas


6.测试是否同步(用客户端测试)

    /usr/bin/rsync -avH --delete --progress --password-file=/etc/21.pas  /home/rsync/ rsyncuser@192.168.20.140::21dir


7.Server端下载安装inotify服务

     tar xzvf inotify-tools-3.14.tar.gz
     cd inotify-tools-3.13
     ./configure  --prefix=/usr/local/inotify
     make
     make install


8.监控脚本

#!/bin/bash

#function:rsync 192.168.20.140 to 192.168.20.137

#


if [ ! -f /etc/21.pas ]

then

        echo "123456" > /etc/21.pas

        chmod 600 /etc/21.pas

fi


log=/usr/local/inotify/logs/rsync.log

path="/home/rsync"

host="192.168.20.137"

module="21dir"


/usr/local/inotify/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write

,modify,delete,create,attrib $path |  while read DATE TIME DIR FILE; do

        FILECHANGE=${DIR}${FILE}

      /usr/bin/rsync -avH --delete  --progress --password-file=/etc/21.pas $path  --exclude-from="/usr/local/inotify/logs/rules.txt" rsyncuser@$host::$module && echo "At ${TIME} on ${DATE}, file $FILECHANGE was backed up via rsync" >> $log


done

exit 0


9.添加脚本权限

    chmod +x inotify.sh

10.执行脚本

    sh inotify.sh

    

11.详解命令

/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${src}
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件


-e close_write,modify,delete,create,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件

/usr/bin/rsync -avH --delete  --progress --password-file
-a 存档模式
-H 保存硬连接
-delete 删除于多余文件

--password-file 密码文件

12.同步文件

    /usr/bin/rsync -vzrtopg --progress rsyncuser@192.168.20.140::21dir/(可以在填单一的文件名) /home/rsync/ (同步到client端的路径)

    

13.删除文件

    /usr/bin/rsync -avH --delete --progress --password-file=/etc/21.pas  /home/rsync/ rsyncuser@192.168.20.140::21dir(通过client端删除server端/home/rsync的文件中不一样的文件)