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

rsync是什么

rsync全称Remote Sync ,远程同步,是Linux/UNIX系统下的文件同步和数据传输工具,数据备份,它采用了“rsync算法”使一个客户机和远程文件服务器之间的文件同步。

作用

可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将本地系统的数据通过网络传输方式备份到任何一个远程主机上;

优点

rsync可以在中断后恢复传输

rsync的功能特性

可以镜像保存整个目录树和文件系统;
可以增量同步数据,文件传输效率高,因而同步时间很短;
可以保持原文件的权限、时间、软硬链接等属性;
无需特殊权限即可安装;
快速:第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文件;
压缩传输:rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽;
加密传输数据,保证了数据的安全性;
可以使用scp、ssh等方式来传输文件,也可以通过直接的socket链接;
支持匿名传输,以方便进行网站镜像;

xinetd管理rsync工作原理

xinetd,超级互联网守护进程服务,管理服务
使用rsync来同步是先通过xinetd监听873号端口,如果rsync进来的是873号端口,那么xinetd就会通知它所管辖的rsync服务来做回应,接下来就是rsync两服务之间的通讯。
rsync服务依赖xinetd,是使用超级服务来管理的。

环境

两台服务器
分别安装rsync服务和xinetd
原服务器:192.168.80.100
目的服务器:192.168.80.101

安装rsync

yum install -y xinetd rsync
开启服务
rsync --daemon
检查是否开启服务
netstat -anpt | grep 873

rsync主要命令选项

-r:递归模式,对子目录以递归模式处理
-l:--links 保留软链结
-v:--verbose 详细模式输出
-a:--archive 权限保存模式,表示以递归方式传输文件,并保持所有文件属性,相当于-rlptgoD
-z:--compress 压缩模式,对备份的文件在传输时进行压缩处理
-p:--perms 保持文件权限,文件原有属性。
-o:--owner 保持文件原有属主信息。
-g:--group 保持文件原有属组信息。
-D:--devices 保持设备文件信息。
-t:--times 保持文件时间信息。
-A:保持ACL属性信息
-D:保留设备文件及其其他特殊文件
--delete:删除目标位置有而原始位置没有的文件
--password-file=FILE,从FILE中得到密码
例如:rsync -avz --delete /var/www/html/ rget1@192.168.80.101:/web-back
注:通常avz一起使用

开始同步

对192.168.80.100 网站根目录的/var/www/html目录备份到192.168.80.101的/web-back
在源服务器和目标服务器上:
useradd rget1;echo rget1:123456|chpasswd //创建用户并设置密码

创建同步文件目录

mkdir -p /var/www/html/

给文件目录单用户授权

setfacl -R -m u:rget1:rwx/var/www/html/

设置默认权限

setfacl -R -m default:rget1:rwx /var/www/html

查看权限

getfacl /var/www/html

给同步目录添加文件

cp -rf /etc/b* /var/www/html

在目标服务器
创建一个同步目录

mkdir /web-back

修改归属

chown rget1:rget -R /web-back/

在源服务器推送数据

rsync -avz --delete /var/www/html/ rget1@192.168.80.101:/web-back

目的服务器同步目录:

注:如果只想传输目录下的内容,在该目录后面加“/”,如果想连该目录一起传输,就不加“/”.
以上是使用系统用户备份数据

非系统用户备份数据

使用系统配置文件/etc/rsyncd.conf来备份数据,创建备份账户,最后把rsync以deamon方式运行。
rsync.conf配置文件分为两部分:全局参数,模块参数
全局参数:对rsync服务器生效,如果模块参数和全局参数冲突,冲突的地方模块参数优先。
模块参数:定义需要通过rsync输出的目录定义的参数。

在目的服务器上配置rsyncd.conf
配置文件详解

