sersync实时同步部署案例

news2024/10/26 20:18:13

目录

sersync介绍

案例信息

操作步骤

服务端部署

客户端部署 

创建存储目录

安装sersync

修改配置文件

启动服务

停止服务

测试


sersync介绍

sersync是一个基于inotify+rsync的实时文件同步工具,通过监控目录的变动达到实时同步的目的。

案例信息

拓扑图:

需求说明:

客户端监控/data文件夹,在该文件夹文件变动时同步到服务器。

操作步骤

服务端部署

rsync服务端具体部署步骤请参考我的另外一篇文章。rsync备份服务案例-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/wangweinan_5566/article/details/143210674

客户端部署 

创建存储目录

创建用来存储数据的目录/data,并创建一些文件充当数据。

mkdir /data
touch {1..10}.txt

安装sersync

sersync包中只有脚本文件和xml配置文件,不需要安装,根据需要自行放置软件的位置。

sersync软件下载链接:

https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gzicon-default.png?t=O83Ahttps://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz

软件包上传到服务器中并解压。

[root@nfs01 ~]# tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
GNU-Linux-x86/
GNU-Linux-x86/sersync2
GNU-Linux-x86/confxml.xml

创建用于存放软件的目录,并将软件复制到目录中。

[root@nfs01 ~]# mkdir -p /app/tools/sersync/{bin,conf}
[root@nfs01 ~]# cp GNU-Linux-x86/sersync2  /app/tools/sersync/bin/
[root@nfs01 ~]# cp GNU-Linux-x86/confxml.xml  /app/tools/sersync/conf/
[root@nfs01 ~]# tree /app
/app
└── tools
    └── sersync
        ├── bin
        │   └── sersync2
        └── conf
            └── confxml.xml

修改配置文件

修改/app/tools/sersync/confxml.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
    <host hostip="localhost" port="8008"></host>
    <debug start="false"/>
    <fileSystem xfs="false"/>
    <filter start="false">
 <exclude expression="(.*)\.svn"></exclude>
 <exclude expression="(.*)\.gz"></exclude>
 <exclude expression="^info/*"></exclude>
 <exclude expression="^static/*"></exclude>
    </filter>
    <inotify>
 <delete start="true"/>
 <createFolder start="true"/>
 <createFile start="false"/>
 <closeWrite start="true"/>
 <moveFrom start="true"/>
 <moveTo start="true"/>
 <attrib start="false"/>
 <modify start="false"/>
    </inotify>

    <sersync>
 <localpath watch="/data"><!--watch:监控目录-->
     <remote ip="172.16.1.41" name="sync"/><!--ip:服务器地址 name:rsync服务器模块名-->
     <!--<remote ip="192.168.8.39" name="tongbu"/>-->
     <!--<remote ip="192.168.8.40" name="tongbu"/>-->
 </localpath>
 <rsync>
     <commonParams params="-avz"/><!--params:rsync命令参数-->
     <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.client"/><!--start:用户验证 users:用户名 passwordfile:密码文件-->
     <userDefinedPort start="false" port="874"/><!-- port=874 -->
     <timeout start="false" time="100"/><!-- timeout=100 -->
     <ssh start="false"/>
 </rsync>
 <failLog path="/var/rsync_fail_log" timeToExecute="60"/><!--default every 60mins execute once--><!--path:失败日志文件-->
 <crontab start="false" schedule="600"><!--600mins-->
     <crontabfilter start="false">
  <exclude expression="*.php"></exclude>
  <exclude expression="info/*"></exclude>
     </crontabfilter>
 </crontab>
 <plugin start="false" name="command"/>
    </sersync>

    <plugin name="command">
 <param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->
 <filter start="false">
     <include expression="(.*)\.php"/>
     <include expression="(.*)\.sh"/>
 </filter>
    </plugin>

    <plugin name="socket">
 <localpath watch="/opt/tongbu">
     <deshost ip="192.168.138.20" port="8009"/>
 </localpath>
    </plugin>
    <plugin name="refreshCDN">
 <localpath watch="/data0/htdocs/cms.xoyo.com/site/">
     <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
     <sendurl base="http://pic.xoyo.com/cms"/>
     <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
 </localpath>
    </plugin>
</head>

启动服务

查看启动选项

[root@nfs01 bin]# ./sersync2  -h
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
_______________________________________________________
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序

启动服务

