inotify 文件同步整理

今天文件同步有问题,所以决定加上inotify好久没有使用了,整理出来,以便以后使用

1.inotify介绍

inotify是一种强大细粒度、异步文件系统事件监控机制,Linux内核从2.6.13开始支持inotify,通过inotify可以监控文件系统中添加、删除、修改、移动等细微事件。

第三方软件inotify-tools 是基于此的第三方工具

2.下载

地址:https://github.com/rvoicilas/inotify-tools/wiki

3.安装

tar -xf inotify-tools-3.14.tar.gz 
cd inotify-tools-3.14
./configure
make
make install

安装完成生产的命令:

# ll /usr/local/bin/inotifywa*
-rwxr-xr-x 1 root root 44279 6月   2 15:03 /usr/local/bin/inotifywait
-rwxr-xr-x 1 root root 41369 6月   2 15:03 /usr/local/bin/inotifywatch

4.inotify 参数说明

inotify定义了一些接口参数,用来限制inotify消耗kernel memory的大小。都是内存参数,可以根据需要调节

# ll /proc/sys/fs/inotify/
总用量 0
-rw-r--r-- 1 root root 0 6月   2 16:06 max_queued_events
-rw-r--r-- 1 root root 0 6月   2 16:06 max_user_instances
-rw-r--r-- 1 root root 0 6月   2 16:06 max_user_watches

max_queued_events:表示调用inotify_init时分配到inotify instace中可以排队的event数的最大值,超出被丢弃。

max_user_instances:表示每一个real user ID可创建的inotify instance的上限

max_user_watches:表示每个inotify实例相关联的watches的上限,就是每个inotify实例可监控的最大目录数量。

5.事件参数说明

可以使用man inotify 、 man inotifywait、man inotifywatch即可得到帮助信息

inotify 可以监视的文件系统事件包括:

IN_ACCESS,即文件被访问
IN_MODIFY,文件被 write
IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等
IN_CLOSE_WRITE,可写文件被 close
IN_CLOSE_NOWRITE,不可写文件被 close
IN_OPEN,文件被 open
IN_MOVED_FROM,文件被移走,如 mv
IN_MOVED_TO,文件被移来,如 mv、cp
IN_CREATE,创建新文件
IN_DELETE,文件被删除,如 rm
IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己

inotifywait 参数:

-m "--mointor" 始终保持事件监听
-r "--recursive" 表示递归查询目录
-q "--quiet" 打印监控事件
-e "--event" 指定要监控的事件,如modify、delete等

6.测试同步

192.168.1.87(inotify)

192.168.1.88(client)

6.1.脚本

#!/bin/bash
SRC=/tmp/ckl
DIR=/tmp
/usr/local/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e modify,delete,create,attrib ${SRC} | while read line
do
        /usr/bin/rsync -auv ${SRC} 192.168.1.88:${DIR}
        echo "$line is rsyncd" >> /tmp/sync.log 2>&1
done

6.2.在1.87上执行脚本

sh sync_file.sh

6.3.在1.87上创建文件

touch /tmp/ckl/nimei.txt
touch /tmp/ckl/haha.txt

6.4.查看脚本输出:

....
ckl/
ckl/haha.txt
ckl/nimei.txt
sent 155 bytes  received 54 bytes  418.00 bytes/sec
total size is 0  speedup is 0.00
sending incremental file list
sent 74 bytes  received 13 bytes  174.00 bytes/sec
total size is 0  speedup is 0.00
sending incremental file list
ckl/
ckl/.haha.txt.swp

6.3.在1.88上查看

# ll /tmp/ckl/
total 4
-rw-r--r-- 1 root root 22 Jun  2 15:54 haha.txt
-rw-r--r-- 1 root root  0 Jun  2 15:48 nimei.txt

6.4.修改文件,测试同步,略过

查看日志:

02/06/16 15:54 /tmp/ckl/haha.txtCREATE is rsyncd
02/06/16 15:54 /tmp/ckl/haha.txtATTRIB is rsyncd
02/06/16 15:54 /tmp/ckl/.haha.txt.swpCREATE is rsyncd
02/06/16 15:54 /tmp/ckl/.haha.txt.swxCREATE is rsyncd
02/06/16 15:54 /tmp/ckl/.haha.txt.swxDELETE is rsyncd
02/06/16 15:54 /tmp/ckl/.haha.txt.swpDELETE is rsyncd
02/06/16 15:54 /tmp/ckl/.haha.txt.swpCREATE is rsyncd
02/06/16 15:54 /tmp/ckl/.haha.txt.swpMODIFY is rsyncd
02/06/16 15:54 /tmp/ckl/.haha.txt.swpATTRIB is rsyncd
02/06/16 15:54 /tmp/ckl/.haha.txt.swpMODIFY is rsyncd
02/06/16 15:54 /tmp/ckl/.haha.txt.swpMODIFY is rsyncd
02/06/16 15:54 /tmp/ckl/haha.txtMODIFY is rsyncd
02/06/16 15:54 /tmp/ckl/haha.txtMODIFY is rsyncd
02/06/16 15:54 /tmp/ckl/haha.txtATTRIB is rsyncd
02/06/16 15:54 /tmp/ckl/.haha.txt.swpMODIFY is rsyncd
02/06/16 15:54 /tmp/ckl/.haha.txt.swpDELETE is rsyncd
时间: 2024-08-26 10:48:34

