inotify

inotify是一个实时监控服务,他能实时监控服务器中的目录的变化,发现目录中变化后,在配合rsync服务推送到备份服务器上

inotify要求内核要在2.6.13或之上,通过notify,可以监控文件系统中如增删查改等各种事件

列出下面文件说明服务器支持notify

[root@node2 ma]#ll /proc/sys/fs/inotify/
total 0
-rw-r--r-- 1 root root 0 Jul 31 11:00 max_queued_events
-rw-r--r-- 1 root root 0 Jul 31 11:00 max_user_instances
-rw-r--r-- 1 root root 0 Jul 31 11:00 max_user_watches

根据工作需要,可调整
#:max_queued_events:inotify事件队列最大长度,如值太小会出现 Event Queue Overflow 错误,默认值:16384
#:max_user_watches:可以监视的文件数量(单进程),默认值:8192
#:max_user_instances:每个用户创建inotify实例最大值,默认值:128

inotify依赖inotify-tools(在epel源)

[root@node4 ~]#yum install inotify-tools -y

监控/data/文件

    inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib /data/www

#:    -m    始终保持事件监听
-r 递归监控数据目录变化
-q 输出少量事件信息 --timefmt 定义时间格式 %Y 年份信息
%m 月份信息
%d 每月第几天
%H 小时
%M 分钟 --format 定义格式
%T 输出时间格式中定义的时间格式信息
%w 时间出现时,监控文件或目录的名称信息
%f 时间出现时,将显示监控目录下触发事件的文件或目录信息,否则为空 -e 指定事件类型 create 文件或目录创建
 delete 文件或目录被删除
 modify 文件或目录内容被写入
 attrib 文件或目录属性改变
moved_to 文件或目录被移动到监控的目录中
 moved_from 文件或目录从监控的目录中被移动
move 文件或目录不管移动到或是移出监控目录都触发事件
delete_self 文件或目录被删除,目录本身被删除
 unmount 取消挂载

rsync

先安装包

[root@node4 www]#yum install rsync -y

编辑rsync服务器的配置文件

[root@node2 ma]#vim /etc/rsyncd.confuid = root
uid = root
gid = root #: 定义rsync服务器以root用户运行
use chroot = no #:不允许切根
max connections = 0 #:最大连接数,0表示不限制
ignore errors #:如果有错误,忽略错误
exclude = lost+found/ #:针对此目录不检查
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no #:关闭反向解析
hosts allow = 192.168.8.0/24 #:允许那些主机连接 [backup] # : 为一下代码块起的名字
path = /backup/ #:将数据备份到本机哪个目录
comment = backup #:描述
read only = no #:可写
auth users = rsyncuser #:远程用户
secrets file = /etc/rsync.pass #:远程用户放置密码的文件

在rsync服务器端生成验证文件并修改权限

[root@node2 ma]#echo "rsyncuser:magedu" > /etc/rsync.pass        #: 格式是   用户名:密码
[root@node2 ma]#chmod 600 /etc/rsync.pass

在rsync服务器端准备备份文件并重启服务

[root@node2 ma]#mkdir /backup
[root@node2 ma]#systemctl restart rsyncd

在客户端配置密码文件(同步的时候就不用输入密码了)并修改权限

[root@node4 ~]#echo "magedu" > /etc/rsync.pass
[root@node4 ~]#chmod 600 /etc/rsync.pass

然后测试

[root@node4 ~]#rsync -avz  --password-file=/etc/rsync.pass /data/www rsyncuser@192.168.37.22::backup

#:模板

rsync -avz --password-file=/etc/rsync.pass /data/ rsyncuser@rsync服务器IP::backup

现在可以同步了

然后我们开始使用脚本让它实时同步

在客户端创建脚本

[root@node4 www]#vim /data/inotify_rsync.sh
#!/bin/bash
#
#********************************************************************
#Author: Ma Xue Bin
#QQ: 316428921
#Date: 2019-07-31
#!/bin/bash
SRC='/data/www/'
DEST='rsyncuser@192.168.37.22::backup'
inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
done

加执行权限,运行

[root@node4 ~]#chmod +x /data/inotify_rsync.sh
[root@node4 ~]#. /data/inotify_rsync.sh

