配置inotify+rsync实时同步

news2025/1/17 6:10:22

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

        将inotify机制与rsync 工具相结合,可以实现触发式备份(实时同步)——只要原始位置的文档 发生变化,则立即启动增量备份操作,否则处于静默等待状态,如下图所示。这样,就避免了按 固定周期备份时存在的延迟性、周期过密等问题。

正因为inotify通知机制由Linux内核提供,因此主要做本机监控,在触发式备份中应用时更适合 上行同步,下面依次介绍其配置过程。

1.调整inotify内核参数

        在Linux 内核中.默认的inotify机制提供了三个调控参数:max_queue_events 、max_user_instances、 max_user_watches,分别表示监控事件队列(16 384)、最多监控实例数(128)、每个实例最多监控文 件数(8192)。

[root@lgcllc ~]# cat /proc/sys/fs/inotify/max_queued_events 

[root@lgcllc ~]# cat /proc/sys/fs/inotify/max_user_instances 

[root@lgcllc ~]# cat /proc/sys/fs/inotify/max_user_watches 

当要监控的目录,文件数量较多或者变化较频繁时,建议加大这三个参数的值,例如,可直接 修改/etc/sysctl.conf配置文件,将管理队列设为32768.实例数设为1024.监控数设为1048576. 通常情况下,监控数所设的值建议大于监控目标的总文件数。

[root@lgcllc ~]# vim /etc/sysctl.conf
。。。。。。
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576



[root@lgcllc ~]# sysctl -p

2.安装inotify-tools

        使用inotify 机制还需要安装 inotify-tools.以便提供 inotifywait.inotifywatch 辅助工具程序.用 来监控.汇总改动情况.inotify-tools可从网站http://inotify-tools.sourceforge.net/下载,版本为3.14.

[root@lgcllc ~]# rz -E     //把源码包inotify-tools-3.14.tar.gz拉进来
rz waiting to receive.

[root@lgcllc ~]# tar zxf inotify-tools-3.14.tar.gz 
[root@lgcllc ~]# cd inotify-tools-3.14
[root@lgcllc inotify-tools-3.14]# ./configure 
[root@lgcllc inotify-tools-3.14]# make
[root@lgcllc inotify-tools-3.14]# make install

        以监控网站目录/var/www/html为例,可以先执行“inotifywait命令,然后在另一个终端向 /var/www/html目录下添加文件、移动文件,跟踪屏幕输出结果。其中,选项‘-e”用来指定要监控哪些事件,选项“-m”表示持续监控,选项“-r”表示递归整个目录,选项“-q”简化输出信息。

[root@lgcllc ~]# inotifywait -mrq -e modify,create,move,delete /var/www/html/

        inotifywait可监控modify(修改).create(创建).move(移动).delete(删除).attrib(属性更 改)等各种事件,一有变动立即输出结果:inotifywatch可用来收集文件系统变动情况,并在运行结 束后输出汇总的变化情况,关于这两个命令的详细用法可以参考其man手册页,配置触发备份任务 时只要用到inotifywait 就可以了。 

3.编写触发式同步脚本

        使用 inotifywait输出的监控结果中,每行记录中依次包括目录,事件,文件,据此可以识别变 动情况。为了简单,只要检测到变动时执行rsync上行同步操作即可,需要注意的是,当更新较频繁 时,应避免并发执行rsync备份—若rsync进程已经存在,则忽略本次同步,或者根据rsync进程数 量(取决于实际任务)来决定是否同步。

[root@lgcllc ~]# vim /opt/inotify_rsync.sh
[root@lgcllc ~]# chmod +x /opt/inotify_rsync.sh 
[root@lgcllc ~]# echo '/opt/inotify_rsync.sh' >> /etc/rc.local 

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

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

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

相关文章

main函数的参数ac和av

概要: main函数有两个参数,ac和av ac表示参数的个数,程序名包括在内。也就是说程序无参数运行时,ac的值为1 av是一个字符串数组,这个数组中的每个元素表示一个参数,程序名包括在内。也就是说&#xff0c…

Zulip:开源团队协作工具,高效沟通与远程办公 | 开源日报 No.126

zulip/zulip Stars: 18.9k License: Apache-2.0 Zulip 是一个开源的团队协作工具,拥有独特的基于主题的线程功能,结合了电子邮件和聊天的优点,使远程工作更加高效和愉快。它是唯一设计用于实时和异步对话的现代团队聊天应用程序。 其核心优势…

创建加密分区或者文件

