资源信息
服务器信息
系统:centos7.3
内核:3.10.0-514.el7.x86_64
selinux:关闭
iptables:开启
服务器 | IP |
---|---|
rsync-1 | 192.168.157.3 |
rsync-2 | 192.168.157.4 |
软件包信息
软件包 | 版本 |
---|---|
rsync | rsync-3.1.2-10.el7.x86_64 |
sersync | sersync2.5.4_64bit_binary_stable_final.tar.gz |
简要说明
rsync
官网地址:https://rsync.samba.org/
官网最新版本:3.1.3
rsync是一个开源软件,提供了在类unix系统上的快速增量文件传输。
在文件传输过程中,rsync得益于自己的rsync算法,该算法通过扫描并计算出本地文件与远程文件之间的差异部分,仅将差异部分进行同步,这样尽可能的减少了同步时间。
rsync的功能点:
- 可以更新整个文件目录结构和文件系统
- 可以选择性的保留文件的软链接、硬链接、文件所有权、权限、设备、时间
- 安装时不需要任何权限
- 对于传输多个文件时,内部流水线减少了传输延迟
- 可以使用rsh、ssh或sockets来进行传输
- 支持匿名传输,这是镜像的常用选择
sersync
sersync2.5.4_64bit下载地址
sersync主要用于服务器同步,web镜像等功能。基于boost1.43.0,inotify api,rsync command.开发。目前常用的同步解决方案为rsync+inotify-tools
和google的开源项目Openduckbill
(依赖于inotify-tools),这两个都是基于脚本语言编写的。
sersync优点包括以下:
- sersync使用c++语言开发,而且对linux系统 文件系统产生的临时文件和重复的文件操作进行过滤,所以在结合rsync同步的时候,节省了运行时耗和网络资源,速度更快。
- sersync配置简单,其bin目录下已经有编译好的二进制文件
sersync2
,配合bin目录下的confxml.xml
配置文件,可以直接使用。 - sersync相对于inotify使用了多线程进程同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态
- 出错处理机制,通过失败队列对出错的文件重新同步
- 自带crontab功能,在
confxml.xml
文件中配置开启即可按照时间段进行同步,而无需使用crontab - socket与http插件扩展,便于二次开发
sersync基于inotify开发,本质都是对目录,文件的监听,依赖于rsync进行文件同步。
sersync和inotify的区别与选择
sersync和inotify的区别详见该博主的博文https://www.xubaojin.com/post/35.html
,简单明了。
安装配置
rsync
rsync的安装
在此使用centos自带的yum源进行安装
[root@rsync-1 ~]# rpm -qa | grep rsync
[root@rsync-1 ~]# yum install rsync -y
[root@rsync-1 ~]# rpm -qa | grep rsync
rsync-3.1.2-10.el7.x86_64
注:rsync-2同步安装
rsync的配置
因为是需要配合sersync进行使用的,需要将rsync配置为daemon方式运行。
一、修改rsync-1的配置文件/etc/rsyncd.conf
[root@rsync-1 ~]# cat /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:
uid = root # 指定运行rsync daemon的用户
gid = root # 指定运行rsync daemon的组
use chroot = no
address = 192.168.157.3 # 指定监听地址
port = 873 # 默认监听端口
max connections = 0 #最大连接数,0为无限制
pid file = /var/run/rsyncd.pid # 指定pid文件
log file = /var/log/rsyncd.log # 指定日志文件
exclude = lost+found/ # 指定不同步的目录
ignore errors
#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
[update] # update模块
path = /root/updatedir # update模块需要同步目录
comment = test rsync + sersync # update模块的简要说明
read only = no # 是否只读
list = no