基于inotify-tools和rsync实现文件实时同步
前言
系统:centos 7
inotify-tools版本:3.14(3.22版本测试有问题,所以找的比较旧的一版)
主机IP:
- 192.168.137.7(服务端,接收同步文件)
- 192.168.137.8(客户端,发送同步文件)
github下载inotify-tools的源码压缩包
需求:客户端的/home/testpath目录和服务端的/home/testpath同步。客户端目录有变动时,同步复制到服务端
流程逻辑:inotify-tools基于linux的inotify事件,监听文件是否有发生增删改查,如果有,就通过rsync将文件发到另一台服务器。
编译安装inotify
- 安装依赖
yum install -y autoconf automake libtool make gcc gcc-c++ make
- 客户端解压,编译,安装
tar xf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./autogen.sh
./configure --prefix=/home/apps/inotify-tools
make
make install
# inotifywait: 仅执行阻塞,等待inotify事件
# inotifywatch: 收集关于被监视文件系统的统计数据
- 两台主机都安装rsync
yum install -y rsync
- 服务端编辑rsync配置文件 /etc/rsyncd.conf
uid = root
gid = root
usechroot = no
max connections = 20
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[testpath]
path = /home/testpath
ignore errors
read only = false
writeonly = false
list = false
hosts allow = 192.168.137.8
auth users = backuser
secrets file = /etc/rsync.pass
- 编辑用户文件 /etc/rsync.pass,编辑完成后修改权限:chmod 600 /etc/rsync.pass
backuser:123
- 客户端编辑 /etc/rsync.pass,编辑完成后修改权限:chmod 600 /etc/rsync.pass
123
- 客户端测试rsync传输
rsync -a --progress /home/tmp/* backuser@192.168.137.7::testpath --password-file=/etc/rsync.pass
- 编辑inotify.sh脚本
#!/bin/bash
# 避免空变量
set -u
# 待同步目录
src=/home/testpath
# 监听修改、删除、添加、改属性事件
/home/apps/inotify-tools/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -emodify,delete,create,attrib $src | while read file
do
rsync -zrtopg --progress $src/* backuser@192.168.137.7::testpath --password-file=/etc/rsync.pass
echo "$(date) rsync event occur" >> /home/scripts/inotify.log 2>&1
done
- 赋予可执行权限并运行。
chmod +x inotify.sh
./inotify.sh &
- 测试两台服务器之间是否能实时同步
补充
- inotifywait选项
-h: 帮助信息
-m: 接收到事件时不退出。默认接收到一个事件后即退出
-r: 监视一个目录下的所有子目录
-q: 安静模式
-e: 指定监听的事件
-timefmt: 指定时间格式,用于format的%T
--format: 指定输出格式
%T: 时间格式
%f: 发生事件的文件
%w: 发生事件的目录
%e: 发生的事件
- inotifywait可监听事件,配合-e选项
access: 文件读取
modify: 文件修改
attrib: 文件属性修改,如时间、权限
delete: 文件或目录删除
create: 文件或目录创建
基于inotify-tools和rsync实现文件实时同步的更多相关文章
- rsync+inotify-tools文件实时同步
rsync+inotify-tools文件实时同步案例 全量备份 Linux下Rsync+sersync实现数据实时同步完成. 增量备份 纯粹的使用rsync做单向同步时,rsync的守护进程是运行在 ...
- rsync+inotify 实现服务器之间目录文件实时同步(转)
软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文 ...
- Rsync+sersync文件实时同步
一.为什么要用Rsync+sersync架构1.sersync是基于Inotify开发的,类似于Inotify-tools的工具2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改 ...
- rsync + inotify 打造多server间文件实时同步
在上篇文章ssh无password登陆server的基础之上.能够利用rsync + Inotify 在多server间实现文件自己主动同步. 例如以下測试机基于三台server做的.内网IP分别例如 ...
- Linux服务器间文件实时同步的实现
使用场景 现有服务器A和服务器B,如果服务器A的指定目录(例如 /home/paul/rsync/ )中的内容发生变更(增删改和属性变更),实时将这些变更同步到服务器B的目标目录中(例如 /home/ ...
- (转)Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步
Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步原文:http://www.summerspacestation.com/linux%E4%B8%8B%E9%80 ...
- inotify用法简介及结合rsync实现主机间的文件实时同步
一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系 ...
- Centos 6.5 rsync+inotify 两台服务器文件实时同步
rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源 ...
- Rsync + inotify 实现文件实时同步
Rsync 用来实现触发式的文件同步. Inotify-tools是一套组件,Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等 ...
- rsync+inotify百万级文件实时同步
实验环境:Centos7.4 目的:将源服务器的文件实时同步至目标服务器 源服务器:10.11.1.107 目标服务器:10.11.1.106 分别在两个节点安装rsync yum -y instal ...
随机推荐
- selenium测试用例的编写,隐式等待与显式等待的编写
开头 用配置好的 selenium 进行一个简单的测试用例的编写,可以参考allure的美化这一遍博文 https://www.cnblogs.com/c-keke/p/14837766.html 代 ...
- 2022-07-10:以下go语言代码输出什么?A:A,B;B:A,C:A,fatal error;D:fatal error... func main() { var m sync.Mute
2022-07-10:以下go语言代码输出什么?A:A,B:B:A,C:A,fatal error:D:fatal error- func main() { var m sync.Mutex fmt. ...
- 2022-06-14:数组的最大与和。 给你一个长度为 n 的整数数组 nums 和一个整数 numSlots ,满足2 * numSlots >= n 。总共有 numSlots 个篮子,编号为 1
2022-06-14:数组的最大与和. 给你一个长度为 n 的整数数组 nums 和一个整数 numSlots ,满足2 * numSlots >= n .总共有 numSlots 个篮子,编号 ...
- vue全家桶进阶之路49:Vue3 环境变量
vue3 环境变量 在Vue3中,可以通过环境变量来管理应用程序中的配置.这些配置可以包括后端API的URL.API key.跟踪ID等等.在不同的开发.测试.生产环境中使用不同的配置是非常有用的.V ...
- pytorch学习笔记——timm库
当使用ChatGPT帮我们工作的时候,确实很大一部分人就会失业,当然也有很大一部分人收益其中.我今天继续使用其帮我了解新的内容,也就是timm库.毫不夸张的说,Chat GPT比百分之80的博客讲的更 ...
- POJ - 2251 地下城主
You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of un ...
- 手动封装XMLHttpRequest
自己动手封装一个XMLHttpRequest, 兼容低版本浏览器,自动检测post与get 类型请求,自动参数拼接,参数类型辨别 <!DOCTYPE html> <html> ...
- django购物车的实现
1 购物车的实现问题思路 购物车需求分析: 1 未登陆和已登陆都保存到用户的购物车数据. 2 用户可以对购物车进行增删改查: 3 购物车有选择状态,只有选中的状态才能生成订单: 4 用户登陆时,合并c ...
- 二分查找法upper版(找大于某个值的最小下标)递归+非递归版
需求:比如说查询一个班级大于60分的最低分等等. 思路与二分法基本相同,只不过是对比的逻辑发生了一些小变化,这里所说的上界就是指大于某个值的最小下标. 当mid < target :说明 tar ...
- Paimon读取流程
查询模式 先来看看官网关于Paimon查询模式的说明 可以看到查询模式围绕snapshot展开, 而snapshot分了两种一种是Last compact snapshot和 last snapsho ...