Rsync+Inotify远程实时同步

Rsync简介

rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
官方网站:http://rsync.samba.org/

开始部署Rsync

1、在服务器A和服务器B上同时安装rsync服务和Xinetd服务
yum -install rsync
2、在服务器A上编辑/etc/rsyncd.conf配置文件(没有这个文件的话可自行创建)

uid = nobody
gid = nobody
use chroot = yes
address = 47.88.56.104     #本机地址
port 873     #监听的端口
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 118.25.48.231     #允许访问的客户机地址

[web]     #项目名称
path = /var/www/html     #项目路径
comment = Web Directory     #项目描述
read only = yes     #只读
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z     #同步时不再压缩的文件
auth users = rsync     #用户认证信息
secrets file = /etc/rsync_users.db     #用户认证信息存放的路径

3、在服务器A上创建用户认证信息文件,格式:[账号]:[密码]

vim /etc/rsyncd_users.db
rsync:123456
:wq

4、在服务器A上启动Rsync服务程序,修改/etc/xinetd.d/rsync文件

service rsync
{
        disable = no     #将原来的yes改为no
        flags           = IPv4     #将原来的IPv6改为IPv4
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

service xinetd restart
5、在服务器B上测试同步(防火墙记得开放端口哟!!!)
/usr/bin/rsync -vzrtopg --delete --exclude ".svn/" --password-file=/etc/rsync_users.pass [email protected]::web /var/www/html/

#-v, --verbose 详细模式输出
#-z, --compress 对备份的文件在传输时进行压缩处理
#-r, --recursive 对子目录以递归模式处理
#-t, --times 保持文件时间信息
#-o, --owner 保持文件属主信息
#-p, --perms 保持文件权限
#-g, --group 保持文件属组信息
#--delete 删除那些DST中SRC没有的文件
#--exclude=PATTERN 指定排除不需要传输的文件模式
#--progress 在传输时现实传输过程
#--password-file=FILE 从FILE中得到密码,这个文件必须是600权限,chmod 600 /etc/rsync_users.pass


6、将Rsync加入任务计划中,每隔2分钟同步一次
crontab -e

定期同步的不足

1、执行备份的时间固定,延迟明显、实时性差
2、当同步源长期不变化时,密集的定期任务是不必要的

实时同步的优点

1、一旦同步源出现变化,立即启动备份
2、只要同步源无变化,则不执行备份

Inotify简介

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

开始配置Inotify

*注:在开始之前需要在服务器B上也安装好Rsync并且开启服务

1、在服务器A上调整inotify内核参数,vim /etc/sysctl.conf

fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576


2、使调整inotify内核参数立刻生效
sysctl -p
3、安装Inotify-Tool工具
yum install -y inotify-tools
4、打开两个终端,一个终端执行创建删除等操作,另一个执行Inotify-Tool工具,测试Inotify-Tool工具时候正常
inotifywait -mrq -e modify,create,move,delete /var/www/html

inotifywait:用于持续监控,实时输出结果
inotifywatch:用于短期监控,任务完成后再出结果


5、编写触发式脚本,vim /root/inotify_rsync.sh

#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ [email protected]:/var/www/html"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
    fi
done

6、添加开机自动后台自动运行,编辑/etc/profile文件,在最后一行加入下面语句
/bin/bash /root/inotify_rsync.sh &

End。。。。。。。。。

原文地址:http://blog.51cto.com/13444271/2113632

时间: 2024-10-16 11:22:26

Rsync+Inotify远程实时同步的相关文章

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

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

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

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

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

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

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实现实时同步

需求: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+inotify实现实时同步

1.数据同步: A服务器的一个目录同步到B服务器上的一个目录 方法是: 可以在A服务器上把这个目录共享(如ftp,http等),然后B服务器上写shell脚本,用crontab做定时任务下载过来(数据同步不实时) 实时同步 方法是: rsync远程目录实时同步 drbd远程存储实时同步(很老的方案) 共享存储,就是同一个磁盘设备同时被很多人用 分布式存储(云存储) 2.同步.异步和远程同步 sync同步 async异步 rsync 远程同步 这里主要说rsync,在开始之前需要了解以下几个问题:

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 数据实时同步

一.rsync介绍 rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能类似ssh带的scp命令,但又优先于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝.当然,Rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优先于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝.利用rsync还可以实现删除文件