该配置文件在centos 6.x版本中没有,在centos 7.x才有
vi /etc/rsyncd.conf
?uid = root #用户ID
gid = root #用户组ID
address = 192.168.80.100 #监听地址
port = 873 #监听端口
hosts allow = 192.168.80.0/24 #黑名单
use chroot = yes #禁锢家目录
max connections = 10 #最大并发连接数,默认0(无限制)
strict modes = yes #是否检查口令文件的权限,yes时必须为root用户权限
pid file = /var/run/rsyncd.pid #守护进程PID路径
lock file = /var/run/rsync.lock #指定支持max connections的锁文件
log file = /var/run/rsyncd.log #日志输出文件路径
motd file = /etc/rsyncd.motd #指定消息文件,当客户连接服务器时给文件的内容显示给客户,默认没有该文件
?
[www] #自定义模块名称
path = /web-back/ #需备份的文件或目录,真实系统路径
comment = ftp area #描述文字
ignore errors #可以忽略一些无关的I/O错误
read only = false #false:客户端可以上传文件 yes:只读
write only = false #false:客户端可以下载文件 yes:不能下载
hosts allow = #:允许连接任何主机
hosts deny = 192.168.100.10 #禁止连接rsync服务器的IP
list = yes #客户端请求可以使用的模块列表时,该模块是否被列出
uid = root
gid = root
auth users = backup #用户名backup,与系统用户没有任何关系
secrets file = /etc/server.pass #只有定义了auth users项,该文件才起作用,默认没有此文件,须手动创建(文件格式为:"用户名:密码")

创建motd文件

echo "welcome to backup server" > /etc/rsyncd.motd

创建密码文件(文件格式:user:pass)

vi /etc/server.pass
backup:123456

修改密码文件权限

chmod 600 /etc/server.pass

重启服务

pkill -9 rsync
systemctl start xinetd
systemctl enable xinetd
rsync --daemon --config=/etc/rsyncd.conf
注:启动时有可能报pid错误 如果报pid错误就把pid文件删除
netstat -anpt | grep 873
以上在目的服务器中配置

在源服务器中:

rsync -avz --delete /var/www/html/ backup@192.168.80.101::www
192.168.80.101是目的服务器地址

无密码交互传输:

在原服务器中创建一个密码文件
vi /etc/server.pass
注:文件要和目的文件一样

实时同步

rsync -avz --delete /var/www/html/ backup@192.168.80.102::www --password-file=/etc/server.pass

脚本实现定时自动备份

vi autobackup.sh
#!/bin/bash
rsync -avz --delete /var/www/html backup@192.168.80.101::www --password-file=/opt/file

授权

chmod +x autobackup.sh

周期计划

crontab -e
1 sh /root/autobackup.sh &

配置sersync+rsync实现实时同步

环境

一台装sersync服务
一台装rsync服务
sersync服务器(数据源,源服务器):192.168.80.100
rsync服务器(备份端,目标服务器):192.168.80.101

1、为什么要用rsync——sersync架构

