Sersync+Rsync实现触发式文件同步实战过程

背景

  通常我们在服务器上使用rsync加上crontab来定时地完成一些同步、备份文件的任务。随着业务和应用需求的不断扩大、实时性要求越来越高。一般rsync是通过校验所有文件后,进行差量同步,如果文件量十分庞大,那么rsync进行校验的过程也是十分耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过crontab方式进行触 发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。而Sersync+Rsync的组合能够较好地解决这种问题。

Sersync介绍

1、sersync是使用c++编写,而且对linux系统文 件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。 因此更快。

2、sersync配置起来很简单,其中bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。

3、另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状 态。

4、本项目有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则每10个小时对同步失败的文件重新同步。

5、本项目自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。

6、本项目socket与http插件扩展,满足您二次开发的需要。

实战过程

一、服务器环境

服务端:172.16.57.26 centos6.7 rsync-server 接收文件

客户端:172.16.57.25 centos6.7 sersync+rsync-client 发送文件

二、服务端安装rsync-server

1、安装rsync

# rpm -qa | grep rsync #查看rsync是否已经安装,如果没有安装,yum install直接安装即可

2、使用xinetd方式启动rsync

# vim /etc/xinetd.d/rsync #修改disable = no,flags = IPv4

3、修改rsync配置文件

# mkdir /etc/rsyncd
# vim /etc/rsyncd/rsyncd.conf #修改配置文件如下
# GLOBAL OPTIONS
motd file=/etc/motd
port=873
pid file=/var/run/rsyncd.pid
lock file = /var/lock/rsyncd
log file=/var/log/rsyncd
transfer logging = yes
log format = [op]:%o [ip]:%a [module]:%m [path]:%P [file]:%f [size]:%l
syslog facility=daemon
max connections=100
[recv]
comment = "recv data from 57.25"
path = /opt/rsync_data/recv #这边的目录的宿主要改为apprun,在这里同步过程中使用的是普通账户apprun
list = yes
use chroot = yes
uid = apprun
gid = apprun
read only = no
write only = no
exclude =
include =
auth users = rsync
secrets file = /etc/rsyncd/rsyncd.secrets
strict modes = yes
hosts allow = 172.16.57.25
hosts deny = *
# ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf

4、建立用户认证文件

# vim /etc/rsyncd/rsyncd.secrets
rsync:111111   #格式  用户名:口令
#chmod 600 /etc/rsyncd/rsyncd.secrets #权限设为600,否则启动会报错

5、启动rsync

# /etc/init.d/xinetd start
# netstat -tpln | grep 873 #查看873端口是否已经在监听了

三、客户端安装sersync+rsync-client

1、安装rsync,和服务端一样,没有安装的话yum install安装

2、安装sersync

# tar xzvf sersync2.5_64bit_binary_stable_final.tar.gz
# mv GNU-Linux-x86 /opt/programs/sersync #解压并拷贝到安装目录

3、配置sersync

<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
  <host hostip="localhost" port="8008"></host>
  <debug start="false"/>
  <fileSystem xfs="false"/>
  <filter start="false">
  <exclude expression="(.*)\.svn"></exclude>
  <exclude expression="(.*)\.gz"></exclude>
  <exclude expression="^info/*"></exclude>
  <exclude expression="^static/*"></exclude>
  </filter>
  <inotify>
  <delete start="true"/>
  <createFolder start="true"/>
  <createFile start="true"/>
  <closeWrite start="true"/>
  <moveFrom start="true"/>
  <moveTo start="true"/>
  <attrib start="true"/>
  <modify start="true"/>
  </inotify>
  <sersync>
  <localpath watch="/opt/rsync_data/send"> #监控目录,一旦本地目录有文件变化,将同步到服务端
    <remote ip="172.16.57.26" name="recv"/>#服务端ip和同步模块
  </localpath>
  <rsync>
    <commonParams params="-artuz"/> #rsync同步参数
    <auth start="true" users="rsync" passwordfile="/etc/rsync.pas"/> #服务端认证密码
    <userDefinedPort start="false" port="873"/>
    <timeout start="false" time="100"/><!-- timeout=100 -->
    <ssh start="false"/>
  </rsync>
  <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
  <crontab start="false" schedule="600"><!--600mins-->
    <crontabfilter start="false">
    <exclude expression="*.php"></exclude>
    <exclude expression="info/*"></exclude>
    </crontabfilter>
  </crontab>
  <plugin start="false" name="command"/>
  </sersync>
</head>

4、服务端密码认证

# vim /etc/rsync.pas #在相应的目录下配置身份验证文件,里面输入服务端的密码,并chmod 600
# chmod 600 /etc/rsync.pas

5、启动sersync

# ./sersync2 -d -o confxml.xml

四、测试认证

在客户端下监控目录/opt/rsync_data/send下添加文件或者删除,服务端的接受目录都会实时地进行更新。

在此例中,服务器iptables和selinux均处于关闭状态。

note: 这种方法同步文件的时候,同步文件的数量如果很多,可能会有部分文件在同步过程中缺失。查阅相关资料后,找到了如下的解决方案。由于本例中,使用的是xinetd方式启动的rsync服务,在xinetd的配置文件中,修改几个参数如下:

# vim /etc/xinetd.conf

修改几个参数:

 cps       = 500 30
 instances    = UNLIMITED
 per_source   = UNLIMITED

总结

