linux使用inotify+rsync实现监控目录变化
1. 安装inotify-tools
下载插件
从阿里镜像站中下载相关插件,按照“centos”、“el7”、“x86_64”等标签进行筛选,例如inotify-tools-devel-3.14-9.el7.x86_64.rpm
将插件上传至服务器
使用root身份安装该插件
yum -y install inotify-tools-devel-3.14-9.el7.x86_64.rpm
2. 源端、目的端安装rsync
下载插件
从阿里镜像站中下载相关插件,按照“centos”、“el7”、“x86_64”等标签进行筛选,例如rsync-3.1.2-10.el7.x86_64.rpm
将插件上传至服务器
使用root身份安装该插件
yum -y install rsync-3.1.2-10.el7.x86_64.rpm
3. 目的端配置rsync
使用root登录目的服务器编辑rsync配置文件
vi /etc/rsyncd.conf
编辑内容并保存
uid = root gid = root port = 873 address = 10.20.36.160 hosts allow = 10.20.36.223 10.20.36.36 read only = yes max connections = 10 [datadest] comment = web content path = /tmp/dest ignore errors
- /tmp/dest目录需要提前建立并设置好权限
- [datadest] 自定义模块名,rsync通过模块定义同步的目录,可定义多个,本示例中模块名称命名为'datadest'
- uid=0 表示使用root用户
- 使用hosts allow,以ip作为信任,不需要用户名/密码验证,如果使用auth users/secrets file,则客户端也需要使用用户名/密码或者指定密码文件
启动后台服务
rsync --daemon
设置开机启动
systemctl enable rsyncd.service
启动服务
systemctl start rsyncd.service
查询当前服务状态
systemctl status rsyncd.service
4. 源端编写脚本,监控目录变化并同步至目的端
#!/bin/bash inotifywait -mrq /tmp/source -e create | while read events do rsync -avz --delete /tmp/source root@10.20.36.160::datadest done
(本例中监控文件创建动作)
更改脚本权限
chmod 755 ino.sh
执行该脚本
./ino.sh
(传输失败,未完待续)
参考资料:
https://www.ruanyifeng.com/blog/2020/08/rsync.html
https://www.cnblogs.com/f-ck-need-u/p/7220009.html
https://www.cnblogs.com/f-ck-need-u/p/7220009.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!