文件同步及实现简单监控

1. 软件简介

rsync

rsync 是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程 数据同步备份的优秀工具。在同步备份数据时,默认情况下,Rsync 通过其 独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文 件或目录,当然也可根据权限,属主等属性的变化同步,但需要指定相应的 参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现 快速的同步备份数据 

inotify-tools

Inotify 是一种强大的,细粒度的。异步的文件系统事件监控机制,linux 内核 从 2.6.13 起,加入了 Inotify 支持,通过 Inotify 可以监控文件系统中添加、 删除,修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文 件系统下文件的各种变化情况,我们也是基于此功能信息实现了简单的信息 报文监控。

2. 功能介绍

本文实现文件自动同步的方法是基于两个软件 rsync 和 inotify-tools,要利用监 控服务(inotifywait 和 inotifywatch),监控同步数据服务器目录中信息的变化, 如发现目录中数据产生变化,就利用 rsync 服务推送到备份服务器上。 软件功能分工如下:

那么只是通过两个软件不同的功能是实现不了自动同步的,需要我们编写脚本来 进行功能结合。

3. 软件安装

由于这两种软件均比较常见,我司相关源中均有这两种软件,安装方式可以 通过 yum 安装或 apt 安装,或单独下载安装包安装即可,相关依赖较少,安 装是比较方便的,安装过程不再介绍。

4. 注意事项

inotify 软件需要 linux 内核 2.6.13 以后的内核版本才能支持。此程序是用 C 语言编写的,除了支持 inotify 的 Linux 内核之外没有其他依赖项。

利用 rsync 命令备份目录时,备份的目录后面有 / 和 没有 /,备份内容完 全不一样

二、软件部署

1. rsync 部署

传输方式

rsync 软件本身传输有多种传输方式,一般使用场景为增量备份使用,安 装软件后直接使用命令即可满足需求,远程传输命令类似于 scp。由于比较 简单,本文不做详细介绍,可通过互联网详细查询。

本次需要依赖的是其中的一种通过 socket(进程方式)传输文件和数据,也 就是通过创建守护进程,使用客户端和服务端的形式,不同于简单的类似 s cp 远程传输的推/拉方式传输。这就需要我们设立客户端和服务端,并配置 相关配置文件信息,才可以实现从客户端推送数据至服务端。

同步功能测试

主要是通过服务端开启守护进程,客户端 使用命令指定配置模块和安全文件来实现传输同步,这样既实现了免密的便捷 性,又保证了传输过程当中的安全性,我们看下相关传输过程以及原理如图:

监听方式

那么 inotify 本身有两大功能,一种是用来监控目录或文件动作,一种是用来统 计相关信息,那么实现实时同步功能采用的是这种监控动作的功能。两种功能对 比如下:

说明:在实时实时同步的时候,主要是利用 inotifywait 对目录进行监控

命令模板

由于 inotifywait 本身是命令行使用形式,所以我们主要来看一下 inotifywait 使用 的命令模板。

三、实现实时同步

条件验证

我们知道,两个软件各自不同的功能单独使用均不能实现实时同步的功能,需要 我们将两个软件使用脚本进行互相联系调用,达到实时同步的效果。

我们查看一下两个软件分别已验证可用的命令信息:

rsync 客户端服务命令确认可用,可实现增量同步功能

rsync -avz --delete /data/ rsync_backup@10.0.0.4::backup --password-file=/etc/rs

ync.password

rsync 服务端,确认服务已正常开启:

netstat -lntup |grep rsync

tcp 0 0 0.0.0.0:873 0.0.0.0:*

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

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

相关文章

1146-table performance-schema.session_variables don‘t exits打卡navicat连接MySQL报错

navicat连接MySQL时报错: 管理员权限打开cmd 输入下面代码: mysql_upgrade -u root -p --force输入密码 然后就可以正常连接了。 mysql_upgrade检查所有数据库中与mysql服务器当前版本不兼容的所有表。 mysql_upgrade也会升级系统表,以便你…

oracle、误操作删除数据库 数据恢复。

–查询 执行 delete 的语句 ,拿到删除的时间 FIRST_LOAD_TIME ,删除行数可参考 ROWS_PROCESSED select t.FIRST_LOAD_TIME,t.ROWS_PROCESSED,t.* from v$sql t where t.sql_text like %delete from trade% ;select *from trade as of timestamp to_time…

学习spring、springmvc、mybatis、ssm所有可能用到的依赖总结,父工程pom文件依赖,<packaging>pom</packaging>

1、父工程pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/PO…

idea报错——Access denied for user ‘root‘@‘localhost‘ (using password: YES)

项目场景&#xff1a; 使用idea启动SpringBoot项目报错&#xff0c;可以根据提示看到是数据库的原因&#xff0c;显示使用了密码&#xff0c;具体报错信息如下&#xff1a; 解决方案&#xff1a; 第一步&#xff1a;先去配置文件里面查看连接MySQL的url是否正确&#xff0c;如果…

微前端 -- wujie 预加载和原理 无界传参

目录 wujie 预加载和原理 原理解析 MessageChannel 无界传参 1.全局变量 2.Props 3.event bus wujie 预加载和原理 提前把无界实例创建好 runPreload 赋值给sandbox.preload 预先加载好 startApp 判断是否有preload 需要从wujie的实例导出preloadApp,参数跟startApp 一…

frp内网穿透部署,轻松实现内网服务对外访问

