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

上行上传rsync+inotify

引言

        使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。

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

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

vim /etc/rsyncd.conf #修改 read only 为 noread only = nokill $(cat /var/run/rsyncd.pid)rm -rf /var/run/rsyncd.pidrsync --daemonnetstat -natp | grep rsyncchmod 777 /var/www/html/txy

2、调整 inotify 内核参数(backuper)

在 Linux 内核中,默认的 inotify 机制提供了三个调控参数

max_queued_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_watches

可通过 /etc/sysctl.conf 文件进行配置,设定参数应符合服务器性能以及服务需要

vim /etc/sysctl.conf

#添加如下配置

fs.inotify.max_queued_events = 16384

fs.inotify.max_user_instances = 1024

fs.inotify.max_user_watches = 1048576

sysctl -p

3、安装 inotify-tools(backuper)

用 inotify 机制需要安装 inotify-tools,以便提供 inotifywait、inotifywatch 辅助工具程序,用来监控、汇总改动情况。

inotifywait:可监控modify(修改)、create(创建)、move(移动)、delete(删除)、attrib(属性更改)等各种事件,一旦变动立即输出结果。

inotifywatch:可用来收集文件系统变动情况,并在运行结果后输出汇总的变化情况。

[root@localhost ~]# cd /opt[root@localhost opt]# rz -E#传入 inotify-tools 安装包rz waiting to receive.tar zxvf inotify-tools-3.14.tar.gz -C /optcd inotify-tools-3.14/./configuremake -j 2 && make install

可以先执行 inotifywait 命令,然后另外再开启一个新终端向 /var/www/html 目录下添加文件、移动文件,在原来的终端上跟踪屏幕输出结果。

新终端操作

[root@localhost ~]# cd /var/www/html/txy[root@localhost txy]# touch test.php[root@localhost txy]# mv test.php test.txt[root@localhost txy]# echo 'test' > test.txt[root@localhost txy]# rm -rf test.txt

原终端操作