以上所述是小编给大家介绍的Sersync+Rsync实现触发式文件同步,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • sersync2 完全安装配置说明(三) 插件基本配置和使用

    插件相关xml 复制代码 代码如下: <sersync> ...... <plugin start="false" name="command"/> </sersync> <plugin name="command"> <param prefix="/bin/sh" suffix="" ignoreError="true"/>

  • sersync2 完全安装配置说明(二) 可选功能与xml高级配置

    XML文件说明 sersync可选功能是通过xml配置文件来实现的,基本配置文件如下: 复制代码 代码如下: <?xml version="1.0" encoding="ISO-8859-1"?> <head version="2.5"> <host hostip="localhost" port="8008"></host> <filter start

  • sersync2完全安装配置说明(一) 基本功能使用

    对于rsync配置,在google上可以找到很多资料,以下只是一些必要的配置和使用说明,仅供参考,请根据您的实际情况修改. 如图所示,需要在同步主服务器上配置sersync,在同步目标服务器配置rsync,并在目标服务器开启rsync守候进程,这样在主服务器产生的文 件,就会被sersync实时同步到多个目标服务器.在centos系统下默认已经安装了rsync,只需进行配置,并开启rsync守候进程即可. 配置同步目标服务器rsync 在多台目标服务器上配置如下: 复制代码 代码如下: vi /

  • Sersync+Rsync实现触发式文件同步实战过程

    背景 通常我们在服务器上使用rsync加上crontab来定时地完成一些同步.备份文件的任务.随着业务和应用需求的不断扩大.实时性要求越来越高.一般rsync是通过校验所有文件后,进行差量同步,如果文件量十分庞大,那么rsync进行校验的过程也是十分耗时的.而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式.其次,rsync不能实时的去监测.同步数据,虽然它可以通过crontab方式进行触 发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用

  • MySQL数据库主从同步实战过程详解

    本文实例讲述了MySQL数据库主从同步实战过程.分享给大家供大家参考,具体如下: 接上一篇:MySQL数据库入门之备份数据库 安装环境说明 系统环境: [root@~]# cat /etc/redhat-release CentOS release 6.5 (Final) [root@~]# uname -r 2.6.32-431.el6.x86_64 数据库: 由于是模拟环境,主从库在同一台服务器上,服务器IP地址192.168.1.7 主库使用3306端口 从库使用3307端口 数据库数据目

  • window系统的Rsync同步实战分析第1/2页

    其于window系统的同步实战 1. 远程数据同步工具Rsync介绍 1.1 软件简介 Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync本来是用以取代rcp的一个工具,它当前由 rsync.samba.org维护.Rsync使用所谓的"Rsync演算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快.运行Rsync server的机器也叫backup server,一个Rsync

  • Centos rsync文件同步配置步骤分享

    rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了--remote sync 它的特性如下: 可以镜像保存整个目录树和文件系统. 可以很容易做到保持原来文件的权限.时间.软硬链接等等. 无须特殊权限即可安装. 快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件.rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽. 安全:可以使用scp.ssh等方式来传输文件,当然也可以通过直接的socket连接. 支持匿名传输,以方

  • RSync实现文件同步备份配置详解

    一.什么是rsync rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等附加信息. rsync是用 "rsync 算法"提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件. rsync 包括如下的一些特性: 能更新整个目录和树和文件系统: 有选择性的保持符号链链.硬链接.文件属于.权限.设备以及时间等:

  • Rsync 服务器文件同步的搭建以及使用

    rsync 是类unix系统下的数据镜像备份工具, 它可以镜像保存整个目录树和文件系统.并且很容易做到保持原文件的权限,时间,软硬链接等等. 无须特殊权限即可安装. 特点: 快速.  第一次同步时会复制全部内容,但在下一次他只传修改过的文件,并且在传输过程中可以实行压缩及解压缩操作,因此可以使用更少带宽.安全. 可以使用scp.ssh等方式来传输文件,当然也可以通过直接的socket链接支持匿名传输,以方便进行网站镜像. 首先 下载安装包 复制代码 代码如下: wget http://rsync

  • 使用rsync来实现文件同步

    rsync ->>> remote synchronize 呵呵,不用解释了吧,还是解释一下吧,文件同步的意思的说... 第一步,先来下载这个免费的软件. rsync.samba.org/ 或者 samba.anu.edu.au/rsync 本站最新版本下载地址http://www.jb51.net/softs/2149.htmlPS:一定要去官方网站下载最新的版本, 因为2.6.1之前的版本有配置模块路径穿越漏洞... 解压缩后,编译很简单 ./configure –prefix=/u

  • Linux利用inotify和rsync服务实现数据实时同步的原理解析

    目录 文件定时同步的实现: 文件实时同步的实现: inotify inotify-tools包主要工具: inotifywait 命令: rsync工具 rsync有三种工作方式: 两种方式实现rsync服务器 方式一:通过rsync守护进程的方式实现rsync服务 以独立服务方式运行rsync并实现验证功能 工作原理: inotify+rsync+shell 脚本实现实时数据同步 文件定时同步的实现: 利用rsync结合cron计划任务实现: rsync -av --delete /data/

  • shell脚本实现本地文件与服务器文件同步

    为何创建此脚本是因为方便项目的布署,不需要手动地去同步不同的项目,而只需要简单的执行shell脚本,输入项目名就能发布到服器上. 1.shell文件代码 #!/bin/sh read -t 30 -p "请输入项目名:" name echo -e "\n" echo "项目名为:$name" case $name in cn) rsync -r ~/project1 root@192.168.18.2:/project1 --exclude=&q

  • Windows远程数据、文件同步工具cwRsync配置方法

    1. cwRsync简介 cwRsync是Rsync在Windows上的实现版本,Rsync通过使用特定算法的文件传输技术,可以在网络上传输只修改了的文件. cwRsync主要用于Windows上的远程文件同步备份和同步,它包含Cygwin DLL和适用Cygwin版本的Rsync两部分. cwRsync分为Server和Client,本文使用的版本为4.1.0,下载地址如下: cwRsyncServer v4.1.0:http://pan.baidu.com/s/1eQpaIVw cwRsyn

随机推荐