当前位置: 首页 > news >正文

rsync远程同步+inotify监控

目录

一、Rsync 简介

1、rsync是什么

2、备份的方式

3、rsync同步方式

4、常用rsync命令

5、配置源的两种表达方法

二、rsync实验

1、本地复制

​编辑​编辑

2、异地复制

2.1  rsync服务器配置

2.2 rsync客户端配置

2.2.1 普通同步

2.2.2 免密同步

2.2.3 --delete选项的用法

3、发起端(客户端)配置 rsync+inotify

3.1 服务端配置

3.2 发起端配置

3.3 客户端验证

一、Rsync 简介

1、rsync是什么

  • 一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份
  • 传输前执行压缩,因此非常适用于异地备份、镜像服务器等
  • 负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置发起端应对该位置具有读取权限
  • 官方网站:https://rsync.samba.org/

2、备份的方式

1、发起端:负责rsync  同步操作的客户机叫做发起端,通知服务器我要备份你的数据
2、备份源:负责响应来自客户机rsync   同步操作的服务器叫做备份源,需要备份的服务器
3、服务端:运行rsyncd服务,一般来说,需要备份的服务器
4、客户端:存放备份数据

rsync复制时的原理

  • 首先将源文件和目标位置的文件对比,找出差异部分
  • 根据目标位置的文件与源文件差异的部分,进行一致性同步

3、rsync同步方式

本地复制:首先是将源文件和目的位置文件对比找出差异,然后将源文件与目的位置的差异部分进行一致性同步。

下行同步:客户端与服务端同步内容,可以理解为客户端从服务器上下载内容

上行同步:服务端与客户端同步内容,可以理解为客户端将内容上传到服务器

4、常用rsync命令

基本格式:rsync [选项] 原始位置 目标位置

常用选项:

  • -v:显示同步过程的详细(verbose)信息。
  • -z:在传输文件时进行压缩(compress)。
  • -a:归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”。
  • --delete:删除目标位置有而原始位置没有的文件。
  • -r:递归模式,包含目录及子目录中的所有文件。
  • -l:对于符号链接文件仍然复制为符号链接文件。
  • -p:保留文件的权限标记。
  • -t:保留文件的时间标记。
  • -g:保留文件的属组标记(仅超级用户使用)。
  • -o:保留文件的属主标记(仅超级用户使用)。
  • -H:保留硬连接文件。
  • -A:保留 ACL 属性信息。
  • -D:保留设备文件及其他特殊文件。
  • --checksum:根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。

5、配置源的两种表达方法

#格式一:
#用户名@主机地址::共享模块名
rsync -avz backuper@192.168.247.10::wwwroot /opt/#格式二:
#rsync://用户名@主机地址/共享模块名
rsync -avz rsync://backuper@192.168.247.10/wwwroot /opt/

二、rsync实验

1、本地复制

rsync -avz /abc /opt 
#复制整个abc目录rsync -avz /abc/ /opt 
#复制abc目录下的文件

2、异地复制

2.1  rsync服务器配置

 实验环境: 

192.168.247.20   服务端   
192.168.247.80   客户端   

#前提首先关闭防火墙和增强功能
systemctl stop firewalld
setenforce 0rpm -q rsync							#一般系统已默认安装rsync#建立/etc/rsyncd.conf 配置文件
vim /etc/rsyncd.conf				#添加以下配置项
uid = root
gid = root
use chroot = yes										#禁锢在源目录
address = 192.168.10.18								    #监听地址
port 873												#监听端口 tcp/udp 873,可通过cat /etc/services | grep rsync查看
log file = /var/log/rsyncd.log							#日志文件位置
pid file = /var/run/rsyncd.pid							#存放进程 ID 的文件位置
hosts allow = 192.168.10.0/24							#允许访问的客户机地址
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z		#同步时不再压缩的文件类型[wwwroot]												#共享模块名称
path = /var/www/html									#源目录的实际路径
comment = Document Root of www.kgc.com
read only = yes											#是否为只读
auth users = backuper									#授权账户,多个账号以空格分隔
secrets file = /etc/rsyncd_users.db						#存放账户信息的数据文件#如采用匿名的方式,只要将其中的“auth users”和“secrets file”配置项去掉即可。
#为备份账户创建数据文件
vim /etc/rsyncd_users.db
backuper:123456				#无须建立同名系统用户chmod 600 /etc/rsyncd_users.db#启动 rsync 服务程序
rsync --daemon				#启动 rsync 服务,以独立监听服务的方式(守护进程)运行 

