rsync+inotify 实现文件双向同步

本文介绍了在面临文件同步需求时,如何利用rsync+inotify实现文件的双向同步,以应对负载均衡场景。通过监控文件读写操作,结合rsync命令进行实时同步。然而,这种方法不适用于多线程删除操作,并可能引发同步冲突和文件丢失问题。为解决这些问题,文章提到可以去掉rsync的`--delete`参数,避免文件误删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

客户要求做了负载均衡,用nginx做完负载均衡后发现文件没有同步,需要做一下文件同步。

本来考虑通过挂载实现,但是这样的话多台服务器负载均衡意义就比较小了,如果主服务器挂掉了,其它的服务器照样不能用。我们存的文件是word和excel,也考虑过使用elasticsearch进行存储,这样不需要考虑服务器的问题,es是单独另外维护的。还考虑过双向挂载,但是这样都需要改代码,我们负责这一块的java开发不太熟悉es相关的包。于是就用了rsync+inotify的方式进行文件双向同步

参考文章

https://www.cnblogs.com/murry/p/11942297.html

https://mp.weixin.qq.com/s/EWxLBHxK-Y9XjhnNDrjtag

原理

脚本原理很简单,使用 inotify 来监视路径下的文件读写操作,当创建、更新、删除等操作进行后,会触发inotify的检测,然后调用rsync命令进行远程文件同步。

注意事项

安装步骤主要是看参考文章里的两篇连接做的。等有时间我再整理一下写一下各个关键参数的含义。这里提一下一些参考文献没有讲过的注意事项。

不可以进行多线程的同步删除操作!

我们的业务刚好不需要进行删除操作,因此无所谓,可以使用这个方法。如果有需要多线程删除操作的人,请不要用这个方法。老老实实地换数据库存储或者挂载吧。

因为做的是双向同步,两台服务器都需要允许增删改,因此两台服务器上都需要运行那个inotify监测后rsync同步的那个脚本。此时会出现至少以下两种问题:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值