rsync结合inotify实现实时同步

背景介绍

中小企业的web应用场景中,web服务器可能是由2台服务器组成,通过DNS的轮询作为负载均衡,此时就需要对2台服务器之间同步的实时性有较高的要求,上一篇文章所介绍的rsync+crontab就不能满足此需求,本章就来介绍使用rsync+inotify完成服务器之间的实时同步

实验说明

操作系统:CentOS6.8,inotify要求内核版本必须为2.6.13以上

源服务器:172.16.10.10/24

目标服务器:172.16.10.20/24

实验目的:将源服务器上的/rsync目录内的内容实时同步到目标服务器/rsync目录下

其他事项:为避免安全机制带来的干扰,源和目标服务器都关闭Selinux和iptables

实验步骤

一、安装rsyncd服务

1、服务器端操作

(1)安装xinetd超级守护进程

yum -y install xinetd

(2)将rsync设置为开机启动

chkconfig rsync on

(3)创建rsync配置文件填

vim /etc/rsyncd.conf 并填写下列内容:

# global setting

log file = /var/log/rsyncd.log #设置log文件位置

pid file = /var/run/rsyncd.pid #设置pid文件位置

lock file = /var/run/rsyncd.lock #设置lock文件位置

uid = rsync #设置启动时以哪个用户来代替root运行rsync

gid = rsync

list = no #不允许列出名单

chroot = no #不切换根目录

timeout = 300 #设置超时时间

ignore errors = yes #是否忽略错误

max connections = 10 #最大连接数

# module setting

[data] #设定模块名称

path = /rsync #指定模块路径

read only = no #是否可写

write only = no #是否可读

auth users = rsync_bak #创建允许链接该模块的虚拟用户

secrets file = /etc/rsyncd.passwd  #账户密码(rsync_bak)的存放文件

strict modes = yes #检查secrets file文件的权限是否满足要求

hosts allow = 172.16.10.20/32   #白名单

hosts deny = *   #黑名单

(4)创建secrets file文件,并修改其权限

vim /etc/rsyncd.passwd

chmod 600 /etc/rsyncdpasswd

(5)创建rsync系统用户

useradd -s /sbin/nologin rsync

(6)创建需要同步的目录并修改其属主和属组

mkdir /rsync

chown -R rsync:rsync /rsync

(7)启动rsyncd服务,并查看873端口是否正常侦听

service xinetd start

netstat -ntl

(8)使用rsync命令将存放rsync_bak帐户名和密码的文件发给客户端

2、客户端操作

(1)查看/etc/rsyncd.passwd是否收到,权限是否为600,再将文件内rsync_bak用户名删除掉,只保留rsync_bak账户的密码

(2)再检测rsyncd服务是否可以正常传输,至此rsyncd服务就搭建完成

二、安装inotify-tools

1、inotify-tools工作机制

inotify更像一个监控进程,它会监视指定的目录或文件,并筛选出信息发生变化的内容,根据这个特性我们可以在rsync客户端安装inotify-tools并将其筛选出来的目录或文件作为输入再通过rsync客户端推送到rsync服务器上以实现两个服务器之间的实时同步

2、安装inotify-tools的2个先决条件

(1)安装inotify-tools的机器内核版本必须是2.6.13及以上

(2)查看机器内核是否支持inotify

3、安装inotify-tools操作步骤

(1)从 http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 下载源码并放到/usr/local/src目录下

(2)解压源码包后进入目录

tar -xf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

(3) ./configure --prefix=/usr/local/inotify #配置configure参数

(4)make && makeinstall #编译安装

(5)echo "PATH=/usr/local/inotify/bin:$PATH" >>/etc/profile.d/inotify.sh #添加PATH路径

(6)source /etc/profile.d/inotify.sh #重读下该文件

(7)ln -sv /usr/local/inotify/include/ /usr/include/inotify #头文件输出

(8)echo "/usr/local/inotify/lib" >> /etc/ld.so.conf.d/inotify.conf #库文件输出

(9)使用ldconfig -v 查看inotify库是否已被加载

(10)使用vim /etc/man.config,将inotify的man文档输出

三、测试inotify的监视功能

1、通过tree可以看到inotify的核心就只有2条命令,可以通过--help查看

2、mkdir /rsync #手动创建一个/rsync目录用于inotify的监视

3、inotifywait -mqr --format ‘%w%f‘ -e create /rsync 让inotify监视/rsync目录的变化

-q quite只输出变化信息

-m monitor监视

-r recursive递归

--format 指定格式类型

-e event真实的事件,后面接create,delete等,多个事件间用 , 分隔

4、新开一个终端,在/rsync下创建文件或目录看是否能够被监视到

四、inotify结合rsync实现实时同步

1、创建存放脚本的目录及脚本文件

mkdir /etc/usr/local/inotify/script

vim /etc/usr/local/inotify/script/rsync.sh

2、填写脚本内容

#!/bin/bash

rsyncSrc=/rsync

rsyncCommand=/usr/local/inotify/bin/inotifywait

