Linux数据实时同步(sersync+rsync)
1.在Slave服务器上安装Rsync
[root@slave ~]# rpm -ivh rsync-3.1.2-11.el7_9.x86_64.rpm
###rpm 自行下载
2.在Slave服务器上配置rsync
[root@slave ~]# vim /etc/rsyncd.conf
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
[server]
path=/root/test
use chroot=true
max connections=4
read only=no
list=true
uid=root
gid=root
auth users=root
secrets file=/etc/rsync.password
hosts allow=X.X.X.X
# 配置注解:
# uid:指定传输文件时的用户
# gid:指定传输文件时的组
# use chroot true|false:表示在传输文件前首先chroot到path参数所指定的目录下,可以实现安全防护,但缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件,默认情况下chroot值为true
# max connections:指定最大的连接数,默认是0,即没有限制
# read only ture|false:如果为true,则不能上传到该模块指定的路径下
# list:表示当用户查询该服务器上的可用模块时,该模块是否被列出,true为列出,false为隐藏
# auth users:指定传输时要使用的用户名
# secrets file:指定密码文件,注意该密码文件的权限一定要是600,格式:用户名:密码
# hosts allow:是允许同步的主机,可以是IP或者网段,如果是多个中间用空格隔开
# hosts deny:拒绝同步的主机,可以是IP或者网段,如果是多个中间用空格隔开
# [server]:同步的模块名
# path:同步的路径
3.创建同步的用户与密码的文件
即rsyncd.conf中secrets file这个配置选项中的文件/etc/rsync.password,同进要设置rsync.password的权限为600
[root@slave ~]# echo "root:123456" >/etc/rsync.password
[root@slave ~]# chmod 600 /etc/rsync.password
4.创建同步的目录
即rsyncd.conf中path配置选项中的目录
[root@slave ~]# mkdir -p /root/test
5.启动守护进程,并写入开机自启动
[root@slave ~]# rsync --daemon --config=/etc/rsyncd.conf
[root@slave ~]# echo "rsync --daemon --config=/etc/rsyncd.conf" >>/etc/rc.local
[root@slave ~]# chmod +x /etc/rc.d/rc.local
[root@slave ~]# tail -1 /etc/rc.local
[root@slave ~]# reboot
[root@slave ~]# systemctl status rc-local.service
[root@slave ~]# netstat -ntlp | grep rsync
二、Master服务器配置
1.在Master安装rsync
[root@slave ~]# rpm -ivh rsync-3.1.2-11.el7_9.x86_64.rpm
2.首先创建master端的密码验证文件,同进要设置rsync.password的权限为600
[root@master ~]# echo "123456" >/etc/rsync.password
[root@master ~]# chmod 600 /etc/rsync.password
4.部署sersync
[root@master ~]# mkdir /usr/local/sersync/
[root@master ~]# mkdir /usr/local/sersync/bin
[root@master ~]# mkdir /usr/local/sersync/conf
[root@master ~]# mkdir /usr/local/sersync/logs
[root@master ~]# cd /usr/local/sersync
将sersync程序包导入此文件夹 sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@master sersync]# tar xvf sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@master sersync]# mv GNU-Linux-x86/sersync2 ./bin/sersync
[root@master sersync]# mv GNU-Linux-x86/confxml.xml ./conf/
[root@master conf]# cp confxml.xml confxml.xml.bak
5.修改config.xml文件,建议拷贝一份在修改,需要把监控的目录数据同步到master指定的模块下,前面写了slave的模块名是server对应的目录是:/server/
[root@master sersync]# vim conf/confxml.xml
# 如果系统linux7以上,需要将xfs="false"修改成xfs="true",否则sersync无法递归监控
<fileSystem xfs="true"/>
<localpath watch="/root/test">
<remote ip="10.8.5.42" name="server"/>
</localpath>
# 指定rsync的虚拟用户和密码文件路径
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="root" passwordfile="/etc/rsync.password"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
[root@master sersync]# echo "export PATH=$PATH:/usr/local/sersync/bin/" >>/etc/profile
[root@master sersync]# source /etc/profile
[root@master sersync]# which sersync
6.启动sersync
[root@master sersync]# sersync -d -r -o /usr/local/sersync/conf/confxml.xml
# 参数注解:
# -d:启用守护进程模式
# -r:在监控前,将监控目录与远程主机用rsync命令推送一遍
# -o:指定配置文件,默认使用confxml.xml文件
7.测试同步,在master服务器需要同步的目录下创建文件及目录
[root@master sersync]# cd /root/gckj/
[root@master sersync]# mkdir note
[root@slave backup]# ls
8.加入开机启动项,重启服务器查看
[root@master ~]# ln -s /usr/local/sersync/bin/sersync /usr/local/bin/sersync
[root@master ~]# echo "sersync -d -r -o /usr/local/sersync/conf/confxml.xml" >>/etc/rc.local
[root@master ~]# chmod +x /etc/rc.d/rc.local
[root@master ~]# systemctl status rc-local.service
[root@master ~]# tail -1 /etc/rc.local
[root@slave ~]# reboot
9.加入开机启动后测试同步,在master增加、删除、修改文件及目录,查看slave是否实时同步
[root@master sersync]# cd /root/test/
[root@master sersync]# mkdir note
[root@slave backup]# ls
Linux数据实时同步(sersync+rsync)的更多相关文章
- CentOS 6.5 rsync+inotify实现数据实时同步备份
CentOS 6.5 rsync+inotify实现数据实时同步备份 rsync remote sync 远程同步,同步是把数据从缓冲区同步到磁盘上去的.数据在内存缓存区完成之后还没有写入到磁盘 ...
- Linux下Rsync+sersync实现数据实时同步
inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...
- Rsync+sersync实现数据实时同步
前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...
- Linux下Rsync+Inotify-tools实现数据实时同步
Linux下Rsync+Inotify-tools实现数据实时同步 注意:下面的三个案例都是rsync 每次都是全量的同步(这就坑爹了),而且 file列表是循环形式触发rsync ,等于有10个文件 ...
- CentOS7下Rsync+sersync实现数据实时同步
近期公司要上线新项目,后台框架选型我选择当前较为流行的laravel,运行环境使用lnmp. 之前我这边项目tp32+apache,开发工具使用phpstorm. 新建/编辑文件通过phpstorm配 ...
- (转)Linux系统sersync数据实时同步
Linux系统sersync数据实时同步 原文:http://blog.csdn.net/mingongge/article/details/52985259 前面介绍了以守护进程的方式传输或同步数据 ...
- Rsync+Sersync数据实时同步(双向)
Rsync+Sersync数据实时同步(双向) 服务介绍 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.se ...
- 项目实战:rsync+sersync实现数据实时同步
一.组网介绍 本次实验使用两台主机: qll251 角色:Rsync server + Sersync server qll252 角色: Rsync client 本次实验采用CentOS7.7系统 ...
- sersync基于rsync+inotify实现数据实时同步
一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192. ...
- Linux之sersync数据实时同步
sersync其实是利用inotify和rsync两种软件技术来实现数据实时同步功能的,inotify是用于监听sersync所在服务器上的文件变化,结合rsync软件来进行数据同步,将数据实时同步给 ...
随机推荐
- JavaScript:显式转换数据类型:如何转换为数值、字符串和布尔值类型?
JS的运算符以及某些内置函数,会自动进行数据类型的转换,方便计算,即隐式转换数据类型: 但是很多时候,我们希望可以手动控制数据类型的转换,即显示转换数据类型: 转换为字符串 String()函数 使用 ...
- JavaScript:是一种什么样的编程语言?
有关JavaScript的发展历程,百度百科上已经说得很清楚了,这里不赘述,只是想谈一下我刚刚接触JS的一些感触. 作为后端java开发者,初次学习JS的时候,真的觉得JS非常的不严谨,很混乱.由于它 ...
- 08-通用Service接口
MP也为我们提供了Service层的实现,我们只需要编写一个接口,继承IService, 并创建一个接口实现类继承ServiceImpl,即可使用 基本使用 改造前 定义接口 public inter ...
- [常用工具] OpenCV_contrib库在windows下编译使用指南
本文主要讲述opencv及opencv_contrib库在windows下基于vs2017编译安装指南.所用OpenCV版本为OpenCV4.4,编译平台为vs2017. 文章目录 1 下载 2 编译 ...
- [机器学习] Yellowbrick使用笔记7-聚类可视化
聚类模型是试图检测未标记数据中模式的无监督方法.聚类算法主要有两类:聚集聚类将相似的数据点连接在一起,而质心聚类则试图在数据中找到中心或分区.Yellowbrick提供yellowbrick.clus ...
- [数据结构]克鲁斯卡尔(Kruskal)算法
算法的概念 与Prim算法从顶点开始扩展最小生成树不同,Kruskal算法是一种按权值的递增次序选择合适的边来构造最小生成树的方法.假设N=(V,E)是连通网,对应的最小生成树T=(Vt,Et),Kr ...
- [C#]简单的理解委托和事件
委托 在C++中可以利用"函数指针"将对方法的引用作为实参传递给另一个方法,而C#中可以利用委托提供相同的功能. 委托-内部机制 但是委托实际上是一个特殊的类.委托必须直接或间接的 ...
- Java反射获取方法参数名 IDEA配置 Maven
默认情况下无法获得具体的参数名,只能得到arg0, arg1等. 进行如下配置即可通过反射获得具体的参数名. -parameters 如果是Maven项目,还需要在pom.xml文件中增加如下配置 & ...
- 主线程-创建Thread类的子类
主线程 Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码.Jav ...
- immutable.js学习笔记(七)----- Seq
一.Seq 懒得意思就是"不运算,不执行" 二.运行 当console.log这个值的时候,才去观察 三.任意collection 四.Seq.keyed 五.Seq.Indexe ...