FRP&#xff08;Fast Reverse Proxy&#xff09;是一种轻量级、高性能的反向代理工具&#xff0c;利用反向代理技术将公网请求转发至内网服务器上&#xff0c;并将内网服务器的响应再次转发至公网请求者。在实现内网穿透时&#xff0c;FRP能够将公网与内网之间的隔离突破&#…

互联网Java工程师面试题·RabbitMQ篇

目录 1、什么是 rabbitmq 2、为什么要使用 rabbitmq 3、使用 rabbitmq 的场景 4、如何确保消息正确地发送至 RabbitMQ&#xff1f; 如何确保消息接收方消费了消息&#xff1f; 5、如何避免消息重复投递或重复消费&#xff1f; 6、消息基于什么传输&#xff1f; 7、消息如…

有哪些重要的项目是用 Python 开发的?

请访问 https://www.python.org/about/success 查看使用了 Python 的项目列表。 阅览 历次 Python 会议 的日程纪要可以看到许多不同公司和组织所做的贡献。 高水准的 Python 项目包括 Mailman 邮件列表管理器 和 Zope 应用服务器。 多个 Linux 发行版&#xff0c;其中最著名的…

C语言第四十四弹---调整奇偶数顺序

使用C语言实现调整奇偶数顺序 思路&#xff1a;通过循环分别找到奇数和偶数&#xff0c;并实现位置交换&#xff0c;需要进行多次交换&#xff0c;循环外层需要添加一个循环。 代码如下 #include <stdio.h>void Swap_Parity(int arr[], int sz) {int left 0;int righ…

苹果mac电脑如何彻底删除卸载软件?

在苹果电脑上安装和使用软件非常容易&#xff0c;但是卸载软件却可能会变得复杂和困难。不像在Windows上&#xff0c;你不能简单地在控制面板中找到已安装的程序并卸载它们。因此&#xff0c;在这篇文章中&#xff0c;我们将讨论苹果电脑怎么彻底删除软件。 CleanMyMac X全新版…

el-tooltip (element-plus)修改长度

初始状态&#xff1a; 修改后&#xff1a; 就是添加 :teleported"false"&#xff0c;问题解决&#xff01;&#xff01;&#xff01; <el-tooltipeffect"dark"content"要求密码长度为9-30位&#xff0c;需包含大小写字母、数字两种或以上与特殊字…

AtCoder ABC周赛2023 11/4 (Sat) D题题解

目录 原题截图&#xff1a; 题目大意&#xff1a; 主要思路&#xff1a; 注意事项&#xff08;很多人再这个地方掉坑&#xff09;&#xff1a; 代码&#xff1a; 原题截图&#xff1a; 题目大意&#xff1a; 给你两个数组&#xff08;A和B)长度都为n&#xff0c;然你求出一…

【Spring 源码】 贯穿 Bean 生命周期的核心类之 AbstractAutowireCapableBeanFactory

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

7-2 小霸王

幼儿园的老师给几位小朋友等量的长方体橡皮泥&#xff0c;但有个小朋友&#xff08;小霸王&#xff09;觉得自己的橡皮泥少了&#xff0c;就从另一个小朋友那里抢了一些。请问&#xff0c;是哪个小霸王抢了哪个小朋友的橡皮泥&#xff1f; 输入格式: 测试数据有多组。对于每组…

『 C++ 』BinarySearchTree搜索二叉树

文章目录 前言 &#x1f995;二叉搜索树的概念 &#x1f995;搜索二叉树的初始化 &#x1f995;Insert( )插入函数 &#x1f995;&#x1f47e; InsertR( ) 插入函数(递归) InOrder( ) 中序遍历打印 &#x1f995;Find( ) 查找函数 &#x1f995;&#x1f47e; Find( ) 查找函数…

v-model和:model的区别

问题 在我们使用Element plus框架时&#xff0c;经常会遇到表单&#xff0c;比如代码块&#xff1a; <el-form ref"ruleFormRef" :model"ruleForm" :rules"rules" label-width"120px" class"demo-ruleForm" :size"…

【umi-reques】umi-request 配置request后,无法覆盖默认设置的 Content-Type:text/plain

https://github.com/ant-design/ant-design-pro/issues/5846 设置mode: ‘no-cors’ 再设置 headers: {Content-Type: application/json;charsetUTF-8}不会生效。 要么让后端加上cors&#xff0c;要么前端通过代理方式访问&#xff0c;如果要改Content-Type&#xff0c; 就不…

C++新经典模板与泛型编程:用成员函数重载实现is_base_of

用成员函数重载实现is_base_of std::is_base_of是一个C 11标准中用于判断某个类是否是另一个类父类的类模板。 #include "killCmake.h"#include<string>using namespace std;class A { };class B : public A { public:B(int x): x_(x){} private:int x_; };/…

使用 GROUP BY 进行数据库分析:以图书销售数据库为例

让我们通过一个简单但实用的例子来理解 GROUP BY 的使用。我们将以一个图书销售数据库为例。这个数据库包含两张表&#xff1a;一张是图书信息表 (books)&#xff0c;另一张是销售记录表 (sales)。我们会先创建这两张表&#xff0c;然后插入一些数据&#xff0c;并展示如何使用…

1320:【例6.2】均分纸牌(Noip2002)

【题目描述】 有n堆纸牌&#xff0c;编号分别为 1&#xff0c;2&#xff0c;…,n 。每堆上有若干张&#xff0c;但纸牌总数必为n 的倍数。可以在任一堆上取若干张纸牌&#xff0c;然后移动。 移牌规则为&#xff1a;在编号为1 的堆上取的纸牌&#xff0c;只能移到编号为 2 的堆…