rsync+inotify的实时同步

目录

一、inotify

二、rsync+inotify实时同步搭建

1. 实验环境配置

2. 配置 服务端192.168.91.103

1. 修改rsync源服务器配置文件

3. 配置 客户端192.168.91.102

1. 创建文件夹

​编辑

2. 调整 inotify 内核参数

3. 安装inotify-tools

4. inotify对文件进行监控

5. 测试inotify效果

6. 创建脚本触发rsync

4. 测试脚本运行

1. 创建文件夹测试

2. 文件中导入内容测试

3. 追加文件测试


一、inotify

使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。
因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步。

可以监控文件系统的变动情况,并做出通知响应

  • 调整inotify内核参数(优化)

  • /etc/sysctl.conf(内核参数配置文件)

notifywait:用于持续监控,实时输出结果inotifywatch:用于短期监控,任务完成后再输出结果
  • notifywait:用于持续监控,实时输出结果

  • inotifywatch:用于短期监控,任务完成后再输出结果

二、rsync+inotify实时同步搭建

1. 实验环境配置

应用服务器/客户端:192.168.91.102

inotify实时监控

/var/www/html/cc

rsyncd服务端接收:192.168.91.103

/data/   备份目录

2. 配置 服务端192.168.91.103

1. 修改rsync源服务器配置文件

vim /etc/rsyncd.conf

kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid
rsync --daemon	
netstat -anpt | grep rsyncchmod 777 /var/www/html/cc

3. 配置 客户端192.168.91.102

1. 创建文件夹

2. 调整 inotify 内核参数

cat /proc/sys/fs/inotify/max_queued_events
cat /proc/sys/fs/inotify/max_user_instances 
cat /proc/sys/fs/inotify/max_user_watches 

vim /etc/sysctl.conf fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576sysctl -p

3. 安装inotify-tools

yum -y install gcc gcc-c++ #放入安装包
tar zxvf inotify-tools-3.14.tar.gz -C /optcd /opt/inotify-tools-3.14/./configure
make && make install

 

4. inotify对文件进行监控

inotifywait -mrq -e modify,create,move,delete /var/www/html/cc/

5. 测试inotify效果

6. 创建脚本触发rsync

#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete,attrib /var/www/html/cc/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/cc/ xzq@192.168.91.103::kkk"$INOTIFY_CMD | while read directory event file
doif [ $(pgrep rsync | wc -l) -le 0  ];then$RSYNC_CMDfi
done

chmod +x inotify.sh 
chmod 777 /var/www/html/cc/
chmod +x /etc/rc.d/rc.local 
echo '/opt/inotify.sh' >> /etc/rc.d/rc.local 

./inotify.sh

4. 测试脚本运行

1. 创建文件夹测试

2. 文件中导入内容测试

3. 追加文件测试

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新手创业三大法则!2024创业赚钱项目 2024做什么行业前景好!2024适合普通人创业的项目!

第一、寻找痛点。成功的创业项目往往解决了某个现实生活中的痛点。作为新手小白,需要关注自己周围的人们所遇到的问题,并思考通过何种方式来解决这些问题。这样做不仅能提供实际需求,还能使创业项目更有长期性。只有真正了解人们的需求和痛点…

蓝桥杯练习笔记(十八)

蓝桥杯练习笔记(十八) 一、用辅助栈来优化递归深度过大的问题 输入示例 0000100010000001101010101001001100000011 0101111001111101110111100000101010011111 1000010000011101010110000000001011010100 0110101010110000000101100100000101001001 0…

配置 施耐德 modbusTCP 分布式IO子站 PRA0100

模块官方介绍:https://www.schneider-electric.cn/zh/product/BMXPRA0100 1. 总体步骤 2. 软件组态:在 Unity Pro 软件中创建编辑 PRA 模块工程 2.1 新建项目 模块箱硬件型号如下 点击 Unity Pro 软件左上方【新建】按钮,选择正确的 DIO …

【论文解读】大模型事实性调查(上)

一、简要介绍 本调查探讨了大型语言模型(llm)中的事实性的关键问题。随着llm在不同领域的应用,其输出的可靠性和准确性变得至关重要。论文将“事实性问题”定义为llm产生与既定事实不一致的内容的概率。论文首先深入研究了这些不准确性的含义…

通过Golang获取公网IP地址

在Go语言中,获取当前的外网(公网)IP地址可以通过多种方法实现。其中一种常见的方法是通过访问外部服务来获取。这些服务可以返回访问者的公网IP地址,例如 httpbin.org/ip 或 ipify.org。下面是一个简单的例子,展示了如…

国内通稿在海外新闻媒体如何宣发-大舍传媒

引言 在全球化的时代背景下,海外通稿成为了新闻媒体间交流和宣发的重要方式之一。本文将探讨海外通稿在新闻媒体中的宣发方式,并分析大舍传媒在这方面的成功经验。 来百度APP畅享高清图片 海外通稿的重要性 海外通稿是指由海外记者或通讯社撰写的报道…

通过 Cookie、Redis共享Session 和 Spring 拦截器技术,实现对用户登录状态的持有和清理(三)

本篇内容对应 “2.4 生成验证码” 小节 和 “4.7 优化登陆模块”小节 视频链接 1 Kaptcha介绍 Kaotcga是一个生成验证码的工具。 你的网站验证码是什么? 在我们这个牛客论坛项目,验证码分为两部分 给用户看的是图片,用户根据图片上显示的…

The C programming language (second edition,KR) exercise(CHAPTER 2)

E x c e r c i s e 2 − 1 Excercise\quad 2-1 Excercise2−1&#xff1a;输出结果如图1和图2所示&#xff0c;这道练习题需要文章1和文章2的知识。 #include <stdio.h> #include <limits.h>float getFloat(char sign, unsigned char exp, unsigned mantissa); do…

leetcode代码记录(最长递增子序列

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元…

六部提问法让ChatGPT帮你写论文

教程出自b站&#xff1a;ChatGPT六步提问法&#xff1a;你若诚心发问&#xff0c;它会给你一篇惊艳论文&#xff01;_哔哩哔哩_bilibili 1、现象确认&#xff08;先把你要写的论文题目拿其中的核心论点来像它提问&#xff09; 确定你和chatgpt理解在同一个频道。 2、学术概念化…

JVM虚拟机(一)介绍、JVM组成、堆、栈、方法区/元空间、直接内存

目录 一、JVM 介绍1.1 为什么要学 JVM&#xff1f;1.2 JVM 是什么&#xff1f; 二、JVM 组成2.1 程序计数器2.2 Java堆1&#xff09;JVM 内存结构2&#xff09;Java 1.7 和 1.8 中堆的区别 2.3 Java虚拟机栈1&#xff09;虚拟机栈 和 栈帧2&#xff09;常见面试题 2.4 方法区/元…

二、【易 AI】Live2d 简介与使用

When you cry for missing the sun, you will miss the stars again. 当你为错过太阳而哭泣时,你也要再错过群星了。 ——泰戈尔 一、Live2d 简介 Live2D是一种基于2D图像的动态角色技术,它能够将静态的2D角色转化为具有丰富表情和动作的实时交互角色。通过使用Live2D,开发…