博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
inotify+rsync 实时同步目录文件
阅读量:6282 次
发布时间:2019-06-22

本文共 1977 字,大约阅读时间需要 6 分钟。

由于inotify特性需要Linux内核的支持,在安装inotify-tools前要先确认Linux系统内核是否达到了2.6.13以上,如果Linux内核低于2.6.13版本,就需要重新编译内核加入inotify的支持,也可以用如下方法判断,内核是否支持inotify:

   # uname -r
   2.6.32-431.el6.x86_64
   查看内核是否支持inotify API,如果有以下三项,表示系统已经默认支持inotify,接着就可以开始安装inotify-tools了,我这里使用的是inotify-tools-3.14.tar.gz。
   # ll /proc/sys/fs/inotify
   -rw-r--r-- 1 root root 0 04-13 19:56 max_queued_events
   -rw-r--r-- 1 root root 0 04-13 19:56 max_user_instances
   -rw-r--r-- 1 root root 0 04-13 19:56 max_user_watches

简单介绍一下这三个文件是做什么用的:

   max_queued_evnets:表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。
   max_user_instances:表示每一个real user ID可创建的inotify instatnces的数量上限。
   max_user_watches:表示每个inotify instatnces可监控的最大目录数量。如果监控的文件数目巨大,需要根据情况,适当增加此值的大小,例如:echo "9000000" > /proc/sys/fs/inotify/max_user_watches

 

查看完相关的安装环境后那接下来我们就可以安装inotify-tools这个程序包了,安装步骤很简单,程序包获取方法这里不再提供:

# tar xf inotify-tools-3.14.tar.gz# cd inotify-tools-3.14# ./configure# make && make install安装好之后可以查看/usr/local/bin下生成两个二进制文件:# ll /usr/local/bin创建一个目录存放要同步的数据:# mkdir /myrsync_data/mydata# cd /myrsync_data/mydata# vim inotifyrsync.sh#!/bin/bashhost=172.16.27.1 #从服务器的主机地址data_dir=/myrsync_data/data #内容发布服务器上创建的同步数的路径dst=my_data_rsync #从服务器上导出的共享目录username=myuser #从服务器上/etc/rsyncd.passwd这个文件中定义的用户名#决对路径执行inotifywait这个程序,#-m, 即--monitor,表示始终保持事件监听状态。#-r, 即--recursive,表示递归查询目录。#-q, 即--quiet,表示打印出监控事件。#-e, 即--event,通过此参数可以指定要监控的事件,常见的事件有modify、delete、create、attrib等。#--timefmt:指定时间的输出格式。#--format:指定变化文件的详细信息。/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $data_dir | while read files        do                /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.passwd $data_dir $username@$host::$dst                echo "${files} was rsynced" >> /tmp/rsync.log 2>&1 #写入日志        done#保存退出# chmod 755 /web/wwwroot/inotifyrsync.sh# bash /myrsync_data/mydata/inotifyrsync.sh &

 

转载于:https://www.cnblogs.com/tankaixiong/articles/4739319.html

你可能感兴趣的文章
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>