实时数据同步inotify+rsync的更多相关文章

  1. Linux系统实时数据同步inotify+rsync

    一.inotify简介 inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除.读.写和卸载等操作.它监控到这些事件的发生后会默认往标准输出打印事件信息.要使用inotify,Li ...

  2. Rsync+inotify 实时数据同步 inotify master 端的配置

    强大的,细致的,异步的文件系统事件监控机制.Linux 内科从 2.6.13 起支持 inotify Inotify 实现的几款软件:Inotify,sersync,lsyncd ※Inotify 实 ...

  3. Linux学习系列之Inotify+Rsync实现实时数据同步

    Inotify简介 inotify介绍 inotify是一种强大的.异步的文件系统监控机制,linux内核从2.6.13起,加入了inotify的支持,通过inotify可以监控文件系统中添加.删除. ...

  4. 【linux运维】rsync+inotify与sersync+rsync实时数据同步笔记

    Rsync(remote sync)远程同步工具,通过rsync可以实现对远程服务器数据的增量备份通过,但rsync自身也有缺陷,同步数据时,rsync采用核心算法对远程服务器的目标文件进行对比,只进 ...

  5. rsync+inotify实时数据同步多目录实战

    rsync+inotify实时数据同步多目录实战       inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 root@58server1 1 ...

  6. rsync+inotify实时数据同步单目录实战

    rsync+inotify实时数据同步单目录实战   rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起 ...

  7. sersync+rsync实时数据同步

    sersync+rsync实时数据同步 1.相关背景介绍 前面有关文章配置实现了rsync增量同步以及配置为定时同步,但是在实际生产环境中需要实时的监控数据从而进行同步(不间断同步),可以采取inot ...

  8. Tapdata Real Time DaaS 技术详解 PART I :实时数据同步

      摘要:企业信息化过程形成了大量的数据孤岛,这些并不连通的数据孤岛是企业数字化转型的巨大挑战.Tapdata Real Time DaaS 采用的CDC模式,具有巨大的优势,同时是一个有技术壁垒的活 ...

  9. Tapdata 在线研讨会:实时数据同步应用场景及实现方案探讨

    数字化时代的到来,企业业务敏捷度的提升,对传统的数据处理和可用性带来更高的要求,实时数据同步技术的发展,给基于数据的业务创新带来了更多的可能性.9月8日晚,Tapdata 联合MongoDB 中文社区 ...

随机推荐

  1. webpack 之开发环境优化 source-map

    webpack 之开发环境优化 source-map /** * source-map:一种 提供源代码到构建后代码映射 技术 (如果构建后代码出错了,通过映射可以追踪源代码错误) * [inline ...

  2. Vue.js教程 2.体验Vue

    Vue.js教程 2.体验Vue <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  3. ubuntu install redis

    ubuntu install redis apt-get update apt-get install redis-server redis-server --daemonize yes

  4. Unity——有限状态机FSM修改

    FSM状态机改 一.前言 FSM状态机初版 之前写过一版有限状态机,后来发现很多问题: 前一个版本是记录了当前的状态,切换状态时,要等下一帧状态机Update的时候才会调动上个状态的退出,总会有一帧的 ...

  5. RabbitMQ Network Partitions 处理策略

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 网络分区的意义 RabbitMQ的模型 ...

  6. c++ 中vector 常见用法(给初学者)

    c++ 中 vector vector有两个参数,一个是size,表示当前vector容器内存储的元素个数,一个是capacity,表示当前vector在内存中申请的这片区域所能容纳的元素个数. ca ...

  7. python实现图片色素的数值运算(加减乘除)和逻辑运算(与或非异或)

    目录: (一)数值运算(加减乘除) (二)逻辑运算(与或非异或) 正文: (一)数值运算(加减乘除) opencv自带图片色素的处理函数------相加:add()   相减:subtract()  ...

  8. [hdu6600]Just Skip The Problem

    1.直接令x=0,为了判断这一信息,对于所有含有多个1的yi,必然是无用的,答案至少为n且不能含有多位1的y2.令yi=2^(i-1),由此发现一定可以得到x每一位的答案,即答案最多为n.因此,发现方 ...

  9. [loj3300]组合数问题

    将$f(k)=\sum_{i=0}^{m}a_{i}k^{i}$转换为$f(k)=\sum_{i=0}^{m}b_{i}k^{\underline{i}}$,其中$k^{\underline{i}}= ...

  10. adb server version (32) doesn't match this client (39); killing...解决办法

    输入今天遇到,安装AndroidSDK之后,已经配置好环境变量,输入adb可运行,但是输入adb devices之后就出现adb server version (32) doesn't match t ...