使用sersync整合rsync,实现WEB页面同步更新,亦可做数据备份之用

devtools/2024/10/19 13:23:54/
	      		 --> webser1[webroot]	192.168.0.16/	
sersync+rsync--->  webser2[webroot]	192.168.0.20192.168.0.15(/webroot)\-->  webser3[webroot]	192.168.0.8

原理:
通过Linux内核的inotify 机制,根据源目录的变化情况,安排触发更新式的rsync同步任务

以上拓补图中sersync就是源目录服务器,所有对网页修改的更新只需要在源目录服务器上做修改即可更新至三对WEB_SERVE上

实现过程:

1.在webserver1,webserver2,webserver3使用rsyncd服务共享出一个目录来:

mkdir /webrootchown nobody.nobody /webrootvim /etc/rsyncd.conf
uid=nobody
gip=nobody
use chroot=yes
address=0.0.0.0
port 873
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
hosts allow=192.168.0.0/24
hosts deny=*[webroot]path=/webrootcomment= web root share with rsyncread only=noauth users=user01 user02secrets file=/etc/rsyncd_user.db
vim /etc/rsyncd_user.db
user01:123
user02:456
chmod 600 /etc/rsyncd_user.db
mkdir /webroot
chown nobody.nobody /webroot

在三台机器上启用服务:

system start rsync

2.在sersync_server上安装sersync软件包:

tar xzvf sersync2.5_32bit_binary_stable_final.tar.gz -C /opt	--解压出来直接可用(二进制)
mv GNU-Linux-x86/ sersync
cd sersync
vim confxml		--编辑配置文件<sersync><localpath watch="/var/tmp">	--定义监控的目录<remote ip="192.168.1.10" name="webroot"/>	--同步到远程服务器的ip及rsync共享名称<remote ip="192.168.1.20" name="webroot"/><remote ip="192.168.1.30" name="webroot"/>	   </localpath><rsync><commonParams params="-artuz"/>	--rcync同步参数<auth start="true" users="user01" passwordfile="/root/passwd.txt"/>	--定义登录远程服务器的账号/密码<userDefinedPort start="flase" port="873"/><!-- port=874 -->	--定义端口<timeout start="false" time="100"/><!-- timeout=100 -->		--定义超时时间<ssh start="false"/></rsync>
vim /root/passwd.txt
123chmod 600 /root/passwd.txt	--必须设置600的权限才能使用.
./sersync2 -d -r	-d以后后服务器的方式启动,-r清除远程服务器文件中本地服务器没有的文件
-o 指定配置文件,默认在本在目录加载
-n 指定线程数量
./sersync2 -h 查看帮助.

3.测试

在sersync_server上的/var/tmp目录中做文件的增删改则这些操作会被同步至其它三台webserver


http://www.ppmy.cn/devtools/49612.html

相关文章

React中“WebSocket is closed before the connection is established“

在 React 中你需要将它添加到你useEffect的return useEffect(() > {const socket new WebSocket(address);return () > {if (socket.readyState 1) { // <-- This is importantsocket.close();}} }, []);然而&#xff0c;这不仅仅是最好的解决方案&#xff01;您需…

Golang | Leetcode Golang题解之第142题环形链表II

题目&#xff1a; 题解&#xff1a; func detectCycle(head *ListNode) *ListNode {slow, fast : head, headfor fast ! nil {slow slow.Nextif fast.Next nil {return nil}fast fast.Next.Nextif fast slow {p : headfor p ! slow {p p.Nextslow slow.Next}return p}}r…

第17篇:JTAG UART IP应用<四>

Q&#xff1a;如何通过JTAG UART发送命令控制开发板的外设比如LED&#xff1f; A&#xff1a;Quartus硬件工程以及Platform Designer系统在第一个Nios II工程--Hello_World的Quartus硬件工程基础上添加PIO&#xff0c;表示DE2-115开发板上的18个红色LED。 Nios II软件工程对应…

1、深度学习-安装

开放环境安装 sudo apt install build-essential 环境安装 conda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh conda init 重新连接shell 组件安装 pip install jupyter d2l torch torchvision 代码 git clone https://github.com/d2l-ai…

WPF框架,修改ComboBox控件背景色 ,为何如此困难?

直接修改Background属性不可行 修改控件背景颜色&#xff0c;很多人第一反应便是修改Background属性&#xff0c;但是修改过后便会发现&#xff0c;控件的颜色没有发生任何变化。 于是在网上搜索答案&#xff0c;便会发现一个异常尴尬的情况&#xff0c;要么就行代码简单但是并…

算法刷题【二分法】

题目&#xff1a; 注意题目中说明了数据时非递减的&#xff0c;那么这样就存在二分性&#xff0c;能够实现logn的复杂度。二分法每次只能取寻找特定的某一个值&#xff0c;所以我们要分别求左端点和有端点。 分析第一组用例得到结果如下: 成功找到左端点8 由此可知&#xff0…

linux centos consul1.15.2一键安装部署

consul原理、作用、安装相关内容 一、理论部分二、安装下载版本地址三、安装consul服务 一、理论部分 1、consul的原理 Consul的原理及作用可以归纳为以下几点&#xff1a; ①、基于Gossip协议的通信&#xff1a;Consul使用了基于Gossip协议的Serf实现来进行通信。 Gossip协议…

Hudi extraMetadata 研究总结

前言 研究总结 Hudi extraMetadata ,记录研究过程。主要目的是通过 extraMetadata 保存 source 表的 commitTime (checkpoint), 来实现增量读Hudi表写Hudi表时,保存增量读状态的事务性,实现类似于流任务中的 exactly-once 背景需求 有个需求:增量读Hudi表关联其他Hudi…