$rsyncCommand -mrq --format ‘%w%f‘ -e close_write,delete,create $rsyncSrc \

| while read file;do

cd $rsyncSrc && rsync -az --delete --password-file=/etc/rsyncd.passwd ./ \

[email protected]::data > /dev/null 2>&1

done

注意:脚本中的./代表同步/rsync目录中的内容而不包括/rsync目录本身,以目录方式执行效率更高

3、给脚本执行权限

chmod +x /usr/local/inotify/script/rsync.sh

4、设置脚本开机自动启动

vim /etc/rc.d/rc.local

sh /usr/local/inotify/script/rsync.sh &

:wq

至此,所有操作完成,重启客户机,开机后使用ps -ef | grep "inotify"查看脚本是否正常启动

时间: 2024-10-24 19:24:12

rsync结合inotify实现实时同步的相关文章

rsync unison+inotify双向实时同步

rsync多线程同步 A:文件服务器 ip:10.10.1.10 B:备份服务器 ip:10.10.1.11 1.在B服务器上安装rsync软件 tar xzvf rsync-3.1.0.tar.gz cd rsync-3.1.0 ./configure make make install 2.配置双机ssh信任 在两台服务器的root目录下创建.ssh目录并设置正确的权限 mkdir ~/.ssh chmod 700 ~/.ssh 使用ssh-keygen命令生成SSH协议的RSA密钥 ssh

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

推荐: Rsync结合Inotify 实时同步配置 rsync+inotify实现实时同步案例 rsync+inotify实现多台服务器之间数据实时同步 Linux下Rsync+Inotify-tools实现数据实时同步

CentOS6.4_64位下搭建Rsync+Inotify实现实时同步

CentOS6.4_64位下搭建Rsync+Inotify实现实时同步 rsync是linux下的文件同步服务,功能简单来说就是服务端打开873端口,客户端连接这个端口,并对服务器端配置的目录进行同步,可以理解为客户端比对服务器端资源后,对增量或者差异的数据进行增删改操作,功能支持上传(推送)或下载(获取)比对,也就是远程数据比对本地数据而后对远程数据进行增删改操作,以及本地数据比对远程数据然后对本地数据进行增删改操作. centos6.4下默认已经安装,只需保证依赖服务xinetd开启即可.

linux rsync +inotify 实现 实时同步

前言:     rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了同步数据的实时性问题. 一.基本环境 系统:CentOS 2.6.32-220.el6.x86_64软件包版本:rsync-3.0.6-12.el6.x86_64                    inotify-tools-3.14 下载链接:百度   inotify

Rsync+inotify 实现实时同步数据文件

什么是Rsync? rsync可以实现增量备份,配合inotify可以实现时事的数据备份 Rsync的三种工作模式 1)本地备份,相当于 cp 命令 将 /etc/hosts 文件拷贝到 /tmp/ 目录下 rsync -avz /etc/hosts /tmp/ 删除一个目录 先新建一个空目录,然后使用 rsync 命令同步 mkdir /zhao 添加 --delete参数,目录 zhao 为空 rsync --delete /zhao/ /tmp/ 命令解释:以前面的目录为准,前面目录有啥后

通过rsync+inotify实现实时同步

需求:web服务器未做存储上的HA,为了保证主备服务器上目录及文件能够实时同步,当主服务器宕机时可快速切换到备服务器上,需将主服务器上的某些目录的文件实时同步到备服务器上 那么我选择了rsync+inotify实现实时同步 首先要了解是从哪台服务器同步到哪台服务器,不能弄反了,尤其是生产系统,且在生产系统中,先做测试目录,如果生产服务器上数据量不大,应先做好备份工作 先说环境 OS:linux rhel6.2 x86_64 192.168.10.72 安装rsync 配置rsync.conf19

实战:配置rsync+inotify实现实时同步备份

实战:配置rsync+inotify实现实时同步 Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等.利用这一机制,可以非常方便地实现文件异动告警.增量备份,并针对目录或文件的变化及时作出响应. 使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性.周期过密等问题. inotify

rsync的简单介绍及rsync+inotify实现实时同步更新

Rsync的简单介绍及rsync+inotify实现实时同步更新 rsync是类unix系统下的数据镜像备份工具--remotesync.一款快速增量备份工具 Remote Sync,远程同步支持本地复制,或者与其他SSH.rsync主机同步.Rsync是超级进程来管理的,服务端口为873. 特点: 1.可以镜像保存整个目录树或文件系统: 2.有较高的数据传输效率: 3.可借助于SSH实现安全数据传输: 4. 支持匿名传输 工作模式: 1.shell模式,也称作本地模式 2.远程shell模式,

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

说明: 一.先安装好rsync的服务端和客户端: http://douya.blog.51cto.com/6173221/1573968 二.安装,使用inotify-tools,实时同步 1.查看服务器内核是否支持inotify ll /proc/sys/fs/inotify   #列出文件目录,出现下面的内容,说明服务器内核支持inotify -rw-r--r-- 1 root root 0 Mar  7 02:17 max_queued_events -rw-r--r-- 1 root r