文章目录 [GParted 中已清除的分区与未格式化的分区](https://superuser.com/questions/706624/cleared-vs-unformatted-partition-in-gparted)创建加密分区解密创建的加密分区以便挂载格式化设备未具体的格式(这里为ext4格式)创建挂载点目录挂载加密的文…

win32 WM_MENUSELECT消息学习

之前写了一些win32的程序,处理菜单单击都是处理WM_COMMAND消息,通过 LOWORD(wParam) 获取菜单ID,判断单击的是哪个菜单项; 还有一些其他菜单消息; 当在菜单项中移动光标或鼠标,程序会收到许多WM_MENUSELEC…

来聊聊程序员的职业发展路线

作为程序员,在开发岗位上做了几年,特别是到了30岁,这个而立之年,我们会来到一个重要的人生岔路口。就是管理和技术两个选择,一边专业路线,一边是管理路线。 在互联网的头部企业,对管理和技术是…

(12)Linux 常见的三种进程状态

💭 前言:本章我们专门讲解进程的状态。我们先学习具体的 Linux 系统状态,再去介绍 OS 学科面对的概念如何理解 —— 运行态、终止态、阻塞态以及挂起态。 进程状态(Process Status) 什么是进程状态? 进程…

打地鼠游戏来了

主要利用js鼠标点击事件和window.setInterval()回调函数来进行实现的. 源码获取方式:链接:https://pan.baidu.com/s/1eW9qvX3zFH9qlH82-I4yOA 提取码:1233

1.2.3 TCP/IP参考模型

一、OSI参考模型与TCP/IP参考模型 1、应用层:将表示层和会话层都纳入其中,形成一个比较大的层次,包含所有的高层协议 2、传输层:实现端到端的,进程与进程之间的通信。 3、网际层:TCP/IOP模型中最关键的部…

Arduino平台软硬件原理及使用——发光二极管(LED灯)的使用

文章目录 一、发光二极管的发光原理 二、发光二极管正负极的辨别 三、发光二极管在Arduino中的使用 一、发光二极管的发光原理 通过上述两幅图像对发光二极管的结构及发光原理进行理解; 从物理学的角度而言,当电流通过晶片时(N区的电子向P区移…

腾讯云轻量应用服务器和云服务器有什么区别?买哪个好

腾讯云轻量服务器和云服务器有什么区别?为什么轻量应用服务器价格便宜?是因为轻量服务器CPU内存性能比云服务器CVM性能差吗?轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境,云服务器CV…

【node-express】实现省县市/区三级联动接口

省县市/区三级联动接口 介绍接口步骤代码部分 介绍 源码地址:https://github.com/thinkasany/nestjs-course-code/tree/master/demo/address 使用 navicat 导入sql文件,新增表,然后只需要一个接口 localhost:3001/region?parentId1, 不断的…

uni-app新建页面

新建页面 一、右键点击 pages 文件夹,点击新建页面。 二、输入页面名称、选择创建 vue 文件、勾选创建同名目录、选择默认模板、勾选在 pages.json 中注册、点击创建即可。 原创作者:吴小糖 创作时间:2023.12.28

数据结构与算法(C语言版)P10——图

1、图的基本概念和术语 前面学过: 线性是一对一树形是一对多 而今天要学习的图形结构是多对多。 图的定义: G(V,E) V:顶点(数据元素)的__有穷非空__集合。E:边的有穷集合。 __有向图:__每条边都是有方向的 __无…

每周一算法:区间覆盖

问题描述 给定 N N N个闭区间 [ a i , b i ] [a_i,b_i] [ai​,bi​],以及一个线段区间 [ s , t ] [s,t] [s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。 输出最少区间数,如果无法完全覆盖则输出 − 1 -1 −1。 输入格式…

程序员如何高效学习技术?

我们相信努力学习一定会有收获,但是方法不当,既让人身心疲惫,也没有切实的回报。 不少朋友每天都阅读技术文章,但是第二天就忘干净了。工作中领导和同事都认可你的沟通和技术能力,但是跳槽面试却屡屡碰壁。面试官问技术…

javaWebssh民宿管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh民宿管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模 式开发。开发环境为TOMCAT7.0,My…

Graph Transformer2023最新研究成果汇总,附15篇必看论文

图Transformer是一种结合了Transformer模型和图神经网络(GNN)的框架,用于在图形结构数据上执行预测任务。在图Transformer中,Transformer的自注意力机制被用来学习节点之间的关系,而GNN则被用来生成节点的嵌入表示。通…

百模大战中的AI行业新趋势:开启技术变革的大门

引言 在百模大战中,AI行业的发展正在经历前所未有的变革。这场竞争不仅推动了AI技术的快速发展,也揭示了AI行业的新趋势。本文将深入探讨这些方向,为读者提供对AI行业未来发展的深刻洞察。 一、技术进步 百模大战的激烈竞争推动了AI技术的飞…

VR全景图片制作时有哪些技巧,VR全景图片能带来哪些好处

引言: VR全景图片是通过虚拟现实技术制作出的具有沉浸感的图片,能够提供给用户一种身临其境的感觉。在宣传方面,它有着独特的优势和潜力,能够帮助吸引更多的潜在客户,那么VR全景图片制作时有哪些技巧,VR全…

uni-app uni.scss内置全局样式变量

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…