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

1、rsync+inotify-tools

inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来;

rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低

    

2、rsync+sersync

sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字;

rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高

同步过程:

1.  在源数据服务器上开启sersync服务,sersync负责监控配置路径中的文件系统事件变化;

2.  调用rsync命令把更新的文件同步到目标服务器;

3.  需要在源数据服务器配置sersync,在同步目标服务器配置rsync server

同步原理:

1.  用户实时的往sersync服务器上写入更新文件数据;

2.  此时需要在源数据服务器上配置sersync服务;

3.  在另一台服务器开启rsync守护进程服务,以同步拉取来自sersync服务器上的数据;

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

CentOS 7 192.168.94.33(Sersync server)

CentOS 7 192.168.94.44(Rsync server)

先安装Rsync

[root@Rsync ~]# yum -y install rsync
[root@Rsync ~]# vim /etc/rsyncd.conf
#Rsync server
uid = root #运行进程的身份
gid = root #运行进程的组
use chroot = yes #是否锁定家目录
max connections = #最大连接数
timeout = #超时时间
log file = /var/log/rsyncd.log #日志文件
ignore errors #忽略错误
read only = false #设置服务端文件读写权限
list = false #不显示服务端资源列表
hosts allow = 192.168.94.0/ #*代表所有
hosts deny = 0.0.0.0/
auth users = backup
secrets file = /etc/rsync.password [www]
comment = www
path = /var/www/html

创建备份目录和密码文件

[root@Rsync ~]# mkdir -p /var/www/html
[root@Rsync ~]# ls /var/www/html/ [root@Rsync ~]# echo "backup:damowang" > /etc/rsync.password
[root@Rsync ~]# chmod /etc/rsync.password

在数据源端创建密码文件 , 然后在rsync命令中使用rsync --password-file 指定该文件

[root@Sersync ~]# echo "damowang" > /etc/rsync.password
[root@Sersync ~]# chmod /etc/rsync.password

测试

[root@Sersync ~]# cp /etc/passwd .
[root@Sersync ~]# rsync -azvp /root/passwd backup@192.168.94.44::www/ --password-file=/etc/rsync.password
sending incremental file list
passwd sent bytes received bytes ,368.00 bytes/sec
total size is , speedup is 1.95 [root@Rsync ~]# ls /var/www/html/
passwd

测试这步一定要成功,不然进行不了下一步

部署Sersync服务

下载sersync :

goodle code地址 : https://code.google.com/archive/p/sersync/downloads

Git Hub 镜像地址 : https://github.com/orangle/sersync

[root@Sersync ~]# unzip sersync-master.zip
[root@Sersync ~]# tar xf sersync-master/release/sersync2..4_64bit_binary_stable_final.tar.gz -C /usr/local/
[root@Sersync ~]# cd /usr/local/
[root@Sersync local]# mv GNU-Linux-x86/ sersync
[root@Sersync local]# cd sersync/
[root@Sersync sersync]# cp confxml.xml confxml.xml.$(date +%F)
[root@Sersync sersync]# vim confxml.xml
# 修改24、25行
<sersync>
<localpath watch="/var/www/html"> # 本地同步目录
<remote ip="192.168.94.44" name="www"/> # rsync模块名 # 修改31行
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="backup" passwordfile="/etc/rsync.password"/>

开启sersync守护进程 同步数据