[root@nfs01 conf]# /app/tools/sersync/bin/sersync2   -rdo /app/tools/sersync/conf/confxml.xml
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -r     rsync all the local files to the remote servers before the sersync work
option: -d     run as a daemon
option: -o     config xml name:  /app/tools/sersync/conf/confxml.xml
daemon thread num: 10
parse xml config file
host ip : localhost host port: 8008
daemon start,sersync run behind the console
use rsync password-file :
user is rsync_backup
passwordfile is    /etc/rsync.client
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12  = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)
Max threads numbers is: 22 = 12(Thread pool nums) + 10(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 /data && rsync -avz -R --delete ./ rsync_backup@172.16.1.41::sync --password-file=/etc/rsync.client >/dev/null 2>&1
run the sersync:
watch path is: /data

设置开机启动,修改/etc/rc.local文件

[root@backup sync]# echo "/app/tools/sersync/bin/sersync2   -rdo /app/tools/sersync/conf/confxml.xml" >> /etc/rc.local

注:

因为没有给sersync服务写systemctl配置文件,所以不能通过systemctl命令进行管理

停止服务

先查找服务的进程号,再kill进程。

[root@nfs01 conf]# ps -ef | grep sersync2
root      8606     1  0 17:44 ?        00:00:00 /app/tools/sersync/bin/sersync2 -rdo /app/tools/sersync/conf/confxml.xml
root      8708  4854  0 17:49 pts/0    00:00:00 grep --color=auto sersync2
[root@nfs01 conf]# kill -9 8606

测试

启动服务后,客户端会直接将/data下的文件传输到服务端。

[root@backup sync]# ls
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

客户端创建文件,查看服务端是否更新

#客户端创建20.txt文件
[root@nfs01 conf]# touch 20.txt /data
[root@nfs01 conf]# ls /data
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

#服务端自动更新
[root@backup sync]# ls
10.txt  1.txt  20.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

客户端删除文件,查看服务端是否更新

#客户端删除1-5.txt文件
[root@nfs01 conf]# rm -rf /data/{1..5}.txt
[root@nfs01 conf]# ls /data/
10.txt  20.txt  6.txt  7.txt  8.txt  9.txt

#服务端自动更新
[root@backup sync]# ls
10.txt  20.txt  6.txt  7.txt  8.txt  9.txt


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2224162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微软商店平台】如何将exe打包上传微软商店

打开微软合作者中心&#xff1a;https://partner.microsoft.com/en-us/dashboard/home点击App and Games板块可以创建项目。 3. 重新生成包含私钥的自签名证书 运行以下命令&#xff0c;确保生成的证书包含私钥&#xff1a; New-SelfSignedCertificate -Type CodeSigning -Su…

Git的初次使用

一、下载git 找淘宝的镜像去下载比较快 点击这里 二、配置git 1.打开git命令框 2.设置配置 git config --global user.name "你的用名"git config --global user.email "你的邮箱qq.com" 3.制作本地仓库 新建一个文件夹即可&#xff0c;然后在文件夹…

从零开始:构建一个高效的开源管理系统——使用 React 和 Ruoyi-Vue-Plus 的实战指南

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

QT界面开发:图形化设计、资源文件添加

设计界面介绍 此时我们创建项目时就可以选择添加UI选项了。 添加完之后&#xff0c;我们可以看到&#xff0c;文件中多出了一个存放界面文件的目录&#xff0c;下面有个.ui的界面文件。甚至pro的项目文件中也会添加一项内容。 我们点击界面文件中的.ui文件&#xff0c;我们可以…

mono源码交叉编译 linux arm arm64全过程

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

有道在线翻译外,这三款翻译工具值得一试!

在众多翻译工具中&#xff0c;有道在线翻译是很多小伙伴都会用的。而市场上当然也有很多好用的翻译工具&#xff0c;这里就来给大家介绍几个&#xff01; 福昕在线翻译 直达链接&#xff1a; fanyi.pdf365.cn/ 操作教程&#xff1a;立即获取 这也是一款在线翻译工具。它以…

解决 VScode 每次打开都是上次打开的文件问题

每次使用 VScode 打开总是上次的文件&#xff0c;可以简单设置即可&#xff0c;记录一下。 VScode Visual Studio Code&#xff08;简称VSCode&#xff09;是一个由微软开发的免费、开源的代码编辑器。它支持多种编程语言&#xff0c;并提供了代码高亮、智能代码补全、代码重构…

【分布式知识】分布式对象存储组件-Minio

文章目录 什么是minio核心特点&#xff1a;使用场景&#xff1a;开发者工具&#xff1a;社区和支持&#xff1a; 核心概念什么是对象存储&#xff1f;MinIO 如何确定对对象的访问权限&#xff1f;我可以在存储桶内按文件夹结构组织对象吗&#xff1f;如何备份和恢复 MinIO 上的…

【力扣 + 牛客 | SQL题 | 每日4题】牛客大厂笔试真题SQLW6, W7, W8

1. 牛客大厂笔试真题SQLW6&#xff1a;统计所有课程参加培训人次 1.1 题目&#xff1a; 描述 某公司员工培训信息数据如下&#xff1a; 员工培训信息表cultivate_tb(info_id-信息id,staff_id-员工id,course-培训课程)&#xff0c;如下所示&#xff1a; 注&#xff1a;该公…

不依赖F8键,如何快速进入电脑安全模式

如果不希望通过狂按F8键进入安全模式&#xff0c;可以尝试以下几种方法来进入电脑的安全模式&#xff1a; 方法一&#xff1a;使用Ctrl键 关闭电脑并重新启动。在电脑启动过程中&#xff0c;按下Ctrl键&#xff08;需要在Windows系统启动画面出现之前就开始按&#xff09;。当…

基于Django+Python的房屋信息可视化及价格预测系统设计与实现(带文档)

项目运行 需要先安装Python的相关依赖&#xff1a;pymysql&#xff0c;Django3.2.8&#xff0c;pillow 使用pip install 安装 第一步&#xff1a;创建数据库 第二步&#xff1a;执行SQL语句&#xff0c;.sql文件&#xff0c;运行该文件中的SQL语句 第三步&#xff1a;修改源…

Linux: network: wireshark IO图的一个问题

今天遇到一个问题&#xff0c;发现wireshark画的IO图&#xff0c;前几秒没有数据&#xff0c;但是根据Raw的pcap看&#xff0c;是有包的&#xff0c;这就迷惑了。 经同事提醒&#xff0c;这个IO在设置了多个画图filter的时候&#xff0c;可能导致开始前几秒没有输出。如下图 这…

Java中Thread类的基本认识与使用(如果想知道Java中有关Thread类的基本知识,那么只看这一篇就足够了!)

前言&#xff1a;在Java中&#xff0c;Thread类是实现多线程编程的核心。它允许程序同时执行多个任务&#xff0c;提高应用程序的响应能力和性能。通过Thread类&#xff0c;开发者可以轻松创建和管理线程&#xff0c;并实现复杂的并发操作。接下来&#xff0c;我们将探讨Thread…

Java中自增自减,赋值,逻辑,三元运算符

自增自减运算符 在某个变量前面或者后面加一--在某个变量前面或者后面减一 可以看见&#xff0c;当a输出时&#xff0c;a是没有变化的&#xff0c;说明如果是在变量后就是先使用再增加&#xff0c;而b输出时&#xff0c;b增加了1&#xff0c;说明如果是在变量前面就是先增加再…

机器人转人工时,开启实时质检(mod_cti基于FreeSWITCH)

文章目录 前言联系我们实现步骤1. 修改拨号方案2. 启用拨号方案 前言 在客户与机器人对话中&#xff0c;是不能开启质检功能的。因为机器人识别会与质检识别产生冲突。如果用户想通过机器人转接到人工时&#xff0c;开启质检功能&#xff0c;记录客户与人工之间的对话。应该如…

《a16z : 2024 年加密货币现状报告》解析

加密社 原文链接&#xff1a;State of Crypto 2024 - a16z crypto译者&#xff1a;AI翻译官&#xff0c;校对&#xff1a;翻译小组 当我们两年前第一次发布年度加密状态报告的时候&#xff0c;情况跟现在很不一样。那时候&#xff0c;加密货币还没成为政策制定者关心的大事。 比…

Python Numpy 实现神经网络自动训练:反向传播与激活函数的应用详解

Python Numpy 实现神经网络自动训练&#xff1a;反向传播与激活函数的应用详解 这篇文章介绍了如何使用 Python 的 Numpy 库来实现神经网络的自动训练&#xff0c;重点展示了反向传播算法和激活函数的应用。反向传播是神经网络训练的核心&#xff0c;能够通过计算梯度来优化模…

unity项目导出安卓工程后,在AndroidStudio打包报错:unityLibrary:BuildIl2CppTask‘.

下面这个是我在unity开发者社区提问后&#xff0c;他们回答得&#xff1a; 解决方案&#xff1a;我这边按照这几个方案检查了下&#xff0c;NDK和JDK都没问题&#xff0c;最后重启电脑才解决的&#xff0c;应该是文件被锁定了&#xff0c;我用的windows系统的。 验证&#xff…

达梦数据守护集群_备库重建(二)

目录 1、概述 1.1 实验场景 1.2 实验环境 2、故障模拟 3、重建方案1 3.1 登录主库、联机备份 3.2 脱机还原备库 3.3 模拟新业务数据 3.4 主库备份归档 3.5 利用归档恢复备库 3.6 启动备库 3.7 验证 4、重建方案2 4.1 登录主库、联机备份 4.2 脱机还原备库 4.3 …

是否有必要考PG认证?

如今PG很火,我在BOSS招聘查了一下,确实很多职位需要PG.那么考个PG认证确实很有必要! 当然这么快给出肯定答案,这公众号是发不出来的.必须有300个字才可以哦! 大家友情支持下,点点广告! 听我来细说 1.2.3 本小仙40有余可以说是80后.我们这代80后什么好事都没捞着,糟糕的事没有…