inotify 文件同步整理的相关文章

rsync+inotify文件同步 - 同步慢的问题

rsync+inotify文件同步 - 同步慢的问题 我们来看网上的教程,我加了注释.(网上所有的教程基本都一模一样,尽管写法不一样,致命点都是一样的) #!/bin/bash /usr/bin/inotifywait -mrq --format '%w%f'-e create,close_write,delete /backup |while read file #把发生更改的文件列表都接收到file 然后循环,但有什么鬼用呢?下面的命令都没有引用这个$file 下面做的是全量rsync do

rsync + inotify 文件同步

rpm -e rsync-3.1.2-4.el7.x86_64 --nodeps rpm -ivh rsync-3.1.2-4.el7.x86_64.rpm 115 服务端,接收文件的地方 echo "web:123" > /usr/local/rsync/rsyncd.passwd vi /etc/rsyncd.conf # /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man p

linux unison inotify 文件同步

default.prf #Unison preferences file root = /app/htdocs/project root = ssh://[email protected]//app/htdocs/project servercmd = /usr/local/bin/unison #force = true ignore = Path Application/Runtime ignore = Path Uploads/Home batch = true maxthreads =

CentOS5.8 x86_64下配置rsync+inotify即时同步文件

rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样就可以解决同步数据的实时性问题.rsync+inotify我在工作中会经常用到,大家部署这种时请注意以下方面: 一.rsync服务器的uid和gid请将nobody:nobody改为www:www,因为是考虑到我们的Nginx服务器是由www:www运行的,而其对应目录很多时候有写日志或其它相关写文

Ubuntu 下rsync+inotify实现实时文件同步

rsync+inotify实现实时文件同步 一.rsync的优点与不足 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等. 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚

采用 unison + inotify + rsync 实现文件触发式实时单向/双向/多向文件同步

项目有个新的需求,在多台APP服务器随机上传图片/资源文件,其中一台APP需要读取上传的图片,这样之前做的rsync+inotify的设置就无法应对了. 所以研究了下多向触发式实时同步机制,大家可以实验一下,如果有不妥的地方,请联系我修正,多谢了. 以下开始正题 一.     简介 Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致.Unison拥有与其它一些同步工具或文件系统的相同的特性,但也有自身的特点:

Zabbix监控系列之-Rsync+Inotify实现文件同步更新(无防火墙版)

Rsync+inotify实现文件同步更新(无防火墙版) 目录 说明:... 2 准备工作:关闭服务器的防火墙... 2 关闭防火墙firewall2 禁止开机启动防火墙... 2 编写脚本"shut-firewall.sh". 2 发布服务器配置rsync:192.168.171.128. 2 安装配置Rsync. 2 配置rsyncd.conf文件... 2 创建认证文件:/etc/rsyncd.secrets. 3 设置文件权限... 3 启动rsync服务... 4 关闭rsy

rsync+inotify实现文件同步

什么是rsync,remote synchronize远程同步简写.Linux系统上由rsync这个软件包提供.rsync有几个特点,镜像保存整个文件目录树或文件系统:有较高的数据传输效率:可以借助ssh实现安全数据传输:支持匿名传输等.rsync同步只是针对变化的文件进行传输,意味着其会在源和目标之间比较文件的异同.相对与scp来说,第一次传输两边都效率都差不多.但以后传输相同目录下的文件时,rsync只传输变化的文件,而非像scp直接覆盖.inotify是linux的一种文件变化通知机制,用

rsync+inotify实时同步文件

一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系统的变化如文件修改.新增.删除等,并可以将相应的事件通知给应用程序.该机制由著名的桌面搜索引擎项目beagle引入用于替代此前具有类似功能但存在诸多缺陷的dnotify. inotify既可以监控文件,也可以监控目录.当监控目录时,它可以同时监控目录及目录中的各子目录及文件的.此外,inotify