部署inotify-tools进行文件自动同步

转自http://blog.chinaunix.net/uid-25266990-id-3018455.html


创建inotify自动同步脚本

vim inotify_rsync.sh
#!/bin/sh
SRC=/home/rsync/test
[email protected]:/home/rsync/test
   
/bin/su - rsync
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read D E F
    do
        /usr/bin/rsync -ahqzt --delete $SRC $DST
    done


赋予脚本可执行权限
chmod +x inotify_rsync.sh
执行脚本
/root/inotify_rsync.sh &
设置脚本开机自启动
cat "/root/inotify_rsync.sh &" >> /etc/rc.local


#########################################

相关注解如下:
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${src}
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
-e create,move,delete,modify,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件

/usr/bin/rsync -ahqzt --delete $SRC $DST
-a 存档模式
-h 保存硬连接
-q 制止非错误信息
-z 压缩文件数据在传输
-t 维护修改时间
-delete 删除于多余文件

要排除同步某个目录时,为rsync添加--exculde=PATTERN参数,注意,路径是相对路径,具体查看man rsync。
要排除某个目录的事件监听的处理时,为inotifywait添加--exclude或--excludei参数,具体查看man inotifywait。

inotifywait 命令产生三个返回值,分别是“日期,时间,文件” 这3个返回值会做为参数传给read,因此脚本中的“while read D E F” 写法细化了返回值。

你可能感兴趣的:(rsync,自动同步,inotify-tools)