博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sersync+rsync数据同步
阅读量:2338 次
发布时间:2019-05-10

本文共 5109 字,大约阅读时间需要 17 分钟。

什么是Rsync?

Rsync(Remote Synchronize)是一款开源的、快速的、多功能的、可以实现全量及增量的本地或远程数据同步备份的优秀工具,并且支持多种操作系统平台运行。
官网文档:

Rsync简介

Rsync具有本地与远程两台主机之间的数据快速复制同步镜像、远程备份等功能,该功能类似scp,但是优于scp功能,还具有本地不同分区目录之间全量及增量复制数据。

Rsync同步数据镜像时,通过“quick check”算法,仅同步大小或最后修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性变化的同步,所以可以实现快速同步。

rsync 具有如下的基本特性:

1 可以镜像保存整个目录树和文件系统
2 可以很容易做到保持原来文件的权限、时间、软硬链接等
3 无须特殊权限即可安装
4 优化的流程,文件传输效率高
5 可以使用 rsh、ssh 方式来传输文件,当然也可以通过直接的 socket 连接
6 支持匿名传输,以方便进行网站镜象

Sersync 项目简介:

本项目利用inotify与rsync对服务器进行实时同步,其中inotify用于监控文件系统事件,rsync是目前广泛使用的同步算法,其优点是只对文件不同的部分进行操作,所以其优势大大超过使用挂接文件系统的方式进行镜像同步。目前使用的比较多的同步程序版本是inotify-tools,另外一个是google开源项目Openduckbill(依赖于inotify-tools),这两个都是基于脚本语言编写的,其设计思路同样是采用inotify与rsync命令。 相比较上面两个项目,本项目优点是:
1.sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤,所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
2.相比较上面两个项目,sersync配置起来很简单,二进制文件+XML配置文件。
3.使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
4.自带出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则每N个小时对同步失败的文件重新同步。
5.自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。
6.自带socket与http协议扩展,满足您二次开发的需要。

系统资源:

[root@test ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)

10.125.192.10 sersync 分发服务

10.125.192.12 rsync 同步服务

检查是否安装rsync