创建共享文件,也就是源文件

mkdir -p /var/www/html
chmod +r /var/www/html
cd /var/www/html
echo "yudeqiang">ydq.txt
echo "zhouxingchi">zxc.txt

2.2 rsync客户端配置

2.2.1 普通同步

2.2.2 免密同步

vim /etc/server.pass
123chmod 600 /etc/server.pass
rsync -avz --password-file=/etc/server.pass ydq@20.0.0.55::wwwroot /abc

2.2.3 --delete选项的用法

rsync -avz -delete --password-file=/etc/server.pass backuper@192.168.247.20::wwwroot /abc

3、发起端(客户端)配置 rsync+inotify

将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。
因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步。

3.1 服务端配置

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

vim /etc/rsyncd.conf
......
read only = no											#关闭只读,上行同步需要可以写kill $(cat /var/run/rsyncd.pid)
rsync --daemon	
netstat -anpt | grep rsyncchmod 777 /var/www/html/

2、调整 inotify 内核参数

#max_queue_events(监控事件队列,默认值为16384)、
#max_user_instances(最多监控实例数,默认值为128)、
#max_user_watches(每个实例最多监控文件数,默认值为8192)。当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。#cat /proc/sys/fs/inotify/max_queued_events
#cat /proc/sys/fs/inotify/max_user_instances
#cat /proc/sys/fs/inotify/max_user_watchesvim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576sysctl -p

3.2 发起端配置

安装inotif安装包

编写触发同步脚本

脚本的目的就是时实监控、时实同步的功能

vim /opt/inotify.sh#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /abc"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /abc/ backuper@192.168.247.20::wwwroot"$INOTIFY_CMD | while read DIRECTORY EVENT FILE
doif [ $(pgrep rsync | wc -l) -le 0 ] ; then$RSYNC_CMDfi
done#脚本解释
先定义一个变量为监控这个目录中是否创建、删除、移动、修改、属性等信息的变化
再定义一个变量为rsync同步,将/abc中的目录中的信息同步到rsync服务器中的指定目录
再编写一个while循环,先执行监控变量,再执行while循环,
循环内容为,读取目录事件文件,如果rsync进程同步操作不存在,则执行同步操作的变量。

3.3 客户端验证

相关文章:

rsync远程同步+inotify监控

目录 一、Rsync 简介 1、rsync是什么 2、备份的方式 3、rsync同步方式 4、常用rsync命令 5、配置源的两种表达方法 二、rsync实验 1、本地复制 ​编辑​编辑 2、异地复制 2.1 rsync服务器配置 2.2 rsync客户端配置 2.2.1 普通同步 2.2.2 免密同步 2.2.3 --delet…...

【面试经典150 | 数组】移除元素

文章目录 写在前面Tag题目来源题目解读解题思路方法一:原地操作 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等…...

玩转Mysql系列 - 第21篇:什么是索引?

这是Mysql系列第21篇。 本文开始连续3篇详解mysql索引: 第1篇来说说什么是索引? 第2篇详解Mysql中索引的原理 第3篇结合索引详解关键字explain 本文为索引第一篇:我们来了解一下什么是索引? 路人在搞计算机之前,…...

预处理指令

// The include directive instructs the preprocessor to paste the text of the given file into the current file. // 粘贴指定文件的内容 #include // 定义宏PI #define PI 3.1415926 // 取消定义PI #undef PI条件编译(Conditional Compilation) // 检查xxx是否已被定义为…...

强大的JTAG边界扫描(1):基本原理介绍

文章目录 1. 什么是边界扫描?2. JTAG硬件接口3. 边界扫描相关的软硬件4. 学习资料5. 总结 我是怎么了解到边界扫描的呢? 这就要从我淘到一块FPGA板卡的事情说起了。 前段时间我在某二手平台上淘了一块FPGA板子,它长这样: 板子的…...

【C++】源文件.cpp和头文件.h分离编程

优势介绍 将C代码分为头文件(.h)和源文件(.cpp)的做法有以下几个好处: 模块化和代码组织:将函数和类的声明(包括函数原型、类的成员和属性等)放在头文件中,将函数和类的…...

报错ssh: Could not resolve hostname

…按照网上好多教程试了一下: 新建密钥,添加到gitee,重新测试。修改host,加入gitee的ip地址到里面去。修改.gifconfig配置文件,配置成ssh的仓库链接。 这上面的方法都不行,后面发现一篇文章:SS…...

