rsync+Inotifywait实现文件实时同步

rsync+Inotifywait实现实时同步

背景:

某客户想实现实现异地灾备,想达到的是A机房出现断电的时候。数据能实时的将数据同步到B上,并且域名切换到B之后能提供业务 。使用rsync+inotify做web数据和ftp(ftp主要是用户上传的图片文件)的数据实时同步.

一:软件介绍:
  1. rsync
    rsync是一个开源的快速备份工具,可以再不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,再传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
  2. inotify
    inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件,本实验基于此进行数据的监控并调用rsync进行数据实时同步
二 :实验环境:

操作系统:centos7
同步源端:10.10.1.128
同步目的端:10.10.1.129
如图:
111111
服务器A为同步源端,服务器B为同步目的端。

三:环境部署
  1. 配置rsync源服务器
    检查rsync是否安装,测试环境已经安装此服务,一般服务器已经集成了rsync服务,如未安装请自行网上找相关安装文档。

22222

  1. 修改rsync默认配置文件,位于/etc/rsyncd.conf。
    10.10.1.128的配置文件如下:

uid = root
gid = root
use chroot = yes
address = *
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 10.10.1.129
[datadir]
path = /var/www/html
read only = false
dont compress = .gz .tgz .zip .z .Z .rpm .deb .bz2
auth users = root
secrets file = /etc/rsyncd_users.db
10.10.1.129的配置文件如下:
uid = root
gid = root
use chroot = yes
address = *
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 10.10.1.128
[datadir]
path = /var/www/
read only = false
dont compress = .gz .tgz .zip .z .Z .rpm .deb .bz2
auth users = root*
secrets file = /etc/rsyncd_users.db

  1. 为备份账户创建数据文件
    根据上一步的设置,创建账号数据文件,添加一行用户记录,以冒号分隔,用户名称为root,密码为123456。由于账号信息采取明文存放,因此应调整文件权限,权限调整为600.

333333

  1. 在源端启动rsync进行全量数据同步
    命令:rsync --daemon

444444
在执行运程同步任务时,rsync命令需要指定同步源服务器中的资源位置。rsync同步源的资源表示方式为“用户名@主机地址::共享模块名”或者“rsync://用户名@主机地址/共享模块名”,前者为两个冒号分隔形式,后者为URL地址形式。
rsync -avz root@10.10.1.128::datadir /opt
rsync -avz rsync://root@10.10.1.128/datadir /opt
注意:此操作是先做全量的数据拉取。机房A和B用专线链接,如果数据量较大考虑非工作时间同步,避免影响客户应用。本次执行拉取数据量不大,与客户方沟通可在工作时间执行。
55555
测试:在源端创建三个文件分别是test111-333.txt文件,在目的端上将文件同步到本地
66666

    四 :部署inotify工具

软件安装

在源服务器上执行
/usr/local/inotify/bin/inotifywait -mrq -e modify,create,move,delete /var/www/html/监控源服务器的文件状态 。在/var/www/html/目录下删除文件,可以看到工具可以实时监控到源服务器出现文件变动情况
在源服务器删除文件test111----test666.txt的文件
Inotifywait工具实时监控到文件变动情况,如下截图
777777
888888
编写触发脚本:
99999
内容如下:
#!/bin/bash
INOTIFY_CMD="/usr/local/inotify/bin/inotifywait -mrq -e
modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -avH --port=873 --progress --delete /var/www/html root@10.10.1.129::datadir --password-file=/etc/server.pass"
$INOTIFY_CMD | while read file
do
$RSYNC_CMD
echo "${file}" >> /tmp/rsync.log 2>&1
done
/etc/server.pass的文件权限改成600,文件内部填写密码
启动脚本后台运行实时监控文件监控与同步
脚本实时监控文件的修改,删除,创建等操作后触发rsync进行增量的同步源服务器上 ,rsync的日志记录到/tmp/rsync.log , 进行验证
在源端上创建111-555 五个文件夹,可以看到数据实时的同步到目的端上,如下图
123
在源端删除刚刚创建的目录,在目的端会看到目录自动删除
456
使用rsync+inotifywait进行实时同步数据验证成。

### RT-DETRv3 网络结构分析 RT-DETRv3 是一种基于 Transformer 的实时端到端目标检测算法,其核心在于通过引入分层密集正监督方法以及一系列创新性的训练策略,解决了传统 DETR 模型收敛慢解码器训练不足的问题。以下是 RT-DETRv3 的主要网络结构特点: #### 1. **基于 CNN 的辅助分支** 为了增强编码器的特征表示能力,RT-DETRv3 引入了一个基于卷积神经网络 (CNN) 的辅助分支[^3]。这一分支提供了密集的监督信号,能够与原始解码器协同工作,从而提升整体性能。 ```python class AuxiliaryBranch(nn.Module): def __init__(self, in_channels, out_channels): super(AuxiliaryBranch, self).__init__() self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.bn = nn.BatchNorm2d(out_channels) def forward(self, x): return F.relu(self.bn(self.conv(x))) ``` 此部分的设计灵感来源于传统的 CNN 架构,例如 YOLO 系列中的 CSPNet PAN 结构[^2],这些技术被用来优化特征提取效率并减少计算开销。 --- #### 2. **自注意力扰动学习策略** 为解决解码器训练不足的问题,RT-DETRv3 提出了一种名为 *self-att 扰动* 的新学习策略。这种策略通过对多个查询组中阳性样本的标签分配进行多样化处理,有效增加了阳例的数量,进而提高了模型的学习能力泛化性能。 具体实现方式是在训练过程中动态调整注意力权重分布,确保更多的高质量查询可以与真实标注 (Ground Truth) 进行匹配。 --- #### 3. **共享权重解编码器分支** 除了上述改进外,RT-DETRv3 还引入了一个共享权重的解编码器分支,专门用于提供密集的正向监督信号。这一设计不仅简化了模型架构,还显著降低了参数量推理时间,使其更适合实时应用需求。 ```python class SharedDecoderEncoder(nn.Module): def __init__(self, d_model, nhead, num_layers): super(SharedDecoderEncoder, self).__init__() decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=nhead) self.decoder = nn.TransformerDecoder(decoder_layer, num_layers=num_layers) def forward(self, tgt, memory): return self.decoder(tgt=tgt, memory=memory) ``` 通过这种方式,RT-DETRv3 实现了高效的目标检测流程,在保持高精度的同时大幅缩短了推理延迟。 --- #### 4. **与其他模型的关系** 值得一提的是,RT-DETRv3 并未完全抛弃经典的 CNN 技术,而是将其与 Transformer 结合起来形成混合架构[^4]。例如,它采用了 YOLO 系列中的 RepNCSP 模块替代冗余的多尺度自注意力层,从而减少了不必要的计算负担。 此外,RT-DETRv3 还借鉴了 DETR 的一对一匹配策略,并在此基础上进行了优化,进一步提升了小目标检测的能力。 --- ### 总结 综上所述,RT-DETRv3 的网络结构主要包括以下几个关键组件:基于 CNN 的辅助分支、自注意力扰动学习策略、共享权重解编码器分支以及混合编码器设计。这些技术创新共同推动了实时目标检测领域的发展,使其在复杂场景下的表现更加出色。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值