有关rsync+inotify-tools实现数据实时同步方案 无法同步vim修改文件问题
inotifywait命令使用简介:
inotifywait尤其适用于在脚本中等待某事件的发生,并可基于特定的事件执行相应操作。如将其用于脚本中监控某指定目录中的文件上的修改、新建、删除、属性信息的改变,而后使用rsync命令将某事件对应的文件同步至其它主机上。
在测试过程中,测试inotifywait是否能够监测到文件改变并实施进行同步,创建文件a之后,client端自动同步文件a,进行vi编辑文件并:wq保存文件之后,查看客户端文件a,发现文件a仍然是一个空文件,莫名其妙,感觉。
查看文件的inode号
[root@rsync-test01 ceshi]# ls -i a
524426 a
对文件进行vi编辑并保存
vi a
再次查看文件a
[root@rsync-test01 ceshi]# ls -i a
524425 a
通过上面操作我们可以看到文件a的inode号已经改变,(inode是唯一标识文件的编号,Linux系统和window系统相似)inode号发生改变,inotifywait监控的仍然是inode号为524426文件,此时的文件在操作系统层面主机已经认为文件a不存在,故无法进行检测文件a是否变化,无法进行同步操作。
注:vi操作 w 可能是根据原文件与变更 合并出另外一个同名文件后删了原文件.