操作系统

当前位置:金沙棋牌 > 操作系统 > inotify实现实时同步案例,RSync实现数据备份

inotify实现实时同步案例,RSync实现数据备份

来源:http://www.logblo.com 作者:金沙棋牌 时间:2019-08-31 01:29

第三十四天-rsync inotify实现实时同步案例,-rsyncinotify

 

推荐:

Rsync结合Inotify 实时同步配置

rsync inotify实现实时同步案例

rsync inotify实现多台服务器之间数据实时同步

Linux下Rsync Inotify-tools实现数据实时同步

 

推荐: Rsync结合Inotify 实时同步配置 rsync inotify实现实时同步案例 rsync inotify实现多台服...

注:本文接着上一章<Linux下配置Rsync实现文件同步>的环境下进程配置的  http://www.linuxidc.com/Linux/2017-12/149183.htm

Rsync文件同步工具初步搭建及配置详解

前段时间因公司需求,需要把备份的文件进行同步保存,后面就想到了我们大家都最熟悉的文件同步工作Rsync,于是就捣鼓了一下午时间,然后总结了下大概过程和参数详情。

首先了解了下rsync同步的大致原理:Rsync 同步使用所谓的“Rsync 演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份

传送,因此传输的速度相当快。Rsync服务端会打开一个873的服务通道(port),等待客户端 Rsync 连接。连接时,Rsync 服务端会检查口令(passwd)是否相符,若通过口令查核,

则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间的差异部份。

接下来我们就来初步搭建,先完成任务需求。

Rsync服务端(192.168.177.130)

 安装rsync工具

  yum -y install rsync (默认会在etc目录下生成一个rsync的配置文件)

编辑配置文件rsyncd.conf (配置文件里面是不能添加注释,不然会报错)

uid = root                     
gid = root
use chroot = no
max connections = 4
#pid file = /var/run/rsyncd.pid      
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log         
exclude = lost found/
transfer logging = yes
timeout = 600
ignore nonreadable = yes           
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2         
[test]                                  
path = /home/rsynctest
ignore errors = yes
read only = yes
write only = no
hosts allow = 192.168.177.131    
hosts deny = *
list = false
uid = root 
gid = root
auth users = root
secrets file = /etc/rsyncd.passwd

配置详解

uid = root                 #设置运行rsync 进程的用户
gid = root
use chroot = no            #使用默认根目录
max connections = 4        #最大连接数
#pid file = /var/run/rsyncd.pid        #CentOS7中yum安装 不需指定pid file 否则报错
lock file = /var/run/rsyncd.lock       #指定支持 max connections 参数的锁文件
log file = /var/log/rsyncd.log         #此文件定义完成后 系统会自动创建
exclude = lost found/
transfer logging = yes             #使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中
timeout = 600   #通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。
ignore nonreadable = yes           #同步时跳过没有权限的目录
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2          #传输时不压缩的文件
 [test]                          #此名字即客户端使用rsync来同步的路径
path = /home/rsynctest                 #实际需要同步的路径
ignore errors = yes     #指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IP错误,一般来说rsync在出现IO错误时将将跳过--delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题
read only = yes         #表示可以pull
write only = no         #表示不可以push
hosts allow = 192.168.177.131        #客户端同步的地址
hosts deny = *   #指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。
list = false     #该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。
uid = root       #获取文件的身份
gid = root
auth users = root  #客户端获取文件的身份 此用户并不是本机中确实存在的用户
secrets file = /etc/rsyncd.passwd   #用来认证客户端的秘钥文件 格式 USERNAME:PASSWD 此文件权限一定需要改为600,且属主必须与运行rsync的用户一致。(需自行创建)

创建对应密码文件

vim /etc/rsyncd.passwd

格式如下:root:123456(前用户名后密码)

修改文件权限:chmon 600 /etc/rsyncd.passwd

启动rsync服务端:sudo rsync --daemon(客户端不用启动)

Rsync客户端(192.168.177.131)  

 安装rsync工具

  yum -y install rsync (默认会在etc目录下生成一个rsync的配置文件)

 配置认证密码文件

  echo passwd(只需要密码就行) >> /etc/rsyncd.passwd

修改权限

  chmon 600 /etc/rsyncd.passwd

 测试文件同步情况:

  rsync -avz --progress --password-file=/etc/rsyncd.passwd [email protected]::rsynctest /tmp/rsynctest/

  图片 1

测试完成!

命令参数详解:

  -v, –verbose 详细模式输出

  -z, –compress 对备份的文件在传输时进行压缩处理

  -r, –recursive 对子目录以递归模式处理

  -t, –times 保持文件时间信息

  -o, –owner 保持文件属主信息

  -p, –perms 保持文件权限

  -g, –group 保持文件属组信息

  –-progress 显示传输进度

  --delete 删除客户端多余文件

总结的还不到位,希望有问题可以指出!

CentOS 6.5 rsync inotify实现数据实时同步备份

rsync inotify实现数据的实时同步

rsync inotify实现服务器之间文件实时同步详解 

Rsync结合Inotify 实时同步配置 

RSync实现数据备份 

inotify rsync实现数据实时同步 

rsync inotify实现数据的实时备份 

rsync inotify实现数据自动同步 

使用rsync实现数据实时同步备份 

Rsync 的详细介绍:请点这里
Rsync 的下载地址:请点这里

前段时间因公司需求,需要把备份的文件进行同步保存,后面就想到了我们大家都最熟悉的文件同步...

RSYNC=Remote Sync 远程同步 高效
官方网站
与SCP的比较:scp=无法备份大量数据,类似windows的复制
rsync=边复制 ,边统计,边比较

背景:随着时代的发展,手工的同步文件的功能已经不适合为高效的现代化企业的服务了。

Rysnc特性和优点

rsync的局限性:

  • 可以镜像保存整个目录树和文件系统。
  • 可以很容易做到保持原来文件的权限、时间、软硬链接等等。
  • 无须特殊权限即可安装。
  • 快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过- 的文件。
  • 压缩传输:rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
  • 安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
  • 支持匿名传输,以方便进行网站镜象。
  • 选择性保持:符号连接,硬链接,文件属性,权限,时间等

    常见备份分类

  • 完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地

  • 差量备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)

  • 增量备份:备份上次备份以后有变化的数据.(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)

1、对于大的文件(百万级、千万级的)同步耗时。
2、不能实时的检测,rsync是根据Linux守护进程的方式进行触发同步的,这过程有很大的时间差。导致出现问题的时候可能无法完全的恢复数据。
3、同步笨重,同步一次就是全部同步的了,不会自动只同步更新的那点。

运行模式和端口
采用C/S模式(客户端/服务器模式)[ 就是一个点到点的传输,直接使用rsync命令 ]
端口873
发起端和备份源
四个名词的解释:
发起端:负责发起rsync同步操作的客户机叫做发起端,通知服务器我要备份你的数据
备份源:负责相应来自客户机rsync同步操作的服务器脚在备份源,需要备份的服务器
服务端:运行rsyncd服务,一般来说,需要备份的服务器
客户端:存放备份数据

所以rsync inotify的实现可以更加高效,自动化的实现文件的实时同步,能够大大的提高工作的效率,有效的减少手工操作的失误。

数据同步方式:

inotify的简介

推push:一台主机负责把数据传送给其他主机,服务器开销很大,比较适合后端服务器少的情况
拉pull:所有主机定时去找一主机拉数据,可能就会导致数据缓慢
推:目的主机配置为rsync服务器,源主机周期性的使用rsync命令把要同步的目录推过去(需要备份的机器是客户端,存储备份的机器是服务端)
拉:源主机配置为rsync服务器,目的主机周期性的使用rsync命令把要同步的目录拉过来(需要备份的机器是服务端,存储备份的机器是客户端)
两种方案,rsync都有对应的命令来实现

  Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具。

Xinetd管理Rsync工作原理
图片 2
使用rsync来同步是先通过xinetd监听873号端口,如果rsync进来的是873号端口,那么xinetd就会通知它所管辖的rsync服务来做回应,接下来就是rsync俩服务于之间的通讯

是一个非常好的辅助性工具软件,后期本博客还会有更加多与inotify嵌合的功能发布!

Rsync服务安装
Rsync服务依赖Xinetd,是使用超级服务来管理的

一、需求环境

yum install xinetd rsync -y

vim /etc/xinetd.d/rsync

    # default: off
# description: The rsync server is a good addition to an ftp server, as it 
#       allows crc checksumming etc.
service rsync
{
        disable = yes   #此行原=yes,改为=no
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure   = USERID
}

/etc/init.d/xinetd restart   # 启动服务

 # 检查端口是否启用
 netstat -antup | grep 873  
     tcp        0      0 :::873                      :::*                        LISTEN      13082/xinetd

  Ceotos 6.5 内核2.6.32-431.el6.x86_64

Rsync命令

虚拟机环境下

       rsync命令和scp命令很相似
// -a, --archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等
-r, --recursive 复制所有下面的资料,递归处理
-p, --perms 保留档案权限 ,文件原有属性
-t, --times 保留时间点,文件原有时间
-g, --group 保留原有属组
-o, --owner 保留档案所有者(root only)
-D, --devices 保留device资讯(root only)
-l, --links 复制所有的连接 ,拷贝连接文件
// -z, --compress 压缩模式, 当资料在传送到目的端进行档案压缩.
-H, --hard-links 保留硬链接文件
-A, --acls 保留ACL属性文件,需要配合--perms
-P,-P参数和 --partial --progress 相同.只是为了把参数简单化,表示传进度
--version, 输出rsync版本
// -v , --verbose 复杂的输出信息
-u, --update 仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不覆盖新的文件
--port=PORT, 定义rsyncd(daemon)要运行的port(预设为tcp 873)
--delete, 删除那些目标位置有的文件而备份源没有的文件
--password-file=FILE ,从 FILE 中得到密码
--bwlimit=KBPS, 限制 I/O 带宽
--filter “-filename”,需要过滤的文件
--exclude=filname,需要过滤的文件
--progress,显示备份过程
// 常用的 –avz

inotify服务器:192.168.0.244/24          (即主机B)

使用rsync备份数据
建立测试用户rget1,rput1

备用服务器:192.168.0.144/24            (即主机A) 

useradd rget1
useradd rput1   
# 添加密码
 echo rget1:111111 |chpasswd
 echo rput1:111111 |chpasswd

rsync-3.1.2.tar.gz

对目录赋予ACL权限

inotify-tools-3.14.tar.gz

#sale1用户可以对目录拥有读写权限
setfacl -R -m user:rget1:rwx /var/www/html/ 
//设置sale2的权限
setfacl -R -m user:rput1:rwx /var/www/html/
    /var/www/html/
    # 查看
    getfacl /var/www/html/
        getfacl: Removing leading '/' from absolute path names
        # file: var/www/html/
        # owner: root
        # group: root
        user::rwx
        user:sale1:rwx
        user:sale2:rwx
        user:rget1:rwx
        user:rput1:rwx
        group::r-x
        mask::rwx
        other::r-x

二、搭建rsync inotify环境

创建测试数据

  注:在原来的rsync服务器上面即 inotify服务器:192.168.0.244/24 上面开始搭建

cp /etc/passwd /var/www/html/

rsync -avz --delete rget1@172.100.0.229:/var/www/html/ /web-back/

1、先安装好inotify包

rsyncd.conf配置文件

  wget  

配置文件分为两部分:全局参数,模块参数
全局参数:对rsync服务器生效,如果模块参数和全局参数冲突,冲突的地方模块参数生效
模块参数:定义需要通过rsync输出的目录定义的参数
常见的全局参数:
port          #→指定后台程序使用的端口号,默认为873。
uid            #→该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是" nobody"。
gid            #→该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为" nobody"。
max connections        #→指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。
lock file                  #→指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock。
motd file         #→" motd file"参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,默认
是没有motd文件的。
log file             #→" log file"指定rsync的日志文件,而不将日志发送给syslog。
pid file              #→指定rsync的pid文件,通常指定为“/var/run/rsyncd.pid”,存放进程ID的文件位置。
hosts allow =    #→单个IP地址或网络地址   //允许访问的客户机地址
常见的模块参数:主要是定义服务器哪个要被同步输出,其格式必须为“ [ 共享模块名 ]” 形式,这个名字就是在 rsync 客户端看到的名字,其实很像 Samba 服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。
Comment         #→给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。
Path                  #→指定该模块的供备份的目录树路径,该参数是必须指定的。
read only         #→yes为只允许下载,no为可以下载和上传文件到服务器
exclude             #→用来指定多个由空格隔开的多个文件或目录(相对路径),将其添加到exclude列表中。这等同于在客户端命令中使用―exclude或----filter来指定某些文件或目录不下载或上传(既不可访问)
exclude from   #→指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义,每个文件或目录需要占用一行
include             #→用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用--include来指定模式,结合include和exclude可以定义复杂的exclude/include规则。
include from   #→指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。
auth users       #→该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果" auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在" secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。
secrets file      #→该选项指定一个包含定义用户名:密码对的文件。只有在" auth users"被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,注意:该文件的权限一定要是600,否则客户端将不能连接服务器。
hosts allow      #→指定哪些IP的客户允许连接该模块。定义可以是以下形式:
    单个IP地址,例如:192.167.0.1,多个IP或网段需要用空格隔开,
    整个网段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0
“*”则表示所有,默认是允许所有主机连接。
hosts deny      #→指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。
list              #→该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,
可以创建隐藏的模块。默认值是true。
timeout   #→通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。

tar zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14

用配置文件定义目录输出

 ./configure --prefix=/usr/local/inotify-3.14

vim /etc/rsyncd.conf                    //文件不存在,需要自己创建
uid = nobody                           #运行进程的身份
gid = nobody                           #运行进程的组
address =192.168.1.63                       #监听IP
port =873                               #监听端口
hosts allow =192.168.1.64                           #允许同步客户端的IP地址,可以是网段,或者用*表示所有 192.168.1.0/24或192.168.1.0/255.255.255.0
use chroot = yes                               #是否囚牢,锁定家目录,rsync被黑之后,黑客无法再rsync运行的家目录之外创建文件,选项设置为yes
max connections =5                             #最大连接数
pid file =/var/run/rsyncd.pid          #进程PID,自动生成
lock file =/var/run/rsync.lock         #指max connectios参数的锁文件
log file =/var/log/rsyncd.log          #日志文件位置
motd file =/etc/rsyncd.motd
          #客户端登陆之后弹出的消息,需要创建

[wwwroot]                              #共享模块名称
path =/var/www/html                       #路径
comment = used for web-data root    #描述
read only = yes                                 #只读方式(只可以下载)
list = yes                                         #是否允许查看模块信息
auth users = rsyncuser                        #备份的用户,和系统用户无关
secrets file =/etc/rsync.passwd        #存放用户的密码文件,格式是  用户名:密码

make && make install

创建提示文件和用户密码

2、创建监控脚本inotify.sh

echo "Welcome to Backup Server" > /etc/rsyncd.motd
      [root@XueGod63 ~]# vim /etc/rsync.passwd
rsyncuser:password123
[root@XueGod63 ~]# chmod 600 /etc/rsync.passwd                 //目录权限必须是700或者600,否则的话身份验证会失效,设置rsync user的时候
# 启动服务测试
[root@XueGod63 ~]# vim /etc/xinetd.d/rsync
        disable = no        #将原来的yes改为no(部分版本可能是no,则不用改)
[root@XueGod63 ~]# /etc/init.d/xinetd restart                           //启动服务或者启动方式用
[root@XueGod63 ~]# rsync --daemon --config=/etc/rsyncd.conf
 [root@XueGod63 ~]# netstat -antup | grep :873
tcp        0      0:::873                      :::*                        LISTEN      45089/xinetd       
       [root@XueGod63 ~]# chkconfig xinetd on
测试,rsync语法:   rsync 选项 用户名@备份源服务器IP::共享模块名 目标目录
       [root@XueGod64 ~]# rsync -avz rsyncuser@192.168.1.63::wwwroot /web-back/
