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

部署rsync远程同步+inotify监控

案例要点

Rsync

基本概念

Rsync 可以通过网络在不同的主机之间高效地传输和同步文件。它采用 “rsync 算法”,只传输文件中变化的部分,而不是整个文件,因此在同步大量文件或大文件时能显著节省网络带宽和时间。

安装

在大多数 Linux 发行版中,可以使用包管理工具进行安装。

  • CentOS 系统:可以使用yum install rsync命令安装。
  • Ubuntu:使用apt-get install rsync命令。

基本语法

rsync [选项] [源文件或目录] [目标文件或目录]

常用选项

  • -a:归档模式,以递归方式传输文件,并保持文件的权限、所有权、时间戳等属性不变,相当于-rlptgoD选项的组合。
  • -r:递归复制目录及其子目录。
  • -l:保留软链接。
  • -p:保留文件权限。
  • -t:保留文件时间戳。
  • -g:保留文件属组。
  • -o:保留文件所有者。
  • -D:保留设备文件和特殊文件。
  • -z:传输时进行压缩,以减少网络带宽占用。
  • -v:详细模式,输出详细的同步信息,包括文件的传输进度、名称等,方便用户了解同步过程。
  • --delete:删除目标目录中源目录不存在的文件,确保目标目录与源目录的内容一致。

inotify 监控系统

inotify 是 Linux 内核提供的一种文件系统事件监控机制,它允许应用程序监听文件或目录的各种变化(如修改、创建、删除等),是实现文件系统监控、自动化任务的核心技术。

核心功能与应用场景

实时监控

  • 监控文件变更,触发自动备份、同步或编译
  • 示例:网站目录变更时自动刷新服务器缓存

安全审计

  • 检测敏感目录的未授权访问或修改
  • 示例:监控 /etc/passwd/var/www/html 等目录

自动化工作流

  • 文件上传后自动触发处理(如转码、压缩)
  • 示例:监控 /uploads 目录,新文件上传后自动生成缩略图

案例场景

rsync/inotify主机端        192.168.180.143        

rsync/inotify客户端        192.168.180.144

案例过程

关闭防火墙

#关闭防火墙和SElinux
systemctl stop firewalld && setenforce 0

resync远程同步

配置resync主设备

#查看系统内核版本
uname -r

下载服务
#下载 rsync 软件包和 Web 包
yum - y install rsync httpd
配置rsync文件
#配置rsync 主配置文件
vim /etc/rsyncd.conf#去除#注释
uid = nobody
gid = nobody
use chroot = yes#末尾添加
[wwwroot]
path = /var/www/html
read only = no
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = backuper
secrets file = /etc/rsyncd_users.db

创建用户密码文件并赋予权限
#将用户密插入到用户密码文件
echo "backuper:abc-123" > /etc/rsyncd_users.db#赋予文件仅所有者权限
chmod 600 /etc/rsyncd_users.db
启动服务并查看启动状态
#启动web服务与rsync服务
systemctl start httpd
rsync --daemon#查看服务启动进程
netstat -nultp | grep rsync
netstat -nultp | grep httpd

赋予web页面目录权限
#赋予目录最大权限
chmod 777 /var/www/html/
rsync主内创建文件 
#切换到Web页面目录,创建文件
cd /var/www/html/
touch abc.txt

配置rsync客户端

下载相应服务
#下载web服务与rsync服务
yum -y install rsync httpd
实施远程连接
rsync -zva backuper@192.168.180.143::wwwroot /var/www/html/

编写远程同步脚本
#创建脚本文件
vim /opt/inotify.sh#!/bin/bash
JK="inotifywait -mrq -e modify,create,move,delete /var/www/html/"
TB="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.180.143::wwwroot"
$JK | while read DIRECTORY EVENT FILE
do$TB
done
赋予执行权限
#赋予脚本执行权限
chmod +x /opt/inotify.sh
编写密码文件并赋予权限
#修改密码文件
echo "abc-123" > /etc/server.pass#赋予仅所有者权限
chmod 600 /etc/server.pass
rsync客户端执行脚本文件
#执行脚本文件
/opt/inotify.sh

创建文件查看同步
touch /var/www/html/123.txt

查看rsync主文件同步

inotify远程监控

inotify主机端

 下载编译安装包
yum -y install gcc gcc-c++
导入并解压inotify压缩文件
tar zxf inotify-tools-3.14.tar.gz
配置编译安装
#切换到软件包目录下
cd inotify-tools-3.14#执行初始化安装
./configure && make && make install
监控文件事件
#监听/var/www/html目录的修改,创建,删除信息插入文件并在后台运行。
cd
touch inotify.txt
inotifywait -mrq -e modify,create,delete /var/www/html/ >> inotify.txt &#在Web目录下创建文件
cd /var/www/html/
touch a.txt
touch b.txt
touch c.txt d.txt
rm -rf b.txt d.txt#查看监听文件
cd
cat inotify.txt

 

http://www.xdnf.cn/news/576289.html

相关文章:

  • 前端学习(6)—— WebAPI部分案例
  • 前端面经-WebGL/threeJS
  • 《Saliency Attack: Towards Imperceptible Black-box Adversarial Attack》论文分享(侵删)
  • Spring AI 1.0 快速入门
  • NVIDIA GPU 性能调优与诊断完全指南
  • ConcurrentHashMap导致的死锁事故
  • 环境搭建
  • 根据Spring官方文档,三分钟完成Springboot项目集成Spring AI
  • sqli-labs第十七关——POST注入点
  • Spring Boot整合Redis
  • RestTemplate 发送的字段第二个大写字母变成小写的问题探究
  • 9-码蹄集600题基础python篇
  • leetcode 螺旋矩阵 java
  • 5-码蹄集600题基础python篇
  • 如何设计智慧工地系统的数据库?
  • 系统程序变更管理:确保IT环境稳定性和安全性的关键
  • Entity-Relationship Model(实体-关系模型)
  • FlashAttention:传统自注意力( Self-Attention)优化加速实现
  • 用户刷题记录日历——签到表功能实现
  • 基于 Guns v5.1 框架的分页教程
  • SseEmitter是什么
  • 卷积神经网络基础(十)
  • chrono类 根据duration 类的周期类型得到对应的周期名称
  • 预警功能深度测评:如何用系统降低设备突发故障率?
  • JavaScript常用事件
  • 第P10周:Pytorch实现车牌识别
  • 如何解决测试覆盖率与迭代速度的冲突问题?
  • 手搓四人麻将程序
  • 正大模型视角下的高频交易因子构建策略研究
  • 视频监控管理平台EasyCVR工业与公共安全监控:监控中心与防爆系统如何集成?