inotify java maven_inotifywait + rsync 监控文件并同步
1、安装 rsync 和 inotify
yum install -y rsync inotify-tools
2、编写监控脚本
#!/usr/bin/env bash
app_name=cms
src=/dev/${app_name}/ # 需要同步的源路径
des=/dev/${app_name}/ # 目标服务的路径
ip1=172.20.42.20 # 目标服务器
user=root # 用户名
backup_path="/opt/${app_name}"
backup_file() {
# 每次同步之后做一次备份
if [ ! -d "$backup_path" ]; then
mkdir -p "$backup_path"
fi
cp -a /dev/${app_name} ${backup_path}/${app_name}-$(date +%F-%H-%M)
# 删除备份目录下的旧文件,只保留20个备份
# rm -rf $(ls -t ${backup_path}| tail -n +22)
# */1 * * * * rm -rf $(ls -t /opt/cms-test2 | tail -n +22)
}
cd ${src}
# 此方法中,由于rsync同步的特性,这里必须要先cd到源目录,inotify再监听 ./ 才能rsync同步后目录结构一致
inotifywait -mrq --format '%Xe %w%f' -e modify,create,delete,attrib,close_write,move ./ | while read file; do
INO_EVENT=$(echo $file | awk '{print $1}') # 把inotify输出切割 把事件类型部分赋值给INO_EVENT
INO_FILE=$(echo $file | awk '{print $2}') # 把inotify输出切割 把文件路径部分赋值给INO_FILE
echo "-------------------------------$(date)------------------------------------"
echo $file
# 增加、修改、写入完成、移动进事件
if [[ $INO_EVENT =~ 'CREATE' ]] || [[ $INO_EVENT =~ 'MODIFY' ]] || [[ $INO_EVENT =~ 'CLOSE_WRITE' ]] || [[ $INO_EVENT =~ 'MOVED_TO' ]]; then # 判断事件类型
echo 'CREATE or MODIFY or CLOSE_WRITE or MOVED_TO'
rsync -avzcR --exclude={log,mcms.log,ms-cms-jenkins.jar,*.yml,Dockerfile,ehcache.xml} $(dirname ${INO_FILE}) ${user}@${ip1}:${des}
backup_file
fi
# 删除、移出事件
if [[ $INO_EVENT =~ 'DELETE' ]] || [[ $INO_EVENT =~ 'MOVED_FROM' ]]; then
echo 'DELETE or MOVED_FROM'
rsync -avzR --exclude={log,mcms.log,ms-cms-jenkins.jar,*.yml,Dockerfile,ehcache.xml} --delete $(dirname ${INO_FILE}) ${user}@${ip1}:${des}
backup_file
fi
# 修改属性事件 指 touch chgrp chmod chown 等操作
if [[ $INO_EVENT =~ 'ATTRIB' ]]; then
echo 'ATTRIB'
if [ ! -d "$INO_FILE" ]; then # 如果修改属性的是目录 则不同步,因为同步目录会发生递归扫描,等此目录下的文件发生同步时,rsync会顺带更新此目录。
rsync -avzcR --exclude={log,mcms.log,ms-cms-jenkins.jar,*.yml,Dockerfile,ehcache.xml} $(dirname ${INO_FILE}) ${user}@${ip1}:${des}
backup_file
fi
fi
done
3、后台运行
nohup bash /usr/local/sync.sh >> /var/log/sync.log 2>&1 &
inotify java maven_inotifywait + rsync 监控文件并同步相关推荐
- MySQL :rsync+sersync文件实时同步
文章目录 1. rsync是什么 rsync+sersync文件实时同步 一:环境 二:备份服务器操作 三:数据源服务器操作 安装rsync客户端软件 安装sersync工具,实时触发rsync进行同 ...
- CentOS 5.4 rsync+inotify配置触发式(实时)文件远程同步
点评:Inotify 是文件系统事件监控机制,作为 dnotify 的有效替代.dnotify 是较早内核支持的文件监控机制.Inotify 是一种强大的.细粒度的.异步的机制,它满足各种各样的文件监 ...
- inotify + rsync 打造文件实时同步
rsync 是Linux 下的一个文件同步利器,以高效的增量传输而闻名,适用于同步,备份等多个场合.几乎所有的Linux 发行版都收录了该软件,安装非常容易,以CentOS 6.4为例: 1 yum ...
- lsyncd和rsync实现文件实时同步
环境要求: 源主机和目的主机都要安装rsync,需要检测文件变化的主机安装lsyncd rsync安装方式: yum install epel-release -y && yum in ...
- inotify用法简介及结合rsync实现主机间的文件实时同步
一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系 ...
- linux如何运行sh监控文件夹,如何使用Shell进行文件监控?
导读 文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用rsync命令将变化的文件同步.(可用于代码自动发布) inotify 是linux内核的一个特性,在内核 2.6 ...
- Shell 监控文件变化
作者:youxin 链接:https://www.cnblogs.com/youxin/p/13816303.html 文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用 ...
- rsync+inotify实现服务器之间文件实时同步--转
之前做了"ssh信任与scp自动传输脚本"的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停 ...
- Inotify+Rsync实现linux文件实时同步
公司一套系统的同步使用的donotify,不能实现子目录的实时同步,通过查资料,发现inotify可以实现子目录的实时同步,以下为笔记. 一.介绍 Inotify 是文件系统事件监控机制,作为 dno ...
最新文章
- @apioperation 作用_石莲子的功效与作用分享
- 从 AlphaGo 到具有人类智慧的 AI 究竟有多远?François Chollet 有了一些新想法
- CTFshow php特性 web95
- loam_livox
- VS中怎样对C#项目进行单元测试
- HDU 1561 The more ,The Better
- Delphi编译报错对照表
- docker 查看容器_Docker介绍
- python度量学习_Python的差异度量
- epoll nio区别_高性能网络服务器编程:为什么linux下epoll是最好,Netty要比NIO.2好?...
- UDP与TCP对比,TCP保证可靠性传输的详细说明
- php mysql搜索算法_PHP实现深度优先搜索算法(DFS,Depth First Search)详解
- Java EE之JSP
- 在unity中使用Excel表格
- Python3迅雷vip账号批量抓取导入excel中
- 矿物质防火电缆对于水的防护也很重要
- 如何申请成为企业微信,并成为第三方服务商
- 进击的“懒人经济”,快手又迎来一个万亿蓝海市场
- oracle19c创建表空间,Oracle19c 创建表空间
- HTML语言教程(完整版)
热门文章
- 解决word、excel、ppt文件图标是空白的问题
- 【白皮书分享】2020胡润大健康白皮书-胡润百富.pdf(附下载链接)
- AutoML在推荐系统协同过滤中的探索与发现(附交流视频和PPT下载链接)
- PyTorch系列入门到精通——模型保存与加载
- python深度学习第一讲——用python写神经网络
- oracle ora-01476: 除数为 0,Oracle常见错误:ORA-01403 的根本原因和解决方案
- 本题要求实现一个求整数的逆序数的简单函数。_回溯算法:求组合总和(二)...
- 大数据在各个行业的应用_大数据的应用领域有哪些
- 从0成为Facebook广告高手系列教程,Facebook广告数据分析上篇
- 强化学习 ---baselines项目之 Atari游戏的网络结构解析