RSYNC+inotify实时同步文件 |
您所在的位置:网站首页 › 循序渐进健身原则包括什么 › RSYNC+inotify实时同步文件 |
摘要 在企业日常web应用中,某些特殊的数据需要要求保持跟服务器端实时同步,那我们该如何来配置呢?如何来实现呢?这里可以采用rsync+inotify来实现需求。 Inotify简介Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。 Inotify,它是在内核 2.6.13 版本中引入的一个新功能,它为用户态监视文件系统的变化提供了强大的支持,允许监控程序打开一个独立文件描述符,并针对事件集监控一个或者多个文件,例如打开、关闭、移动/重命名、删除、创建或者改变属性。 在inotify 的前身是 dnotify。由于 dnotify 的局限性太大,加之用户始终都希望用到更好的产品。因此,inotify 顺理成章的取代了 dnotify。 Rsync安装完毕后,需要安装inotify文件检查软件。同时为了同步的时候不需要输入密码,这样可以使用ssh免密钥方式进行同步。 Rsync认证方式两种方式 rsync-daemon ssh 注意:在使用rsync时,同步端和被同步端都必须安装rsync程序。 1)rsync-daemon认证在rsync-daemon认证方式下,默认监听tcp的873端口 在rsync-daemon认证下,rsync可以把密码写入到一个文件中。 注意:被同步端的rsync必须启动,配置文件。同步端可以不起动服务,但必须有这个应用。 2)ssh认证通过ssh隧道进行传输,类似于scp工具,同步操作不在局限于rsync中定义的同步文件夹,并且双方只要安装rsync,也不要双方启动rsync。 Rsync安装配置参考我另一篇文章:https://www.yangxingzhen.com/archives/863 这里采用Rsync基于SSH认证方式+inotify实时同步 服务端IP:192.168.8.7 客户端IP:192.168.8.8 inotify安装配置 1)下载inotify-tools安装包 [root@localhost ~]# wget -c http://mirrors.yangxingzhen.com/inotify-tools/inotify-tools-3.14.tar.gz 2)解压,安装 [root@localhost ~]# tar zxf inotify-tools-3.14.tar.gz [root@localhost ~]# cd inotify-tools-3.14 [root@localhost inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify [root@localhost inotify-tools-3.14]# make && make install 3)配置免密钥认证,这里不再介绍,SSH免密钥认证可以参考我另一篇文章:SSH免密钥认证 4)编写脚本 [root@localhost ~]# vim rsync_inotify.sh #脚本内容如下 1. #!/bin/sh2. #2017-12-17 22:05:293. #by author 、、、小柒4. 5. #本地需要同步的目录6. SRC=/test/7. ##远程目录8. DATA=/test/9. ##远程同步IP10. IP=192.168.8.811. inotifywait -mrq --timefmt '%Y-%m-%d-%H:%M' --format '%T %w %f' -e modify,delete,create,attrib,move $SRC | while read file12. do13. rsync -aP --delete $SRC root@$IP:$DATA14. done保存退出~~ 5)在服务端启动该脚本,创建测试文件 [root@localhost ~]# ln -s /usr/local/inotify/bin/* /usr/sbin //创建软连接 [root@localhost ~]# mkdir /test [root@localhost ~]# sh -x rsync_inotify.sh [root@localhost ~]# cd /test/ [root@localhost test]# touch test.txt 6)在客户端查看是否同步,如有数据代表同步 #实时同步成功~~~ PS:创建文件、删除文件、移动文件(重命名)、访问文件、修改文件都会被记录 7)后台运行此脚本 [root@localhost ~]# nohup sh rsync_inotify.sh & 注:日志会记录到nohup.out文件 其他Linux发行版安装方法可以参见:https://github.com/rvoicilas/inotify-tools/wiki#wiki-getting inotifywait命令 Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。。 inotify-tools是一个C库和一组命令行的工作提供Linux下inotify的简单接口。inotify-tools安装后会得到inotifywait和inotifywatch这两条命令: 1)inotifywait命令可以用来收集有关文件访问信息,Linux发行版一般没有包括这个命令,需要安装inotify-tools,这个命令还需要将inotify支持编译入Linux内核,好在大多数Linux发行版都在内核中启用了inotify。 2)inotifywatch命令用于收集关于被监视的文件系统的统计数据,包括每个 inotify 事件发生多少次。 开始之前需要检测系统内核是否支持inotify: 使用uname -r命令检查Linux内核,如果低于2.6.13,就需要重新编译内核加入inotify的支持。inotify相关参数 inotify定义了下列的接口参数,可以用来限制inotify消耗kernel memory的大小。由于这些参数都是内存参数,因此,可以根据应用需求,实时的调节其大小: 1) /proc/sys/fs/inotify/max_queued_evnets表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。 2)/proc/sys/fs/inotify/max_user_instances表示每一个real user id可创建的inotify instatnces的数量上限。 3)/proc/sys/fs/inotify/max_user_watches表示每个inotify instatnces可监控的最大目录数量。如果监控的文件数目巨大,需要根据情况,适当增加此值的大小。 inotifywait命令参数 -m是要持续监视变化。 -r使用递归形式监视目录。 -q减少冗余信息,只打印出需要的信息。 -e指定要监视的事件列表。 --timefmt是指定时间的输出格式。 --format指定文件变化的详细信息。 可监听的事件 事件 描述 access 访问,读取文件。 modify 修改,文件内容被修改。 attirb 属性,文件元数据被修改。 move 移动,对文件进行移动操作。 create 创建,生成新文件 open 打开,对文件进行打开操作。 close 关闭,对文件进行关闭操作。 delete 删除,文件被删除。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |