rsync + inotify数据同步

rsync 具有安全性高、备份迅速、支持增量备份等优点,通过 rsync 可以解决对实时性要求不是很高的数据备份需求。如果实时性高的情况下,就会体现出他的不足,虽然可以利用任务计划来触发同步,但还是有一定的时间差,并且 rsync 在同步数据的时候,要遍历整个目录树后进行比对,文件数量达到一定量级的情况下,这是很低效的做法。所以就有了今天的 rsync + inofity 。

inotify 是一种强大的、细粒度的、异步文件系统时间监控机制,Linux 内核从 2.6.13 起,加入了对inotify 的支持,他可以监控文件系统中 添加、删除、修改、移动等各种细微事件,第三方软件inotify-tools 利用这个内核接口就能监控文件系统下文件的各种变化,从而触发 rsync 同步数据,解决了数据同步实时性问题。

一、    在 web(web安装rsync就行不需要配置rsyncd.conf) 、web_bak 安装 rsync(web在/var/www/html/下更新信息,在wen_bak的/var/www/html/下跟着更新所有数据)

IP:192.168.1.80是源服务器就是服务端(yum安装rsync就行,不需要配置),192.168.1.81是目的服务器就是客户端(yum安装rsync,还要配置/etc/rsyncd.conf)。

[[email protected] ~]# yum -y install rsync

二、配置 web_bak rsync

[[email protected]_bak]# vim /etc/rsyncd.conf   ## 配置文件需手工创建
# rsync
uid = nobody
gid = nobody
use chroot = no
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log
[web1]
path = /var/www/html/(客户端的路径不一样要和服务端一样,自己定)
comment = web_bak file
ignore errors
read only = no
write only = no
hosts allow = 192.168.1.80  #web 的 IP
hosts deny = *
list = false
uid = root
gid = root
auth users = rsync80
secrets file = /etc/rsync.pass
[[email protected]_bak]# echo"rsync80:123456" > /etc/rsync.pass
[[email protected]_bak]# chown root.root/etc/rsync.pass
[[email protected]_bak]# chmod 600/etc/rsync.pass

三、以守护进程启动 rsync ,并加入开机启动

[[email protected]_bak]# rsync --daemon
[[email protected]_bak]# ps aux | greprsync
root      1344 0.1  0.0 107612   660 ?        Ss  19:17   0:00 rsync --daemon
root      1347  1.0  0.1 103240   864 pts/0    S+   19:17  0:00 grep rsync
[[email protected]_bak]# which rsync
/usr/bin/rsync
[[email protected]_bak]# echo"/usr/bin/rsync --daemon" >> /etc/rc.d/rc.local
[[email protected]_bak]# iptables -I INPUT -p tcp--dport 873 -j ACCEPT
[[email protected]_bak]# service iptables save
[[email protected]_bak]# service iptables restart

(蓝色这里是防火墙根据自己需求,我关闭防火墙了,所以这部我不操作)

四、在 web 上安装 inotify-tools

[[email protected]]# uname -r
2.6.32-358.el6.x86_64
[[email protected]]# ll/proc/sys/fs/inotify/
总用量 0
-rw-r--r-- 1 root root 0 5月  20 19:29max_queued_events
-rw-r--r-- 1 root root 0 5月  20 19:29 max_user_instances
-rw-r--r-- 1 root root 0 5月  20 19:29max_user_watches
[[email protected]]# yum -y installgcc gcc-c++ make
[[email protected] src]#tar zxf inotify-tools-3.14.tar.gz
[[email protected] src]# cdinotify-tools-3.14
[[email protected] inotify-tools-3.14]# ./configure ; make ; make install
[[email protected] ~]# ll/usr/local/bin/inotifywa*
-rwxr-xr-x. 1 root root 44279 5月  21 22:57/usr/local/bin/inotifywait
-rwxr-xr-x. 1 root root 41369 5月  21 22:57/usr/local/bin/inotifywatch
# inotifywait 用于等待文件或文件集的一个特定时间,他可以监控任何文件及目录的设置,并且可以递归监控整个目录树。
# inotifywatch 用于收集被监控的文件系统统计数据,包括每个 inotify 时间发生的次数等信息。
inotify 接口参数介绍 (用来限制 inotify 消耗kernel memory 的大小,由于是内存参数,可以随时调节大小。)
/proc/sys/fs/inotify/max_queued_evets 
# 表示调用 inotify_init 时分配给inotify instance 中可排队的 event 的数目的最大值,超出这个值的事件被丢弃,但会触发 IN_Q_OVERFLOW 事件。
/proc/sys/fs/inotify/max_user_instances
# 表示每个 real user ID 可创建的inotify instatnces 的数量上限。
/proc/sys/fs/inotify/max_user_watches
# 表示每个 inotify instatnces 可监控的最大目录数量。如果监控文件数据巨大,可以增加此值,如 echo 20000000 > 上述文件
inotifywait 参数介绍 (inotifywait 是一个监控等待事件,可以配合 shell 脚本使用。)
-m   即 --monitor 表示始终保持事件监听状态
-r   即 --recursive 表示递归查询目录
-q   即 --quiet 表示打印监控事件
-e   即 --event 通过此参数可以指定要监控的事件,如:modify、delete、create、attrib 等。