[root@Sersync sersync]# sersync2 -d -r -o /usr/local/sersync/confxml.xml
set the system param
execute:echo > /proc/sys/fs/inotify/max_user_watches
execute:echo > /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -d run as a daemon
option: -r rsync all the local files to the remote servers before the sersync work
option: -o config xml name: /usr/local/sersync/confxml.xml
daemon thread num:
parse xml config file
host ip : localhost host port:
daemon start,sersync run behind the console
use rsync password-file :
user is backup
passwordfile is /etc/rsync.password
config xml parse success
please set /etc/rsyncd.conf max connections= Manually
sersync working thread = (primary thread) + (fail retry thread) + (daemon sub threads)
Max threads numbers is: = (Thread pool nums) + (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 /var/www/html && rsync -artuz -R --delete ./ backup@192.168.94.44::www --password-file=/etc/rsync.password >/dev/null >&
run the sersync:
watch path is: /var/www/html

测试

添加数据

 [root@Sersync sersync]# cd /var/www/html
 [root@Sersync html]# ls
 [root@Sersync html]# mkdir damowang.cn
 [root@Sersync html]# cd damowang.cn/
 [root@Sersync damowang.cn]# touch {1..5}.txt
 [root@Sersync damowang.cn]# ll
 总用量 0
 -rw-r--r-- 1 root root 0 8月 28 01:08 1.txt
 -rw-r--r-- 1 root root 0 8月 28 01:08 2.txt
 -rw-r--r-- 1 root root 0 8月 28 01:08 3.txt
 -rw-r--r-- 1 root root 0 8月 28 01:08 4.txt
 -rw-r--r-- 1 root root 0 8月 28 01:08 5.txt

验证

[root@Rsync ~]# ll /var/www/html/
总用量
drwxr-xr-x root root 8月 : damowang.cn
[root@Rsync ~]# ll /var/www/html/damowang.cn/
总用量
-rw-r--r-- root root 8月 : .txt
-rw-r--r-- root root 8月 : .txt
-rw-r--r-- root root 8月 : .txt
-rw-r--r-- root root 8月 : .txt
-rw-r--r-- root root 8月 : .txt

CentOS 7 Sersync+Rsync 实现数据文件实时同步的更多相关文章

  1. Sersync+Rsync实现数据文件实时同步

    rsync+inotify-tools与rsync+sersync架构的区别1,rsync+inotify-tools只能记录下被监听的目录发生的变化(增删改)并没有把具体变化的文件或目录记录下来在同 ...

  2. sersync+rsync实现服务器文件实时同步

    sersync+rsync实现服务器文件实时同步 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.sersyn ...

  3. rsync+sersync实现数据文件实时同步

    一.简介 sersync是基于Inotify开发的,类似于Inotify-tools的工具: sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字: ...

  4. Rsync+inotify实现文件实时同步#附shell脚本

    强烈推荐先仔细看此文 https://segmentfault.com/a/1190000002427568 实验环境 centos 7.3 vm2:192.168.221.128 同步服务器 vm1 ...

  5. 数据文件实时同步(rsync + sersync2)

    因近期项目需求,需要同步云端服务器的数据给**方做大数据分析. 思路: 起初只要数据同步,准备开放数据采集接口.但实时性较差,会有延迟. 故而寻觅各种解决方案,最终确定使用 rsync 进行文件同步, ...

  6. python自动化运维-编写rsync+sersync安装脚本实现文件实时同步

    rsync+sersync组合可以实时监听目录的变化,实现实时同步数据. 具体安装教程可查看:http://www.osyunwei.com/archives/7447.html. 安装着实有些复杂, ...

  7. Centos 6.5配置rsync+inotify实现文件实时同步

    1.安装rsync(两台机器执行相同的步骤)yum install gcc yum install rsyncd xinetd -y因为rsync是由xinetd启动的,所以需要修改一个配置vim / ...

  8. Linux学习-利用inotify和rsync实现数据的实时同步

    一.inotify简介 1.inotify介绍 异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的 轮询机制来获取事件,linux内核从2.6.13起支持 inotify,通过i ...

  9. Rsync + inotify 实现文件实时同步

    Rsync 用来实现触发式的文件同步. Inotify-tools是一套组件,Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等 ...

随机推荐

  1. 深入理解Java虚拟机阅读心得(二)

    垃圾收集 程序计数器.虚拟机栈.本地方法栈三个区域随线程而生,随线程而灭:这几个区域的内存分配和回收都具备稳定性,不需要过多的考虑回收的问题.而Java堆和方法区则不一样. Java堆中存储了几乎所有 ...

  2. Django——图书管理系统

    基于Django的图书管理系统 1.主体功能 1.列出图书列表.出版社列表.作者列表 2.点击作者,会列出其出版的图书列表 3.点击出版社,会列出旗下图书列表 4.可以创建.修改.删除 图书.作者.出 ...

  3. dbconfig.properties

    jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/数据库名 jdbc.username=root jdbc. ...

  4. [LeetCode] Transform to Chessboard 转为棋盘

    An N x N board contains only 0s and 1s. In each move, you can swap any 2 rows with each other, or an ...

  5. nginx + rtmp 搭建流媒体服务器

    一.安装nginx服务器 1.路径说明: 路径:/usr/local/src 2.下载nginx-rtmp-module (我这里的目录是在/usr/local/src/下面) cd /usr/loc ...

  6. 总结:极光推送java服务端(1)

    遇到的问题: 1.怎么用极光推送 2.极光推送发送失败报错 返回{ } 3.透传和推送区别以及怎么设置 我的解决方案: 问题1.极光推送类里面有不同的方法,需要发给那些人就调用相应的方法.有安卓.io ...

  7. linux定时备份mysql数据并同步到其他服务器

    (备份还原操作) ###导出数据库 /usr/bin/mysqldump -u root -pwd database > database20180808.sql ###导入数据库 mysql ...

  8. C# 类库中添加注释方法

    C# 类库中添加注释方法 C#中新建的类库添加注释时,应注意以下问题: 1.编译动态类库时命名空间要规范,一般不要和类同名,命名空间一般定义格式:项目名+类文件名: 2.动态类库中,类.方法的注释都采 ...

  9. 容器—stack

    c++ stl栈stack介绍 C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构. c++ stl栈stack的头文件 ...

  10. SQL SERVER 基本操作语句

    Sql 是一种结构化的查询语言:Sql是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理‘关系型数据库’系统:Sql对大小写不敏感:Sql不是数据库,是行业标准,是结构化的查询语言 In ...