Rsync+sersync 实时同步

#

#sersync 下载地址

#rsync CentOS系统包里面有

#rsync 详解

#sersync 详解

#逻辑图

主机名 IP地址
Storage_1             目标服务器 192.168.174.137
Storage_2               源服务器 192.168.174.138

#均关闭防火墙和selinux

#目标服务器rsync 作为守护进程  , 源服务器rsync 作为客户端

#rsync支持推送和拉取

#sersync 实时监控目录

#目标服务器,源服务器 安装rsync

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

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

#目标服务器上操作

#修改目标服务器rsync的配置文件

[[email protected]_1 ~]# vim /etc/rsyncd.conf

[[email protected]_1 ~]# cat /etc/rsyncd.conf | grep -v "#" | grep -v "^$"

uid = root

gid = root

use chroot = yes

max connections = 200

pid file = /var/run/rsyncd.pid

log file = /var/log/rsyncd.log

secrets file = /etc/rsyncd.passwd

timeout = 900

dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[ftp]

path = /opt

comment = ftp export area

auth users = rsync

ignore errors

list no

hosts allow = 192.168.174.0/24

read only = no

#rsync 也支持匿名用户   只需注释 secrets file = /etc/rsyncd.passwd   auth users = rsync

#创建认证文件  rsync为配置文件中的 auth users的值

[[email protected]_1 ~]# echo "rsync:123456" /etc/rsyncd.passwd

#修改配置文件的权限

[[email protected]_1 ~]# chmod 600 /etc/rsyncd.passwd

#开启服务

[[email protected]_1 ~]# rsync --daemon --config=/etc/rsyncd.conf

#源服务器上操作


#创建认证文件

[[email protected]_2 ~]# echo "123465" > /etc/rsyncd.passwd

#修改权限

[[email protected]_2 ~]# chmod 600 /etc/rsyncd.passwd

#同步测试

[[email protected]_2 ~]# echo "hello" >> /opt/test.txt

[[email protected]_2 ~]# cd /opt/

[[email protected]_2 ~]# rsync -artuz -R --delete ./ [email protected]::ftp --password-file=/etc/rsyncd.passwd

#查看结果

[[email protected]_1 ~]# cd /opt/

[[email protected]_1 opt]# ls

test.txt

[[email protected]_1 opt]# cat test.txt

hello

#同步成功!

#安装sersync

[[email protected]_2 ~]# wget https://raw.githubusercontent.com/orangle/sersync/master/release/sersync2.5.4_64bit_binary_stable_final.tar.gz

[[email protected]_2 ~]# tar -xf sersync2.5.4_64bit_binary_stable_final.tar.gz

[[email protected]_2 ~]# mkdir -p  /usr/local/sersync/{bin,conf}

[[email protected]_2 ~]# cd GNU-Linux-x86/

[[email protected]_2 GNU-Linux-x86]# ls

confxml.xml  sersync2

[[email protected]_2 GNU-Linux-x86]# cp confxml.xml   /usr/local/sersync/conf/

[[email protected]_2 GNU-Linux-x86]# cp sersync2   /usr/local/sersync/conf/

[[email protected]_2 GNU-Linux-x86]# cd /usr/local/sersync/

#修改sersync配置文件

[[email protected]_2 sersync]# vim conf/confxml.xml

[[email protected]_2 sersync]# cat conf/confxml.xml

<?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="false"/>

<closeWrite start="true"/>

<moveFrom start="true"/>

<moveTo start="true"/>

<attrib start="false"/>

<modify start="false"/>

</inotify>

<sersync>

<localpath watch="/opt/">

<remote ip="192.168.174.137" name="ftp"/>

<!--<remote ip="192.168.8.39" name="tongbu"/>-->

<!--<remote ip="192.168.8.40" name="tongbu"/>-->

</localpath>

<rsync>

<commonParams params="-artuz"/>

<auth start="true" users="rsync" passwordfile="/etc/rsyncd.passwd"/>

<userDefinedPort start="false" port="874"/><!-- port=874 -->

<timeout start="false" time="100"/><!-- timeout=100 -->

<ssh start="false"/>

</rsync>

<failLog path="/var/run/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>

<plugin name="command">

<param prefix="/bin/sh" suffix="" ignoreError="true"/><!--prefix /opt/tongbu/mmm.sh suffix-->

<filter start="false">

<include expression="(.*)\.php"/>

<include expression="(.*)\.sh"/>

</filter>

</plugin>

<plugin name="socket">

<localpath watch="/opt/tongbu">

<deshost ip="192.168.138.20" port="8009"/>

</localpath>

</plugin>

