设为首页 收藏本站
查看: 1102|回复: 0

[经验分享] Linux inotify

[复制链接]

尚未签到

发表于 2018-5-20 15:26:32 | 显示全部楼层 |阅读模式
  是一种异步的文件系统事件监控机制
  inotify进程                                                                    rsync  daemon  服务
  /data/                                                                           /data/
  写入一个文件 通知rsync,执行命令同步
  rsync  -avz   /data/xx                     rsync_backup@192.168.10.10::hequan
  实现软件
  inotify,sersync,lsyncd
  实施准备
  rsync   daemon
  客户端
  # uname -r
  2.6.32-431.el6.x86_64
  # ls -l /proc/sys/fs/inotify/
  -rw-r--r-- 1 root root 0 4月   6 23:14 max_queued_events   监控队列的最大值
  -rw-r--r-- 1 root root 0 4月   6 23:14 max_user_instances
  -rw-r--r-- 1 root root 0 4月   6 23:14 max_user_watches
  下载源码包
  wget  http://tenet.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz

  tar zxvf  inotify-tools-3.13.tar.gz
  cd inotify-tools-3.13
  ./configure  --prefix=/usr/local/inotify-tools-3.14
  make && make install
  cd ../
  ln -s /usr/local/inotify-tools-3.14  /usr/local/inotify
  drwxr-xr-x 2 root root 4096 4月   6 23:21 bin      执行命令
  drwxr-xr-x 3 root root 4096 4月   6 23:21 include   头文件
  drwxr-xr-x 2 root root 4096 4月   6 23:21 lib         动态链接的库文件
  drwxr-xr-x 4 root root 4096 4月   6 23:21 share    帮助文档
  |-- bin
  |   |-- inotifywait
  |   `-- inotifywatch
  ./bin/inotifywait   --help
  监控
  # /usr/local/inotify-tools-3.14/bin/inotifywait  -mrq --timefmt  '%d/%m/%y  %H:%M'  --format '%T %w%f'  -e create /data
  06/04/16  23:39 /data/xxx
  -e create,delete,close_write   并行监控
  简化
  # /usr/local/inotify-tools-3.14/bin/inotifywait  -mrq  --format  '%w%f'   -e create   /data
  脚本
  #!/bin/sh
  he="/usr/local/inotify-tools-3.14/bin/inotifywait"
  $he  -mrq  --format  '%w%f'   -e create,close_write,delete   /data  | \
  while   read  line
  do
  rsync  -az    $line   rsync_backup@192.168.10.10::hequan  --password-file=/etc/rsync.password
  done
  # sh -x inotify.sh
  # echo {a..d} | tr " "  "\n"
  a
  b
  c
  d
  #paste    a     b
  #split  -1  2  a
inotify参数
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
-e create,move,delete,modify,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件
rsync参数
============================================
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links 保留软链结
-L, --copy-links 想对待常规文件一样处理软链结
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
--safe-links 忽略指向SRC路径目录树以外的链结
-H, --hard-links 保留硬链结
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-D, --devices 保持设备文件信息
-t, --times 保持文件时间信息
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, --dry-run现实哪些文件将被传输
-W, --whole-file 拷贝文件,不进行增量检测
-x, --one-file-system 不要跨越文件系统边界
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
--delete 删除那些DST中SRC没有的文件
--delete-excluded 同样删除接收端那些被该选项指定排除的文件
--delete-after 传输结束以后再删除
--ignore-errors 及时出现IO错误也进行删除
--max-delete=NUM 最多删除NUM个文件
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
--force 强制删除目录,即使不为空
--numeric-ids 不将数字的用户和组ID匹配为用户名和组名
--timeout=TIME IP超时时间,单位为秒
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T --temp-dir=DIR 在DIR中创建临时文件
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 --partial
--progress 显示备份过程
-z, --compress 对备份的文件在传输时进行压缩处理
--exclude=PATTERN 指定排除不需要传输的文件模式
--include=PATTERN 指定不排除而需要传输的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version 打印版本信息
--address 绑定到特定的地址
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
--port=PORT 指定其他的rsync服务端口
--blocking-io 对远程shell使用阻塞IO
-stats 给出某些文件的传输状态
--progress 在传输时现实传输过程
--log-format=formAT 指定日志文件格式
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second
  -h, --help 显示帮助信息
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-467578-1-1.html 上篇帖子: Linux openssl 实现 下篇帖子: linux inotify+rsync
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表