Welcome to Backup Server
Password:       #输入密码password123
或者:使用下面的命令,输出详细信息
[root@XueGod64 ~]# rsync -avz --progress --delete rsyncuser@192.168.1.63::wwwroot /web-back/
Welcome to Backup Server
Password:           #输入密码password123
        receiving incremental file list
        ./
        System.map-2.6.32-431.el6.x86_64
             2518236100%   80.05MB/s    0:00:00(xfer#1, to-check=26/28)
        ……
        sent 502 bytes  received 29590149 bytes  6575700.22 bytes/sec
        total size is 29584842  speedup is 1.00

# 密码处理
// 新建一个文件保存好密码,然后在rsync命令中使用--password-file指定此文件即可
[root@xuegod64 ~]# vim passfile
Password123
[root@xuegod64 ~]# chmod 600 passfile 
[root@xuegod64 ~]# rsync -avz rsyncuser@192.168.1.63::wwwroot --password-file=passfile /backup/
#!/bin/bash
#para
host01=192.168.0.144  #rsync服务器地址
src=/backup        #本地监控的目录
dst=backup         #rsync服务器的模块名称
user=nowview      #rsync服务器的虚拟用户
rsync_passfile=/etc/rsyncd.password   #本地调用rsync服务的密码文件
inotify_home=/usr/local/inotify-3.14    #inotify的安装目录
#judge
if [ ! -e "$src" ] 
|| [ ! -e "${rsync_passfile}" ] 
|| [ ! -e "${inotify_home}/bin/inotifywait" ] 
|| [ ! -e "/usr/bin/rsync" ];
then
echo "Check File and Folder"
exit 9
fi
${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src 
| while read file
do
#  rsync -avzP --delete --timeout=100 --password-file=${rsync_passfile} $src $user@$host01::$dst >/dev/null 2>&1
cd $src && rsync -aruz -R --delete ./  --timeout=100 $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1
done
exit 0

脚本实现定时自动备份

  脚本创建完毕,丢给后台运行。(开机启动的话放到rc.local文档即可)

    [root@XueGod64 ~]# vim autobackup.sh
#!/bin/bash
rsync -avz rsyncuser@192.168.0.63::wwwroot --password-file=passfile /backup/
       [root@XueGod64 ~]# chmod  x autobackup.sh
       [root@XueGod64 ~]# chmod  x autobackup.sh
[root@XueGod64 ~]# rm -rf /web-back/*                       //测试脚本
[root@XueGod64 ~]# sh autobackup.sh
       [root@XueGod64 ~]# echo "01 3 * * * sh /root/autoback.sh &" >> /var/spool/cron/root
sh inotify.sh &

Rsync Inotify 实时同步

  查看年一下进程

Linux 内核从 2.6.13 版本开始提供了 inotify 通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
可以监控某个用户,什么时间,做了什么动作!
使用 rsync 工具与 inotify 机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性、周期过密等问题。
下载地址: notify-tools-3.13
我们把XueGod63上/var/www/html目录实时同步到XueGod64的/web-back目录中
查看内核支持inotify和调整

[root@主机B-244 /]# ps -ef |grep inotify
root       1793      1  0 17:53 ?        00:00:00 sh inotify.sh
root       1806   1793  0 17:53 ?        00:00:00 /usr/local/inotify-3.14/bin/inotifywait -mrq --timefmt %d/%m/%y %H:%M --format %T %w%f -e close_write,delete,create,attrib /backup
root       1807   1793  0 17:53 ?        00:00:00 sh inotify.sh
root       2032   1843  0 17:58 pts/0    00:00:00 grep --color inotify
[root@XueGod63 ~]# uname -r                           //inotify从kernel2.6.13开始正式并入内核,开始支持
2.6.32-431.el6.x86_64
[root@XueGod63 ~]# ls /proc/sys/fs/inotify/                 //查看调控参数
max_queued_events       #表示监控时间队列           默认16384 可以使用cat命令查看
max_user_instances          #表示最多监控实例数        默认128
max_user_watches            #表示每个实例最多监控文件数    默认8192
#在Linux内核中,默认的Inotify机制提供了三种调控参数,当要监控的目录,文件数比较多的时候或者变化比较频
繁的时候,要加大三个数值
可以直接修改/etc/sysctl.conf配置文件,将管理队列设置为32786,实例数:1024,文件数:9000000(大于监控目标总数即可)
       [root@XueGod63 ~]# vim /etc/sysctl.conf
……          #末尾添加下面三行
fs.inotify.max_queued_events =32768
fs.inotify.max_user_instances =1024
fs.inotify.max_user_watches =90000000
安装inotify-tools
安装 inotify-tools 后,将拥有 inotifywait、inotifywatch 辅助工具程序,从而来监控、汇总文件系统改动情况。
       [root@XueGod63 ~]# tar xvf inotify-tools-3.13.tar.gz -C /usr/local/src/
       [root@XueGod63 ~]# cd /usr/local/src/inotify-tools-3.13/
[root@XueGod63 inotify-tools-3.13]# ./configure --prefix=/usr/local/inotify-tools ; make ; make install

也可以通过yum方式来安装:yum install inotify*
测试inotifywait
       使用 inotifywait 命令监控网站目录/var/www/html发生的变化。然后在另一个终端向/var/www/html目录下添加文件、移动文件,查看屏幕输出结果。
[root@XueGod63 ~]# cd ; ln -s /usr/local/inotify-tools/bin/* /usr/bin/        //方便直接调用命令
inotifywait常用参数:
-e  用来指定要监控哪些事件。这些事件包括: create 创建,move 移动,delete 删除,modify 修改文件内容,attrib 属性更改。
-m 表示持续监控
-r  表示递归整个目录
-q 表示简化输出信息。
[root@XueGod63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/
另外开一终端,做一些改动
 [root@xuegod63 ~]# echo aaa > /var/www/html/a.html
[root@xuegod63 ~]# mkdir /var/www/html/test
[root@xuegod63 ~]# cp /etc/passwd /var/www/html/test/
[root@xuegod63 ~]# rm -rf /var/www/html/test/passwd
查看监控终端
/var/www/html/ CREATE a.html
/var/www/html/ MODIFY a.html
/var/www/html/ CREATE,ISDIR test
/var/www/html/test/ CREATE passwd
/var/www/html/test/ MODIFY passwd
/var/www/html/test/ DELETE passwd
#使用 inotifywait 输出的监控结果中,每行记录中依次包括目录、事件、文件。据此可以识别变动情况。
使用触发试同步脚本
首先要做好免密码链接
       [root@XueGod63 ~]# ssh-keygen
       [root@XueGod63 ~]# ssh-copy-id root@192.168.1.64
编写脚本
       [root@XueGod63 ~]# vim inotify.sh
#!/bin/bash
SRC=/var/www/html
DST=root@192.168.1.64:/web-back
inotifywait -mrq -e modify,delete,create,attrib ${SRC}|while read D E F
        do
                /usr/bin/rsync -avz --delete $SRC $DST
        done
#思路:只要检测到变动时间,执行rsync上行同步操作,拉数据
#while read D E F是是哪个变量,前面输出的内容是三段,每一段对应的就是后面的D E F
 [root@XueGod63 ~]# chmod  x inotify.sh ; echo "sh /root/inotify.sh &" >> /etc/rc.local
补充:
1、推荐了解下:rsync sersync   
当有海量的小数据文件的时候,inotify 会有延迟!!
2、有利有弊,慎用

  inotify的配置基本如上,更多的功能参数请参考上面的inotify文档网址。

CentOS 6.5 rsync inotify实现数据实时同步备份 http://www.linuxidc.com/Linux/2016-11/137655.htm

三、测试

rsync inotify实现数据的实时同步 http://www.linuxidc.com/Linux/2017-01/139778.htm

  现在,在inotify服务器上面可以看到

rsync inotify实现服务器之间文件实时同步详解  http://www.linuxidc.com/Linux/2016-11/137659.htm

[root@主机B-244 backup]# pwd
/backup
[root@主机B-244 backup]# ls
1    108  117  126  135  144  153  162  171  180  19   199  27  36  45  54  63  72  81  90  asound.conf                krb5.conf       pm-utils-hd-apm-restore.conf
10   109  118  127  136  145  154  163  172  181  190  2    28  37  46  55  64  73  82  91  cgconfig.conf              ld.so.conf      request-key.conf
100  11   119  128  137  146  155  164  173  182  191  20   29  38  47  56  65  74  83  92  cgrules.conf               libaudit.conf   resolv.conf
101  110  12   129  138  147  156  165  174  183  192  200  3   39  48  57  66  75  84  93  cgsnapshot_blacklist.conf  libuser.conf    rsyslog.conf
102  111  120  13   139  148  157  166  175  184  193  21   30  4   49  58  67  76  85  94  dracut.conf                logrotate.conf  sestatus.conf
103  112  121  130  14   149  158  167  176  185  194  22   31  40  5   59  68  77  86  95  gai.conf                   mke2fs.conf     sudo.conf
104  113  122  131  140  15   159  168  177  186  195  23   32  41  50  6   69  78  87  96  grub.conf                  mtools.conf     sudo-ldap.conf
105  114  123  132  141  150  16   169  178  187  196  24   33  42  51  60  7   79  88  97  gssapi_mech.conf           nfsmount.conf   sysctl.conf
106  115  124  133  142  151  160  17   179  188  197  25   34  43  52  61  70  8   89  98  host.conf                  nsswitch.conf   xinetd.conf
107  116  125  134  143  152  161  170  18   189  198  26   35  44  53  62  71  80  9   99  idmapd.conf                ntp.conf        yum.conf

Rsync结合Inotify 实时同步配置  http://www.linuxidc.com/Linux/2017-02/140877.htm

  我已经在根目录下创建了一个backup目录,立刻创建了如上内容

rsync inotify实现数据的实时备份  http://www.linuxidc.com/Linux/2016-11/137630.htm

由于inotify脚本已经在后台运行了,正在实时的监控着这个目录的变化

rsync inotify实现数据自动同步  http://www.linuxidc.com/Linux/2017-03/141717.htm

下面到备用服务器(即原rsync服务器)上面去看看原来的rsync的模块bauckup的路径/home/backup下的情况

使用rsync实现数据实时同步备份  http://www.linuxidc.com/Linux/2017-05/143462.htm

[root@主机A-144 backup]# pwd
/home/backup
[root@主机A-144 backup]# ll
total 0
[root@主机A-144 backup]# 

Rsync 的详细介绍:请点这里
Rsync 的下载地址:请点这里

  目前还有同步过来,需要时间

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/144913.htm

  等待......

图片 3

  再看

[root@主机A-144 backup]# ls
1    108  117  126  135  144  153  162  171  180  19   199  27  36  45  54  63  72  81  90  asound.conf                krb5.conf       pm-utils-hd-apm-restore.conf
10   109  118  127  136  145  154  163  172  181  190  2    28  37  46  55  64  73  82  91  cgconfig.conf              ld.so.conf      request-key.conf
100  11   119  128  137  146  155  164  173  182  191  20   29  38  47  56  65  74  83  92  cgrules.conf               libaudit.conf   resolv.conf
101  110  12   129  138  147  156  165  174  183  192  200  3   39  48  57  66  75  84  93  cgsnapshot_blacklist.conf  libuser.conf    rsyslog.conf
102  111  120  13   139  148  157  166  175  184  193  21   30  4   49  58  67  76  85  94  dracut.conf                logrotate.conf  sestatus.conf
103  112  121  130  14   149  158  167  176  185  194  22   31  40  5   59  68  77  86  95  gai.conf                   mke2fs.conf     sudo.conf
104  113  122  131  140  15   159  168  177  186  195  23   32  41  50  6   69  78  87  96  grub.conf                  mtools.conf     sudo-ldap.conf
105  114  123  132  141  150  16   169  178  187  196  24   33  42  51  60  7   79  88  97  gssapi_mech.conf           nfsmount.conf   sysctl.conf
106  115  124  133  142  151  160  17   179  188  197  25   34  43  52  61  70  8   89  98  host.conf                  nsswitch.conf   xinetd.conf
107  116  125  134  143  152  161  170  18   189  198  26   35  44  53  62  71  80  9   99  idmapd.conf                ntp.conf        yum.conf
[root@主机A-144 backup]# pwd
/home/backup

  这些内容已经同步过来了。

四、总结

   关于这个inotify.sh它的这个监控,触发问题。

目前根据我的测试得出的结论是这样的,它的实时同步是建立在当这个被监控的目录/back  一旦生成有文件或者生成任何的东西的情况下,这个脚本就会立刻触发同步更新。当然会根据文件大小、网络以及其他的因素,它的同步会有所时间的差别。

总的来说是inotify服务器目录变化,那么rsync服务器的目录就跟着变化(同步),反过来就不可以了。不过,即便这样已经是满足了现代企业日常的需求了。

CentOS 6.5 rsync inotify实现数据实时同步备份 http://www.linuxidc.com/Linux/2016-11/137655.htm

rsync inotify实现数据的实时同步 http://www.linuxidc.com/Linux/2017-01/139778.htm

rsync inotify实现服务器之间文件实时同步详解  http://www.linuxidc.com/Linux/2016-11/137659.htm

Rsync结合Inotify 实时同步配置  http://www.linuxidc.com/Linux/2017-02/140877.htm

RSync实现数据备份  http://www.linuxidc.com/Linux/2017-06/144913.htm

inotify rsync实现数据实时同步  http://www.linuxidc.com/Linux/2017-10/147901.htm

rsync inotify实现数据的实时备份  http://www.linuxidc.com/Linux/2016-11/137630.htm

rsync inotify实现数据自动同步  http://www.linuxidc.com/Linux/2017-03/141717.htm

使用rsync实现数据实时同步备份  http://www.linuxidc.com/Linux/2017-05/143462.htm

Rsync 的详细介绍:请点这里
Rsync 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149355.htm

图片 4

本文由金沙棋牌发布于操作系统,转载请注明出处:inotify实现实时同步案例,RSync实现数据备份

关键词:

上一篇:linux查看mysql安装路径,CentOS系统命令

下一篇:没有了