(1)sersync是基于inotify开发的,类似于inotify-tools的工具
(2)sersync可以记录下被监听目录中发生变化的(包括增加,删除,修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录

2、rsync+inotify-tools与rsync+sersync架构的区别

(1)rsync+inotify-tools
a、inotify只能记录下被监听的目录发生了变化(增、删、改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来
b、rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低

(2)rsync+sersync
a、sersync可以记录被监听目录中发生变化的(增、删、改)具体某个文件或者目录的名字;
b、rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高。

3、同步过程

(1)在同步服务器上开启sersync服务,sersync负责监控配置路径中的文件系统时间变化;
(2)调用rsync命令把更新的文件同步到目标服务器;
(3)需要在主服务器配置sersync,在同步目标服务器配置rsync server(注:是rsync服务)

4、同步过程和原理

1)用户实时的往sersync服务器上写入更新文件数据;
(2)此时需要在同步主服务器上配置sersync服务;
(3)在另一台服务器开启rsync守护进程服务,以同步拉取来自sersync服务器上的数据;

通过rsync的守护进程服务后可以发现,实际上sersync就是监控本地的数据写入或更新时间;然后,在调用rsync客户端的命令,将写入或更新时间对应的文件通过rsync推送到目标服务器上。

部署:

1,下载sersync

wget https://github.com/wsgzao/sersync/raw/master/sersync2.5.4_64bit_binary_stable_final.tar.gz

2、解压

tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /opt
mv /opt/GNU-Linux-x86 /opt/sersync
cd sersync
confxml.xml #配置文件
sersync2 #启动文件
cp confxml.xml confxml.xml.bak //做一个备份

配置:

vi confxml.xml
24行 <localpath watch="/var/www/html"> #监听目录
25行 <remote ip="192.168.80.101" name="www" /> #远程地址,远程目录
31行 <auth start="true" users="backup" passwordfile="/etc/rsync.passwd" />

启动

cd /opt/sersync/
./sersync2 -d -r -o ./confxml.xml

目的服务器

watch ls -lh //以全屏方式显示ls -lh文件

原文地址:https://blog.51cto.com/14150862/2354713

时间: 2024-10-19 05:37:07

linux rsync远程同步+sersync+rsync实现实时同步的相关文章

Linux下Rsync+sersync实现数据实时同步

inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个

Linux Debian8 Rsync+Sersync实现数据实时同步

Rsync+sersync实现数据实时同步Rsync??Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的"Rsync算法"来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快.Rsync的基本特点如下:?1.可以镜像保存整个目录树和文件系统:?2.可以很容易做到保持原来文件的权限.时间.软硬链接等:?3.无须特殊权限即可安装:?4.优

Rsync+sersync实现数据实时同步

前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录. 二.Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别? 1.Rsync+Inotify-tools (1):Inotify-tools只能记录

centos7服务搭建常用服务配置之二:Rsync+sersync实现数据实时同步

目录 1.RSYNC数据备份 1.1 rsync服务简介 1.2 rsync特点和优势 1.3 rysnc运行模式简介 1.4 数据同步方式 2 Rsync实验测试 2.1 实验环境说明 2.2 服务安装 2.3 Rsync命令详解 2.3 实验一使用rsync命令备份数据 2.4 实验二使用rsyncd服务进行数据备份 3.Rsync+sersync实现数据实时同步 3.1 rsync+sersync架构作用 3.2 rsync+inotify-tools与rsync+sersync架构的区别

linux下rsync+inotify实现服务器之间文件实时同步

先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等.随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所

rsync + inotify 用来实现数据实时同步

一.简介 1.rsync 比其cp.tar备份的方法,rsync的优点是,安全性高.备份迅速.支持增量备份.只能做对实时性要求不高的数据备份,例如:备份文件服务到远端从服务器.在本地磁盘上做数据镜像等 增量备份:就是rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.但是对于大量文件达到千万量级别时,扫描所有文件是非常耗时的. 如果发生改变的只是其中的一小部分的话,这是非常低效的方式. rsync 不能实时的去监测,同步数据,虽然它可以通过 linux 守护进程的方式进行触发同步,两

rsync+ssh+inotify实现服务器文件实时同步

如何实现两台web服务器的文件同步的,答案是rsync,但是,如何做到实时同步呢,cron已经达不到这样的要求了,同步的再快,也会有时间间隔,cron时刻执行,也会浪费系统的资源,下面,我将介绍ssh+rsync+inotify来实现两台web间的文件实时同步. 拓扑如下:  实验的linux系统为CentOS 6.5,实验之前确保开发环境已安装完毕 首先,我们介绍一下inotify,这是linux的一个新特性,在2.6的内核开始加入,它是监控文件系统,并且及时的向我们的rsync发出相关信息,

linux运维、架构之路-实时同步方案

1.inotify+rsync实时同步 1.介绍         inotify-tools是一种强大的.细粒度的.异步的文件系统事件监控机制,可以用来监控文件系统的事件.inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖于其他.inotify-tools提供两种工具,一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数. 2.实现原理 3.根据原理进行部署 ①查看系统是否支持inotify [[em

基于sersync海量文件实时同步

今天我们主要讲解海量文件实时同步,最近涉及到数百万图片数据迁移,为了使图片数据快速迁移,并保证数据数据的一致性,无缝切换.尝试了多种方案. 方案1:rsync+inotify同步,最先想到的是此方案,以前在多台服务器间的做代码同步就常用此方法,因为代码文件数并不多.现在用在海量文件同步时,其缺陷也暴露出来,分析原理后,我们知道,每次新增数据都会做一次全量同步,在数据量不大的情况下同步挺快,但当文件数达到数百万就相当慢,每次对比整个目录的数量庞大的文件:第二,inotify监听的事件也非常多,创建