五、配置 web 内容发部节点

[[email protected] ~]# vim /usr/bin/inotify_rsync.sh   ## 自己创建
#!/bin/bash
IP1=192.168.1.81        # web_bak 的 IP
src=/var/www/html/(服务端这个路径不一样要和客户端一样,自己定)    # 需要同步的本地路径
dst1=web1                   #web_bak 上设置的验证模块名
user1=rsync80            # 同步用户
/usr/local/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘-e modify,delete,create,attrib $src | while read files
                    do
                   /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pass$src [email protected]$IP1::$dst1 > /dev/null
                    echo"${files} was rsynced" >> /tmp/rsync.log 2>&1
                    done
# --timefmt:指定时间的输出格式。
  --format: 指定变化文件的详细信息。
这两个参数一般配合使用,通过指定输出格式,输出类似与:
22/05/14 01:25 /var/www/html/.abc.123.swpDELETE was rsynced

脚本授权:chmod  -R  755 /usr/bin/inotify_rsync.sh

[[email protected] ~]# echo "123456" >/etc/rsync.pass  # 注意这里的密码文件中只有用户密码没有用户,格式跟 web_bak 的不同
[[email protected] ~]# chownroot.root /etc/rsync.pass
[[email protected] ~]# chmod 600/etc/rsync.pass
[[email protected] ~]# /usr/bin/inotify_rsync.sh&
[[email protected] ~]# echo "/usr/bin/inotify_rsync.sh&" >> /etc/rc.d/rc.local

然后在 web /var/www/html/ 下执行操作,看看 web_bak 会不会同步数据

时间: 2024-08-26 09:42:46

rsync + inotify数据同步的相关文章

centos6 rsync+inotify 数据同步

一 前戏#检测rsync是否已安装rpm -qa rsync#如未按装,执行yum安装yum install -y rsync#新建用户和目录并授权useradd -M -s /sbin/nologin  rsyncmkdir /bakcupchown -R rsync.rsync /bakcup/ 二 服务端配置#打开配置文件,填入以下内容vi /etc/rsyncd.conf===================================#rsyncd.conf____________

Rsync+inotify 数据同步

Rsync工具的使用 -------- rsync 端口873 rsync常用的命令选项: -a:归档模式,相当于递归.保留权限等多个选项的组合 -v:显示同步过程详细信息 -z:传输过程中启用压缩 -A:保留文件的ACL属性信息 -n:测试同步过程,不做实际修改 --delete:删除目标文件夹内多余的文档 --------------------------- 本地同步(命令用法类似cp) rsync -a --delete /date/www/  /data/bak_www/ 远程SSH同

2-3-2 rsync+inotify备份同步数据

RSYNC = Remote Sync 远程同步 高效,一定要结合shell 官网:https://rsync.samba.org Author: Andrew Tridgell, Wayne Davison, and others Andrew Tridgell是Samba项目的领导者和主要开发人员,同时还在参与开发rsync\Linux Kernel. 与SCP的比较:scp=无法备份大量数据,类似windows的复制 rsync=边复制 ,边统计,边比较 Rsync特性和优点 可以镜像保存

rsync+inotify实现同步数据

1.rsync man一下sync,就会发现:sync-flush file system buffers,它是一个把缓冲区中的数据同步到文件系统中的一个命令:而rsync其实就是remote rsync,它是一个远程同步工具,兼具cp和scp的功能,rsync命令的使用几乎和scp是一样一样的.rsync是通过超级守护进程xinetd进行触发同步的. 1)优点:与cp和scp相比来说,rsync更快,更安全,支持增量备份.rsync在数据同步的过程中,不像cp一样全部都拷贝,而是先去比对特征码

rsync+inotify 数据实时同步备份

一.rsync rsync - a fast, versatile, remote (and local) file-copying tool. rsync synopsis: rsync 支持三种传输模式: local    本地 remote shell   (ssh, rsh) rsync daemon rsync连接远程主机进行同步或备份时有两种途径:使用远程shell程序(如ssh或rsh)进行连接,或使用TCP直接连接rsync daemon.    当源路径或目的路径的主机名后面包

CentOS5.8 x86_64下配置rsync+inotify即时同步文件

rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样就可以解决同步数据的实时性问题.rsync+inotify我在工作中会经常用到,大家部署这种时请注意以下方面: 一.rsync服务器的uid和gid请将nobody:nobody改为www:www,因为是考虑到我们的Nginx服务器是由www:www运行的,而其对应目录很多时候有写日志或其它相关写文

rsync+inotify实时同步环境部署记录

随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足.首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的,并且正在发生变化的往往是其中很少的一部分,这是非常低效的方式.其次,rsync不能实时的去监测.同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应

rsync+inotify实时同步案例

rsync+inotify实时同步案例 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的.而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式.其次,rsync不能实时的去监测.同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务

rsync远程同步及rsync+inotify实时同步

rsync远程同步及rsync+inotify实时同步 思维代入 正确.有效的备份方案是保障系统及数据安全的重要手段.在服务器中,通常会结合计划性任务.shell脚本来执行本地备份.但有时候为了提高备份的可靠性,异地备份也是非常有必要的.那下面就给大家介绍一种异地远程备份的方法:rsync远程备份. rsync简介 rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份.保持链接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份.镜像服务等应用