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

简介:

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


创建inotify自动同步脚本

vim inotify_rsync.sh
#!/bin/sh
SRC=/home/rsync/test
DST=rsync@192.168.10.4:/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” 写法细化了返回值。

相关文章
|
3月前
|
Linux
在Linux中,rsync 同步数据时,如何过滤出所有.txt的文件不同步?
在Linux中,rsync 同步数据时,如何过滤出所有.txt的文件不同步?
|
Unix Linux Shell
Linux 下使用crontab 定时打包日志并删除已被打包的日志
f=`ls /home/hls/apache-tomcat-7.0.61/logs -1 -c` #获取logs下文件列表( /home/hls/apache-tomcat-7.0.61/logs 是日志的所在的路径)
76 0
|
监控 Shell API
使用inotify-tools与rsync构建实时备份系统
使用inotifywait监控文件变动 inotifywait是 inotify-tools 包中提供的一个工具,它使用 inotify API 来监控文件/目录中的变动情况。
846 0
|
监控 Linux
Linux 使用inotify-tools监听文件或目录
转载: Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。
1451 0
|
监控 应用服务中间件 nginx
|
安全 算法 网络安全