sersync2

本文详细介绍了Sersync基于rsync的实时同步功能,涉及rsync的高效同步机制、SSH方式同步、文件过滤、更新策略、软链接处理以及rsyncd.conf配置。包括如何过滤.txt文件、处理目标文件新旧、同步SSH端口调整和删除多余文件等内容。
摘要由CSDN通过智能技术生成

1.Sersync实时同步是基于rsync的,Sersync发现被监视的目录有文件发生变化,它通过rsync将该文件同步到目的主机
2.根据Rsync的算法得知,Rsync同步时,仅同步两个文件中不相同的数据块,可以通过rsync.log验证
https://github.com/wsgzao/sersync

/usr/local/sersync/sersync2 -d -r -o a.xml
/usr/local/sersync/sersync2 -d -r -o b.xml

master启动服务

/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/confxml.xml
#参数-d:启用守护进程模式
#参数-n:指定开启守护线程的数量,默认为10个或auto
#参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块,-不加-m参数,则默认执行同步程序
不加-m参数,则默认执行同步程序

rsync 同步命令中,下面两种方式有什么不同呢?

(1) rsync -av /dira/ ip:/dirb/
(2) rsync -av /dira/ ip::dirb
其中(1)是通过ssh方式同步的,(2)后者是通过rsync服务的方式同步的。

rsync 同步数据时,如何过滤出所有.txt的文件不同步?

加上–exclude选项:–exclude=*.txt”

rsync同步数据时,如果目标文件比源文件还新,则忽略该文件,如何做?

保留更新使用-u或者–update选项

rsync 同步时,如果要同步的源中有软连接,如何把软连接的目标文件或者目录同步?
同步源文件需要加-L选项
使用rsync同步数据时,假如我们采用的是ssh方式,并且目标机器的sshd端口并不是默认的22端口,那我们如何做?

方式1:
rsync "--rsh=ssh -p 10022"
1
方式2:

rsync -e "ssh -p 10022"
1
36、rsync同步时,如何删除目标数据多出来的数据,即源上不存在,但目标却存在的文件或者目录?

加上–delete选项即可。

<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
    <host hostip="localhost" port="8008"></host>
    <debug start="false"/> <!-- 将debug信息打开 -->
    <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="/data"><!-- 需要同步的本机目录路径 -->
	    <remote ip="10.211.5.7" name="backup"/><!-- salve主机地址及rsync同步模块名 -->
	    <!--<remote ip="192.168.8.39" name="tongbu"/>-->
	    <!--<remote ip="192.168.8.40" name="tongbu"/>-->
	</localpath>
	<rsync>
	    <commonParams params="-avz"/><!-- 修改同步参数信息 -->
	    <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.pas"/><!-- 修改同步用户验证信息 -->
	    <userDefinedPort start="false" port="874"/><!-- port=874 -->
	    <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>

    <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>

slave节点配置
rsync配置文件

vim /etc/rsyncd.conf

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# [ftp]
#        path = /home/ftp
#        comment = ftp export area

# 以 rsync 用户启动进程
uid = rsync
gid = rsync
# 无需让rsync以root身份运行,允许接收文件的完整属性
fake super = yes
# 禁锢推送的数据至某个目录, 不允许跳出该目录
# 默认为 yes,则 rsync 在传输文件之前首先 chroot 到 path 参数所指定的目录下
# 这样做的原因是实现额外的安全防护,但是缺点是需要 root 权限
# 并且不能备份指向 path 外部的符号连接所指向的目录文件 
use chroot = no
# 大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试
# 默认为0 (没有限制)
max connections = 36000
# 超时时间
timeout = 600
# 指定在 rsync 服务器上运行 delete 操作时是否忽略 I/O 错误。
# 一般来说 rsync 在出现 I/O 错误时将将跳过 –delete 操作
# 以防止因为暂时的资源不足或其它 I/O 错误导致的严重问题。      
ignore errors