[root@localhost inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html/txy

4、实验验证

在新终端的/var/www/html/txy的目录下新建文件夹

 在原终端上显示该内容

inotifywait 选项说明如下

常用选项       说明

-e   用来指定要监控哪些事件

-m  表示持续监控

-r    表示递归整个目录

-q   简化输出信息

5、另一个终端的触发式同步脚本

[root@localhost txy]# vim /opt/inotify.sh#!/bin/bashINOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/txy"RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/txy backuper@192.168.10.23::rsync/"$INOTIFY_CMD | while read DIRECTORY EVENT FILE
##while判断是否接收到监控记录doif [ $(pgrep rsync | wc -l) -le 0 ] ; then$RSYNC_CMDfidone
[root@localhost opt]# chmod +x inotify.sh[root@localhost opt]# chmod 777 /var/www/html/[root@localhost opt]# chmod +x /etc/rc.d/rc.local[root@localhost opt]# echo '/opt/inotify.sh' >> /etc/rc.d/rc.local

##加入开机自动执行

上述脚本用来检测本机 /var/www/html/txy 目录的变动情况,一旦有更新触发 rsync 同步操作,上传备份至服务器 192.168.10.23 的 rsync 共享目录下。

6、验证

6.1 在本机运行 /opt/inotify_rsync.sh 脚本程序

[root@backuper opt]# ./inotify.sh &        //后台运行该脚本

6.2 切换到本机的 /var/www/html 目录,执行增加、删除、修改文件等操作

[root@localhost opt]# cd /var/www/html/txy[root@localhost txy]# lstest.html  test.txt[root@localhost txy]# rm -rf *[root@localhost txy]# touch test.html[root@localhost txy]# echo 'this is inotify_rsync test!' > test.html

6.3 查看远端服务器中的 rsync 目录下的变化情况

[root@rsync ~]# cd /data[root@rsync data]# lstest.html[root@rsync data]# cat test.htmlthis is inotify_rsync test!

相关文章:

上行上传rsync+inotify

引言 使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。 将inotify机制与rsync工具相结合…...

借助ChatGPT写作:打造学术论文中的亮点与互动

ChatGPT无限次数:点击直达 打造学术论文中的亮点与互动 引言 学术论文是学术界交流思想、探讨问题和展示研究成果的重要形式。如何使学术论文在众多作品中脱颖而出,吸引读者的眼球并激发互动,是每位研究者都关注的问题。本文将介绍如何借助ChatGPT这一…...

逐步学习Go-sync.Mutex(详解与实战)

概述 Go中提供了互斥锁:sync.Mutex。sync.Mutex提供了以下方法: type Mutex // 加锁。如果已经有goroutine持有了锁,那么就阻塞等待直到持有锁 func (m *Mutex) Lock()// 尝试加锁。如果加锁成功就返回true,否则返回失败 func (m…...

每日三道面试题之 Java并发编程 (一)

1.为什么要使用并发编程 并发编程是一种允许多个操作同时进行的编程技术,这种技术在现代软件开发中非常重要,原因如下: 充分利用多核处理器:现代计算机通常都拥有多核处理器,通过并发编程,可以让每个核心独…...

车身稳定控制系统原理是什么?

车身稳定控制系统(Electronic Stability Control,ESC)是一种先进的车辆动态控制系统,其主要原理是通过传感器监测车辆的各项状态,包括车速、转向角度、侧倾角等,然后通过电子控制单元(ECU&#…...

vue3前端加载动画 lottie-web 的简单使用案例

什么是 Lottie Lottie 是 Airbnb 发布的一款开源动画库,它适用于 Android、iOS、Web 和 Windows 的库。 它提供了一套从设计师使用 AE(Adobe After Effects)到各端开发者实现动画的工具流。 UED 提供动画 json 文件即可, 开发者就…...

基于java+springboot+vue实现的健身房管理系统(文末源码+Lw)23-223

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装健身房管理系统软件来发挥其高效地信息处理的作用&#xf…...

10款白嫖党必备的ai写作神器,你都知道吗? #媒体#人工智能#其他

从事自媒体运营光靠自己手动操作效率是非常低的,想要提高运营效率就必须要学会合理的使用一些辅助工具。下面小编就跟大家分享一些自媒体常用的辅助工具,觉得有用的朋友可以收藏分享。 1.飞鸟写作 这是一个微信公众号 面向专业写作领域的ai写作工具&am…...

Docker工作流

1.工作流 开发应用编写Dockerfile构建Docker镜像运行Docker容器测试应用发布镜像到Hub迭代更新镜像 2.开发应用 首先你需要创建一个应用,这个应用可以是后端应用或者前端应用,任何语言都可以。 比如:我使用IDEA 创建一个Java后端应用&…...

深入浅出 -- 系统架构之分布式集群的分类

一、单点故障问题 集群,相信诸位对这个概念并不陌生,集群已成为现时代中,保证服务高可用不可或缺的一种手段。 回想起初集中式部署的单体应用,因为只有一个节点,因此当该节点出现任意类型的故障(网络、硬件…...

Docker之镜像与容器的相关操作

目录 一、Docker镜像 搜索镜像 下载镜像 查看宿主机上的镜像 删除镜像 二、Docker容器 创建容器 查看容器 启停容器 删除容器 进入容器 创建/启动/进入容器 退出容器 查看容器内部信息 一、Docker镜像 Docker 运行容器前需要本地存在对应的镜像, 如…...

中科驭数超低时延网络解决方案入选2023年度金融信创优秀解决方案

近日,由中国人民银行领导、中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布「2023年度第三期金融信创优秀解决方案」,中科驭数超低时延网络解决方案从众多方案中脱颖而出,成功入选,代表了该方案的技术创新和金融实践…...

应用方案 | DCDC电源管理芯片MC34063A

MC34063A 为一单片 DC-DC 变换集成电路,内含温度补偿的参考电压源(1.25V)、比较器、能有效限制电流及控制工作周期的振荡器,驱动器及大电流输出开关管等。外配少量元件,就能组成升压、降压及电压反转型 DC-DC 变换器。…...

【个人使用推荐】联机不卡顿 小白一键部署 大厂云服务器选购指南 16G低至26 幻兽帕鲁最大更新来袭

更新日期:4月8日(半年档 价格回调,京东云采购季持续进行) 本文纯原创,侵权必究 《最新对比表》已更新在文章头部—腾讯云文档,文章具有时效性,请以腾讯文档为准! 【腾讯文档实时更…...

57 npm run build 和 npm run serve 的差异

前言 npm run serve 和 npm run build 的差异 这里主要是从 vue-cli 的流程 来看一下 我们经常用到的这两个命令, 他到传递给 webpack 打包的时候, 的一个具体的差异, 大致是配置了那些东西? 经过了那些流程 ? vue-cli 的 vue-plugin 的加载 内置的 plugin 列表如下, 依次…...

原生小程序开发性能优化指南

性能优化指南 1.骨架屏 业务可以在数据加载完成之前用骨架屏幕来占位,提升体验。 2.包大小优化 减小包中静态资源,例如图片文件,可将图片进行压缩降低文件体积。无用文件、函数、样式剔除。除了部分用于容错的图片必须放在代码包&#xf…...

「51媒体网」邀请媒体采访报道对企业宣传有何意义?

传媒如春雨,润物细无声的,大家好,我是51媒体网胡老师。 邀请媒体采访报道对企业宣传具有多重意义: 提升品牌知名度和曝光度:媒体是信息传播的重要渠道,通过媒体的报道,企业及其活动、产品能够迅…...

用动态IP采集数据总是掉线是为什么?该怎么解决?

动态IP可以说是做爬虫、采集数据、搜集热门商品信息中必备的代理工具,但在爬虫的使用中,总是会遇到动态IP掉线的情况,从而影响使用效率,本文将探讨动态IP代理掉线的几种常见原因,并提供解决方法,以帮助大家…...

MySQL操作DDL

目录 1.概述 2.数据库的增删改查 3.表的增删改查 3.1.创建和查看表结构 3.2.修改表 3.3.查看所有的表 3.4.删除表 4.用户 5.DDL在实际应用场景中的作用 5.1.数据库设计 5.2.数据库维护 ​​​​​​​5.3.数据库迁移或重置 ​​​​​​​5.4.优化性能 ​​​​​…...

程序员如何搞副业

目录 1.概述 2.个人项目开发 3.在线教育和培训 4.技术博客和内容创作 1.概述 程序员通过副业实现个人价值最大化和增加收入的途径多种多样,以下是一些方法: 自由职业: 程序员可以在业余时间提供自由职业服务。包括为客户开发软件、网站或应用程序、…...

【嵌入式开发 Linux 常用命令系列 4.3 -- git add 不 add untracked file】

请阅读【嵌入式开发学习必备专栏 】 文章目录 git add 不add untracked file git add 不add untracked file 如果你想要Git在执行git add .时不添加未跟踪的文件(untracked files),你可以使用以下命令: git add -u这个命令只会加…...

git 常用命令和使用方法

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…...

程序员如何搞副业?

程序员不仅拥有将抽象概念转化为实际应用的能力,还通常具备强大的逻辑思维和问题解决能力。然而,许多程序员并不满足于仅仅在一家公司工作,他们渴望通过副业来实现个人价值的最大化,增加收入,甚至探索自己的创业梦想。…...

深入浅出 -- 系统架构之负载均衡Nginx实现高可用

一、Nginx的高可用 线上如果采用单个节点的方式部署Nginx,难免会出现天灾人祸,比如系统异常、程序宕机、服务器断电、机房爆炸、地球毁灭....哈哈哈,夸张了。但实际生产环境中确实存在隐患问题,由于Nginx作为整个系统的网关层接入…...

鲸鱼优化算法(Whale Optimization Algorithm)

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 算法背景 鲸鱼优化算法(Whale Optimization Algorithm, WOA)是一种模拟鲸鱼捕食行为的优化算法。想象一下,你…...

C++内存管理new-delete大法及实现原理

目录 前言: 一:C语言中区域划分的回顾及各个变量存在的位置 1.经典例题 ​编辑2.C/C中内存区域的划分 二:C内存管理方式 new delete操作符 1.对于内置类型 2.对于自定义类型 三:operator new和operator delete函数 1…...

Spring WebFlux响应式实现WebFilter解决跨域问题

WebFilter 是 Spring Framework 中用于处理 Web 请求的过滤器接口,它是在基于 Servlet 3.0 规范的基础上,为了支持响应式编程模型而引入的。与传统的 Servlet 过滤器相似,WebFilter 也允许开发者对进入的请求和返回的响应进行拦截、修改或者增…...

第4章 Redis,一站式高性能存储方案,笔记问题

点赞具体要实现功能有哪些? 可以点赞的地方:对帖子点赞,对评论点赞点一次是点赞,再点一次是取消赞统计点赞的数量(计数,string),帖子被点赞的数量,某个用户被点赞的数量…...

UVA540 Team Queue 解题报告

UVA540 Team Queue 解题报告 题目链接 https://vjudge.net/problem/UVA-540 题目大意 有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会排到…...

基础贪心问题

1.部分背包问题 #include<iostream> #include<algorithm> using namespace std; const int N 110; double v[N], w[N]; pair<double, int> a[N]; int n, m;int main(){cin>>n>>m;double x, y;for(int i 0; i < n; i){cin>>v[i]>&g…...

福州企业网站建设/淘数据官网

疑问&#xff1a;xiaoqiangshop使用JMeter测试搜索时&#xff0c;为什么需要勾选自动重定向才有结果&#xff1f;分析&#xff1a; &#xff08;经过我的提点&#xff0c;童鞋自行分析过程如下&#xff09;这里首先我们可以很简单的通过搜索去看下搜索后的网址&#xff1a;http…...

武汉网站排名系统/小蝌蚪幸福宝入口导航

1.Counter Counter是对字典类型的补充&#xff0c;用于追踪值的出现次数。它具备字典的所有功能。在python的内部实现中&#xff0c;Counter类继承了dict类。 1.1 基本用法 >>> import collections >>> obj collections.Counter(I Dreamed A Dream) &g…...

前端低代码开发/seo草根博客

面试题目&#xff1a;实现RANSAC的框架 Random Sample Consensus&#xff08;RANSAC&#xff09; 随机抽样一致算法&#xff0c;MRPT写得是比较好的&#xff0c;注意每次此迭代后需要更新迭代次数。见https://github.com/MRPT/mrpt/blob/master/libs/math/src/ransac.cpp&#…...

中企动力做网站的价格/权重查询工具

结婚钻戒是结婚的时候&#xff0c;女生佩戴的婚戒&#xff0c;铂金或者18K金的戒托上镶嵌有一颗钻石&#xff0c;闪闪发亮&#xff0c;代表着真挚的爱情。从恋爱到婚姻&#xff0c;需要真挚的爱情的支撑&#xff0c;男生为她用心的挑选这枚结婚钻戒&#xff0c;能够表达对她真挚…...

北京市建委官方网站/友链

一、问题描述 在使用networkx进行图数据可视化时报错如题_AxesStack object is not callable while using networkx to plot。其中matplotlib为3.6.2版本&#xff0c;networkx版本为2.7。 import matplotlib.pyplot as plt import networkx as nx plt.figure(figsize(15,14))…...

网站后台使用/西安seo王尘宇

具体配置&#xff1a; 前题需要关闭iptables和SELinux 1、打开ssh配置文件&#xff0c;启用以下选项 vim /etc/ssh/sshd_config RSAAuthentication yes #允许RSA认证 PubkeyAuthentication yes #允许公钥认证 AuthorizedKeysFile .ssh/authorized_keys #公钥存放地址 …...