[root@test ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64

如未安装使用yum安装

yum -y install rsync

rsync 同步服务器操作

vim /etc/rsyncd.conf (默认没有该文件,手工创建)
uid = root //运行RSYNC守护进程的用户
gid = root //运行RSYNC守护进程的组
use chroot = no //不使用chroot
max connections = 2000 //最大连接数
strict modes = yes //是否检查口令文件的权限
timeout = 600 //超时时间
port = 873 //默认端口873
pid file = /var/run/rsyncd.pid //pid文件的存放位置
lock file = /var/run/rsync.lock //锁文件的存放位置
log file = /var/run/rsyncd.log //日志记录文件的存放位置
ignore errors //可以忽略一些无关的IO错误
hosts allow = 10.125.192.10 //允许主机
hosts deny = 0.0.0.0/32 //禁止主机
read only = no //是否只读
dont compress = *.gz *.bz2 *.zip *.tgz //不压缩哪些格式
auth users = test //认证用户
secrets file = /etc/rsyncd.pass //账户文件位置

[www] //定义一个项目

path = /data //要同步备份的路径

创建备份目录

mkdir /data

创建认证用户文件

vim /etc/rsyncd.pass
更改文件权限 必须为600
chmod 600 /etc/rsyncd.pass

启动rsync

rsync --daemon
如果手动创建的配置文件的名字不是rsyncd.conf启动的时候需要加参数
rsync --daemon --config=/配置文件的绝对路径

配置开机启动

vim /etc/rc.d/rc.local
/usr/bin/rsync --daemon

启动后验证

[root@test ~]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 19887 root 3u IPv4 135575 0t0 TCP *:rsync (LISTEN)
rsync 19887 root 5u IPv6 135576 0t0 TCP *:rsync (LISTEN)

关闭rsync服务

pkill rsync

kill -9 `cat /var/run/rsyncd.pid`

sersync分发服务器配置

分发服务器上rsync配置
vim /etc/rsyncd.pass
新建一个密码文件,里面只写跟用户名对应的密码即可

配置文件权限

chmod 600 /etc/rsyncd.pass

手工测试rsync同步

[root@test data]# rsync -avz /data ::www --password-file=/etc/rsyncd.pass
sending incremental file list
data/
data/1.txt
data/10.txt
data/2.txt
data/3.txt
data/4.txt
data/5.txt
data/6.txt
data/7.txt
data/8.txt
data/9.txt

sent 512 bytes received 202 bytes 1428.00 bytes/sec

total size is 0 speedup is 0.00

注:通过rsync 把当前主机root目录推送到10.125.192.12上

test用户是rsync(同步端)定义的认证用户
www是rsync(同步端)定义的项目 向项目定义的路径中同步数据
–password-file=/etc/rsyncd.pass sersync分发服务器上定义的用户认证文件路径

部署sersync服务

tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
cd /usr/local/
mv GNU-Linux-x86 sersync
cd sersync/
mkdir conf bin logs
mv confxml.xml conf/
mv sersync2 bin/sersync
cp conf/confxml.xml conf/confxml.xml.bak

编辑配置文件

vim /usr/local/sersync/conf/confxml.xml
首先修改源文件24-28行内容
源文件内容

24         
#本地目录 25
#远程rsync路径与共享名 26
27
28

修改后内容

24         
25
26
27
28

修改源文件35-41行

35          
36
37
#账号与本地密码文件路径 38
39
40
41

修改后

35          
36
37
38
39
40
41

改源文件42行 错误日志保存位置

失败后60分钟后重试

配置sersync环境变量

echo ‘export PATH=$PATH:/usr/local/sersync/bin’>>/etc/profile
source /etc/profile

启动sersync

sersync -r -d -o /usr/local/sersync/conf/confxml.xml
注: -r 首次同步需要加的参数 同步所有内容
-d 后台运行
-o 指定配置文件
-n 指定线程数 默认为10个

检查启动结果

[root@test data]# ps aux|grep sersync
root 3906 0.0 0.0 145536 872 ? Ssl 13:14 0:00 sersync -r -d -o /usr/local/sersync/conf/confxml.xml

设置开机自启

vim /etc/rc.d/rc.local
/usr/local/sersync/bin/sersync -d -o /usr/local/sersync/conf/confxml.xml

sersync多实例

如果需要对多个目录进行同步,把多个目录配置写到一个配置文件中 只有第一个配置生效,其余配置不生效,所以采取了创建多配置文件的方法来实现 多个目录同步。

cp confxml.xml www_confxml.xml

cp confxml.xml logs_confxml.xml
cp confxml.xml tools_confxml.xml

vim /usr/local/sersync/conf/www_confxml.xml #修改一个单实例为例

启动方法

sersync -r -d -o /usr/local/sersync/conf/www_confxml.xml
sersync -r -d -o /usr/local/sersync/conf/logs_confxml.xml
sersync -r -d -o /usr/local/sersync/conf/tools_confxml.xml

加入自启动

vim /etc/rc.d/rc.local
/usr/local/sersync/bin/sersync -d -o /usr/local/sersync/conf/confxml.xml

转载地址:http://hdrpb.baihongyu.com/

你可能感兴趣的文章
Java PAT (Basic Level) Practice 写出这个数
查看>>
Python PAT (Basic Level) Practice 1016 部分A+B
查看>>
Python PAT (Basic Level) Practice 1006 换个格式输出整数
查看>>
Python PAT (Basic Level) Practice 1009 说反话
查看>>
Python PAT (Basic Level) Practice 1011 A+B 和 C
查看>>
Python PAT (Basic Level) Practice 1017 A除以B
查看>>
Python PAT (Basic Level) Practice 1042 字符统计
查看>>
spring dubbo 2.7.3 zookeeper 项目构建
查看>>
spring dubbo 报错
查看>>
如何在非 bean 对象中注入 dubbo service
查看>>
前后端分离 ajax java跨域配置 spring boot 、 spring security
查看>>
java spring boot 拦截所有请求 显示请求路径 方法 ip 等
查看>>
java spring boot jackson 配置 null字符串为"" null数组为[]
查看>>
java redistemplate 配置序列化
查看>>
ArcEngine中加载和读取Style文件或.serverstyle文件
查看>>
递归算法及经典递归例子代码实现
查看>>
Word Ladder
查看>>
Word Ladder II
查看>>
Longest Consecutive Sequence
查看>>
Surrounded Regions
查看>>