<plugin name="refreshCDN">

<localpath watch="/data0/htdocs/cms.xoyo.com/site/">

<cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>

<sendurl base="http://pic.xoyo.com/cms"/>

<regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>

</localpath>

</plugin>

</head>

#具体含义请参考 http://www.linuxidc.com/Linux/2012-02/53572.htm

#设置环境变量

[[email protected]_2 sersync]# echo "export PATH=$PATH:/usr/local/sersync/bin/" >> /etc/profile

[[email protected]_2 sersync]# source /etc/profile

#开启服务

[[email protected]_2 sersync]# sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml

set the system param

execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches

execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events

parse the command param

option: -r rsync all the local files to the remote servers before the sersync work

option: -d run as a daemon

option: -o config xml name:  /usr/local/sersync/conf/confxml.xml

daemon thread num: 10

parse xml config file

host ip : localhosthost port: 8008

daemon start,sersync run behind the console

use rsync password-file :

user isrsync

passwordfile is /etc/rsyncd.passwd

config xml parse success

please set /etc/rsyncd.conf max connections=0 Manually

sersync working thread 12  = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)

Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)

please according your cpu ,use -n param to adjust the cpu rate

------------------------------------------

rsync the directory recursivly to the remote servers once

working please wait...

execute command: cd /opt && rsync -artuz -R --delete ./ [email protected]::ftp --password-file=/etc/rsyncd.passwd >/dev/null 2>&1

run the sersync:

watch path is: /opt

#从上面的信息可以看出 sersync 是要调用rsync 的

#测试

[[email protected]_2 ~]# echo "123456" > /opt/test2.txt

#观察

[[email protected]_1 opt]# ls

test2.txt  test.txt

[[email protected]_1 opt]# cat test2.txt

123456

#排错

错误一:

@ERROR: auth failed on module xxxxx

rsync: connection unexpectedly closed(90 bytes read so far)

rsync error: error in rsync protocoldata stream (code 12) at io.c(150)

说明:这是因为密码设置错了,无法登入成功,检查一下rsyncd.passwd,看客服是否匹配。还有服务器端没启动rsync 服务也会出现这种情况。

错误二:

password file must not beother-accessible

continuing without password file

Password:

说明:这是因为rsyncd.passwd的权限不对,应该设置为600。如:chmod600 rsyncd.passwd

错误三:

@ERROR: chroot failed

rsync: connection unexpectedly closed(75 bytes read so far)

rsync error: error in rsync protocoldata stream (code 12) at io.c(150)

说明:这是因为你在 rsyncd.conf中设置的 path 路径不存在,要新建目录才能开启同步

错误四:

rsync: failed to connect to218.107.243.2: No route to host (113)

rsync error: error in socket IO (code10) at clientserver.c(104) [receiver=2.6.9]

说明:防火墙问题导致,这个最好先彻底关闭防火墙,排错的基本法就是这样,无论是S还是C,还有ignore errors选项问题也会导致

错误五:

@ERROR: access denied to www fromunknown (192.168.1.123)

rsync: connection unexpectedly closed(0 bytes received so far) [receiver]

rsync error: error in rsync protocoldata stream (code 12) at io.c(359)

说明:此问题很明显,是配置选项host allow的问题,初学者喜欢一个允许段做成一个配置,然后模块又是同一个,致使导致

错误六:

rsync error: received SIGINT,SIGTERM, or SIGHUP (code 20) at rsync.c(244) [generator=2.6.9]

rsync error: received SIGUSR1 (code19) at main.c(1182) [receiver=2.6.9]

说明:导致此问题多半是服务端服务没有被正常启动,到服务器上去查查服务是否有启动,然后查看下 /var/run/rsyncd.pid 文件是否存在,最干脆的方法是杀死已经启动了服务,然后再次启动服务或者让脚本加入系统启动服务级别然后shutdown -r now服务器

错误七:

rsync: read error: Connection resetby peer (104)

rsync error: error in rsync protocoldata stream (code 12) at io.c(604) [sender=2.6.9]

说明:原数据目录里没有数据存在

#rsync 命令参数

rsync的命令格式:

rsync [OPTION]... SRC [SRC]... [[email protected]]HOST:DEST

rsync [OPTION]... [[email protected]]HOST:SRC DEST

rsync [OPTION]... SRC [SRC]... DEST

rsync [OPTION]... [[email protected]]HOST::SRC [DEST]

rsync [OPTION]... SRC [SRC]... [[email protected]]HOST::DEST

rsync [OPTION]... rsync://[[email protected]]HOST[:PORT]/SRC [DES