从零开始学网站建设:从需求分析到上线发布

从零开始学网站建设:从需求分析到上线发布 一、需求分析 在进行网站建设之前,首先需要与客户进行沟通,了解客户的需求和要求,并进行深入的分析和研究。根据不同的需求,需要确定网站的类型、功能、布局、风格等方面的…...

软件系统验收测试需要注意的地方

验收测试 一、软件验收测试含义: 软件验收测试是指测试人员检验软件是否符合软件规格说明书和用户需求的测试活动。 验收测试是软件测试的最后一个环节,也是最为关键的一个要素。 它关系到软件开发公司的产品质量,也关系到需求方的产品能…...

解决three.js中加载纹理贴图时,初次渲染不显示的问题

效果: 解决方法:主要是将一些构建网格对象的操作放在了textureLoader.load()方法中,加载图片也用了require init() {// 1, 创建场景对象this.scene new this.$three.Scene();// 2, 创建立方缓冲几何体this.geometry new this.$three.BoxGe…...

Git学习记录

Contest 一、工作区域二、操作命令2.1 创建仓库2.2 查看仓库状态2.3 从工作区向暂存区添加文件2.3.1 只添加一个文件2.3.2 添加全部文件 2.4 从暂存区向仓库区添加文件2.5 查询日志2.5.1 从当前版本开始查询2.5.2 查看所有日志 2.6 回滚2.6.1 从仓库回滚到工作区2.6.2 取消工作…...

建筑模板木模好还是钢模好

在建筑施工中,模板是一项关键的工程,对于建筑结构的质量和施工效率起着重要作用。在选择模板材料时,木模和钢模都是常见的选择。本文将比较木模和钢模的优缺点,以帮助您做出明智的选择。 正文:一、木模:传统…...

写代码中碰到的错误

bind绑定类内成员导致 "no matching function for call to ..." 当bind绑定类内成员时,需要指明绑定的成员所在类的位置。 上面未指明Remove函数在哪个类中从而导致错误。 此外 bind 的函数指针类型是const类型的,都需要添加 const 修饰。 S…...

java文件传输简单方法

java文件传输简单方法 假设现在已经打包了一个文件(1233444333),要将这个文件传输给另一方: import java.io.*; public class F_PasswordUnPassword { public static void main (String[] args)throws Exception { ByteArrayOutp…...

Vue3后台管理系统Element-plus_侧边栏制作_无限递归

在home.view中添加代码 <template><div><div class"common-layout"><el-container><el-header class"common-header flex-float"><div class"flex"><img class"logo" src"../assets/logo…...

PCIe基础概念

《PCI_Exepress体系结构导读》《WDC databook》读书笔记 RCB read completion boundary MPS max payload size MRRS max read request size 4K对齐 Specifies the address page boundary size supported by the AXI bridge. No packet can have an address that crosses…...

GE IS220PVIBH1A 336A4940CSP16 数字输入模块

GE IS220PVIBH1A&#xff08;336A4940CSP16&#xff09;是一种数字输入模块&#xff0c;通常用于工业控制和自动化系统中&#xff0c;以将数字信号输入到PLC&#xff08;可编程逻辑控制器&#xff09;或其他控制系统中。以下是一些可能的产品特点和功能&#xff0c;但请注意&am…...

比特币与火人节

作者&#xff1a;Greg Cipolaro&#xff0c;NYDIG 全球研究主管 编译&#xff1a;WEEX 唯客 阅读提要&#xff1a; 灰度胜诉后市场缺乏后续动力&#xff0c;这告诉我们什么信号&#xff1f; ETF 不断涌现&#xff0c;但投资者似乎不太关心。 比特币和火人节&#xff1a;它们有何…...

Nginx 中 location 和 proxy_pass 斜杠/ 问题

location 的斜杠问题比较好理解&#xff0c;不带斜杠的是模糊匹配。例如&#xff1a; location /doc 可以匹配 /doc/index.html&#xff0c;也可以匹配 /docs/index.html。 location /doc/ 强烈建议使用这种 只能匹配 /doc/index.html&#xff0c;不能匹配 /docs/index…...

【Spring】开发框架Spring核心技术含Resource接口详细讲解

这里写目录标题 前言1. Spring简介2. Spring体系结构2.1 核心模块(Core Container)2.2 AOP模块2.3 数据访问集成模块&#xff08;Data Access/Integration &#xff09;2.4 Web模块 3. 初识Ioc与DI3.1 IoC控制反转和DI依赖注入3.2 常见的几种注入方法3.3 Spring的IoC例子3.4 Sp…...

如何利用FanControl.HWInfo插件实现精准风扇控制:终极配置指南

如何利用FanControl.HWInfo插件实现精准风扇控制&#xff1a;终极配置指南 【免费下载链接】FanControl.HWInfo FanControl plugin to import HWInfo sensors. 项目地址: https://gitcode.com/gh_mirrors/fa/FanControl.HWInfo 想要彻底解决电脑风扇噪音与散热平衡的难题…...

开发容器实战:用Dev Containers统一团队开发环境,告别配置地狱

1. 项目概述与核心价值 最近在折腾一个跨平台协作的项目&#xff0c;团队里有人用 Mac&#xff0c;有人用 Windows&#xff0c;还有人用 Linux 桌面&#xff0c;开发环境配置起来简直是“八仙过海&#xff0c;各显神通”&#xff0c;但结果往往是“一地鸡毛”。一个依赖版本不…...

开源AI演示文稿生成工具slide-sage:从原理到实践全解析

1. 项目概述&#xff1a;一个开源的演示文稿生成利器 如果你和我一样&#xff0c;经常需要制作技术分享、产品汇报或者教学课件&#xff0c;那你一定体会过那种面对空白PPT文档的“创作焦虑”。从构思大纲、搜集素材、设计排版到最终美化&#xff0c;一套像样的幻灯片做下来&a…...

从洗衣机到无人机:拆解霍尔传感器在BLDC电机中的“交通指挥”角色

从洗衣机到无人机&#xff1a;霍尔传感器如何成为BLDC电机的隐形指挥家 当清晨的洗衣机开始轻柔转动&#xff0c;或是无人机在天空划出精准轨迹时&#xff0c;很少有人会注意到这些设备内部藏着一个精密的"交通指挥系统"。这个系统的核心不是红绿灯&#xff0c;而是一…...

点云匹配方法 NDT(正态分布变换)

1. 正态分布变换 (NDT) 在点云匹配中&#xff0c;ICP基于距离直接最优化变换矩阵的参数&#xff0c;由于是欠定方程且旋转矩阵的约束&#xff0c;使得结果很难优化&#xff0c;为此在新的维度优化变换矩阵的参数&#xff0c;被很好的提出&#xff1a; 先将参考点云&#xff0…...

告别JSON臃肿:手把手教你用MessagePack为C++微服务瘦身(附性能对比)

告别JSON臃肿&#xff1a;手把手教你用MessagePack为C微服务瘦身&#xff08;附性能对比&#xff09; 在当今高性能后端服务开发中&#xff0c;微服务架构已成为主流选择。然而&#xff0c;随着服务规模的扩大&#xff0c;服务间通信的数据量急剧增长&#xff0c;传统的JSON序列…...

告别91卫图!用QGIS Python脚本批量下载Google/Bing卫星图,附完整代码

开源GIS实战&#xff1a;Python脚本自动化下载Google/Bing卫星影像全攻略 当你在深夜赶制城市规划方案时&#xff0c;突然发现91卫图下载的影像分辨率不足&#xff1b;当科研项目需要批量获取区域卫星数据时&#xff0c;商业软件高昂的授权费用让你望而却步——这可能是每个GIS…...

户外Wi-Fi天线系统热管理方案与优化实践

1. 户外Wi-Fi天线系统热管理挑战解析 在户外通信设备领域&#xff0c;热管理一直是个令人头疼的问题。我经手过多个基站项目&#xff0c;最深切的体会就是&#xff1a;那些在实验室里运行良好的设备&#xff0c;一到实际户外环境就频频出现热关机。以这个案例中的Wi-Fi天线系统…...

对话系统情感交互实践:从意图识别到动态话术生成的夸夸技能库设计

1. 项目概述&#xff1a;一个“夸夸”导航技能库的诞生最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“kuakua-navigator-skills”。光看名字&#xff0c;你可能会有点摸不着头脑——“夸夸”和“导航技能”是怎么联系在一起的&#xff1f;这其实是一个典型的“命名即内…...

单芯片编码器技术解析与运动控制革新

1. 单芯片编码器技术解析与运动控制革新在工业自动化与精密运动控制领域&#xff0c;编码器如同系统的"感官神经"&#xff0c;实时捕捉机械运动的细微变化。传统模块化编码器虽然提供了即插即用的便利性&#xff0c;但其固定参数和有限的可配置性往往成为性能提升的瓶…...