指定 rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些不应该被备份者获得的文件时是有意义的
ignore nonreadable

# 指定是否允许客户上传文件。
# 默认为true,不允许用户上传文件,
# 若为 false 并且服务器目录也具有读写权限则允许上传。          
read only = false
# 指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。
# 默认为 true,如果设置该选项为 false,可以创建隐藏的模块        
list = false
# 在独立运行时,用于指定的服务器运行的 IP 地址
address = IP
# 监听端口
port = 873 
# rsync 的守护进程将其 PID 写入指定的文件
pid file = /var/run/rsyncd.pid
# 指定支持 max connections 参数的锁文件
lock file = /var/run/rsync.lock
# 指定 rsync 守护进程的日志文件,而不将日志发送给 syslog
log file = /var/log/rsyncd.log

# rsync 默认匿名方式传输
# 若只配置匿名访问的 rsync 服务器,则无需设置下述参数
# 指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。
# 这里的用户和系统用户没有任何关系。用户名和口令以明文方式存放在 secrets file 参数指定的文件中
# 定义虚拟用户,作为连接认证用户
auth users = myuser 

# 指定一个 rsync 认证口令文件。只有在 auth users 被定义时,该文件才起作用

secrets file = /etc/rsync.passwd

# rsync 认证口令文件的权限一定是 600,否则客户端将不能连接服务器。
# rsync 认证口令文件中每一行指定一个 用户名:口令 对,格式为:
# username:passwd
# 一般来说口令最好不要超过8个字符
# 一个rsync配置文件中可以包含多个认证模块,同时一个密码文件中也可以存放多个用户和其对应的密码
# 其中每一个认证模块可以对应不同的客户端

#### 定义模块信息
[backup]                
comment = commit        # 模块注释信息
path = /backup          # 定义接收备份数据目录

# 只允许10.10.10段ip连接
hosts allow = 10.10.10.0/24

# 指定多个由空格隔开的多个文件或目录(相对路径)
# 并将其添加到 exclude 列表中。这等同于在客户端命令中使用 –exclude 来指定模式。
exclude = exclude_file

# 指定一个包含 exclude 规则定义的文件名,服务器从该文件中读取 exclude 列表定义
exclude from = exclude-file.txt

# 指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include 列表中。
# 这等同于在客户端命令中使用 –include 来指定模式 。
include = include-file.txt

# 指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义
include from = exclude-file.txt

# 一个模块只能指定一个exclude 参数、一个include 参数
# 结合 include 和 exclude 可以定义复杂的exclude/include 规则
# 这几个参数分别与相应的rsync 客户命令选项等价,唯一不同的是它们作用在服务器端
-a:–archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等。
-r:–recursive 复制所有下面的资料,递归处理。
-p:–perms 保留档案权限,文件原有属性。
-t:–times 保留时间点,文件原有时间。
-g:–group 保留原有属组。
-o:–owner 保留档案所有者(root only)
-D:–devices 保留device资讯(root only)
-l:–links 复制所有的连接,拷贝连接文件
-z:–compress 压缩模式,当资料在传送到目的端进行档案压缩。
-H:–hard-links 保留硬链接文件
-A:–acls 保留ACL属性文件,需要配合–perms
-P:-P参数和 --partial --progress 相同,只是为了把参数简单化,表示传进度
--version:输出rsync版本
-v:–verbose 复杂的输出信息
-u:–update 仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不覆盖新的文件
--port=PORT:定义rsyncd(daemon)要运行的port(预设为tcp 873)
--delete:删除那些目标位置有的文件而备份源没有的文件
--delete-before: 接收者在传输之前进行删除操作
--password-file=FILE :从 指定密码文件中获取密码
--bwlimit=KBPS:限制 I/O 带宽
--filter “-filename”:需要过滤的文件
--exclude=filname:需要过滤的文件
--progress:显示备份过程
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值