常用选项:

-v, --verbose 详细模式输出

-q, --quiet 精简输出模式

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

-c, --checksum 打开校验开关,强制对文件传输进行校验

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

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

-R, --relative 使用相对路径信息

-l, --links 保留软链结

-H, --hard-links 保留硬链结

-p, --perms 保持文件权限

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

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

-D, --devices 保持设备文件信息

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

#参考:http://www.linuxidc.com/Linux/2012-07/64738.htm

#参考:http://daguanren.blog.51cto.com/9097475/1856461

时间: 2024-10-22 14:59:22

Rsync+sersync 实时同步的相关文章

Rsync + sersync 实时同步备份

Rsync + sersync 实时同步备份 一      Rsync + Sersync  实时同步介绍 1.Rsync 服务搭建介绍 云机上搭建Rsync server,在本地搭建Rsync Clinet. 2. Sersync 服务搭建介绍 在本地服务器上搭建 Sersync  Server  检测本地的ftp目录变化,实时同步到云机上 二.Rsync编译安装 1.检查本机是否存在 [[email protected]云机 ~]# rpm -qa  rsync rsync-3.0.6-12

Rsync+Sersync实时同步

一.基本介绍 1.什么是Rsync? Rsync(Remote Synchronize)是一款开源的.快速的.多功能的.可以实现全量及增量的本地或远程数据同步备份的优秀工具,并且支持多种操作系统平台运行. 官网文档:https://rsync.samba.org/ftp/rsync/rsync.html 2.Rsync简介 Rsync具有本地与远程两台主机之间的数据快速复制同步镜像.远程备份等功能,该功能类似scp,但是优于scp功能,还具有本地不同分区目录之间全量及增量复制数据. Rsync同

Rsync+Sersync实时同步数据目录

第1章 Rsync简介 1.1 Rsync基本概述 rsync是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备份 全量:将全部数据,进行传输覆盖 增量:只传输差异部分的数据 1.2 实现增量复制的原理 Rsync通过其独特的“quick check”算法,实现增量传输数据 在同步备份数据时,默认情况下,Rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可

rsync+sersync 实时同步安装配置

环境搭建:(服务器,客户端) 首先关闭selinux与iptables # vi /etc/sysconfig/selinux SELINUX=disabled # setenforce 0 # service iptables stop 在使用sersync之前,我们必须安装配置好rsync服务器 rsync (客户端) 一.安装rsync # yum install rsync -y # yum install xinetd -y 二.启动rsync依赖服务 # service xinetd

linux rsync远程同步+sersync+rsync实现实时同步

rsync是什么 rsync全称Remote Sync ,远程同步,是Linux/UNIX系统下的文件同步和数据传输工具,数据备份,它采用了"rsync算法"使一个客户机和远程文件服务器之间的文件同步. 作用 可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将本地系统的数据通过网络传输方式备份到任何一个远程主机上: 优点 rsync可以在中断后恢复传输 rsync的功能特性 可以镜像保存整个目录树和文件系统:可以增量同步数据,文件传输效率高,因而同步时间很短:可以保持原文件的

rhel下文件的同步:sersync实时同步和drbd双向同步

sersync(873端口)实时同步(单向同步) 需要注意:纯粹的使用rsync做单向同步时,rsynx的守护进程是运行在文件推送服务器上,而接收的服务器是运行rsync客户端.使用sersync做文件实时同步刚好相反,用于接收文件的服务器运行rsync守护进程. sersync主要用于服务器同步,web镜像等功能.基于boost1.43.0,inotify api,rsync command.开发.目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google

Sersync实时同步企业应用配置实战

一.实验环境 CentOS版本: 6.6(2.6.32.-504.el6.x86_64) Rsync版本:  Rsync-3.0.6(系统自带) Sersync版本:sersync2.5.4_64bit_binary_stable_final.tar.gz(下载上传) 二.准备工作 查看系统是否支持inotify及参数优化: [[email protected] ~]# ls -l  /proc/sys/fs/inotify/ ------------------ 总用量 0 0 dr-xr-x

rsync nfs 实时同步,结合实战

目录 rsync nfs 实时同步,实战 一.部署rsync服务端(backup) 二.部署rsync客户端(nfs,web01) 三.部署web代码(web01) 四.NFS服务端部署(nfs) 五.部署nfs备胎服务端(nfs) 六.部署nfs的客户端web01(web01) 七.backup实时同步nfs的data目录 八.定时任务并发邮件 九.NFS服务端部署sersync实时同步(nfs) 十.切换备胎backup(web01) rsync nfs 实时同步,实战 一.部署rsync服

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

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