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 监控文件并同步相关推荐

  1. MySQL :rsync+sersync文件实时同步

    文章目录 1. rsync是什么 rsync+sersync文件实时同步 一:环境 二:备份服务器操作 三:数据源服务器操作 安装rsync客户端软件 安装sersync工具,实时触发rsync进行同 ...

  2. CentOS 5.4 rsync+inotify配置触发式(实时)文件远程同步

    点评:Inotify 是文件系统事件监控机制,作为 dnotify 的有效替代.dnotify 是较早内核支持的文件监控机制.Inotify 是一种强大的.细粒度的.异步的机制,它满足各种各样的文件监 ...

  3. inotify + rsync 打造文件实时同步

    rsync 是Linux 下的一个文件同步利器,以高效的增量传输而闻名,适用于同步,备份等多个场合.几乎所有的Linux 发行版都收录了该软件,安装非常容易,以CentOS 6.4为例: 1 yum  ...

  4. lsyncd和rsync实现文件实时同步

    环境要求: 源主机和目的主机都要安装rsync,需要检测文件变化的主机安装lsyncd rsync安装方式: yum install epel-release -y && yum in ...

  5. inotify用法简介及结合rsync实现主机间的文件实时同步

    一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系 ...

  6. linux如何运行sh监控文件夹,如何使用Shell进行文件监控?

    导读 文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用rsync命令将变化的文件同步.(可用于代码自动发布) inotify 是linux内核的一个特性,在内核 2.6 ...

  7. Shell 监控文件变化

    作者:youxin 链接:https://www.cnblogs.com/youxin/p/13816303.html 文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用 ...

  8. rsync+inotify实现服务器之间文件实时同步--转

    之前做了"ssh信任与scp自动传输脚本"的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停 ...

  9. Inotify+Rsync实现linux文件实时同步

    公司一套系统的同步使用的donotify,不能实现子目录的实时同步,通过查资料,发现inotify可以实现子目录的实时同步,以下为笔记. 一.介绍 Inotify 是文件系统事件监控机制,作为 dno ...

最新文章

  1. @apioperation 作用_石莲子的功效与作用分享
  2. 从 AlphaGo 到具有人类智慧的 AI 究竟有多远?François Chollet 有了一些新想法
  3. CTFshow php特性 web95
  4. loam_livox
  5. VS中怎样对C#项目进行单元测试
  6. HDU 1561 The more ,The Better
  7. Delphi编译报错对照表
  8. docker 查看容器_Docker介绍
  9. python度量学习_Python的差异度量
  10. epoll nio区别_高性能网络服务器编程:为什么linux下epoll是最好,Netty要比NIO.2好?...
  11. UDP与TCP对比,TCP保证可靠性传输的详细说明
  12. php mysql搜索算法_PHP实现深度优先搜索算法(DFS,Depth First Search)详解
  13. Java EE之JSP
  14. 在unity中使用Excel表格
  15. Python3迅雷vip账号批量抓取导入excel中
  16. 矿物质防火电缆对于水的防护也很重要
  17. 如何申请成为企业微信,并成为第三方服务商
  18. 进击的“懒人经济”,快手又迎来一个万亿蓝海市场
  19. oracle19c创建表空间,Oracle19c 创建表空间
  20. HTML语言教程(完整版)

热门文章

  1. 解决word、excel、ppt文件图标是空白的问题
  2. 【白皮书分享】2020胡润大健康白皮书-胡润百富.pdf(附下载链接)
  3. AutoML在推荐系统协同过滤中的探索与发现(附交流视频和PPT下载链接)
  4. PyTorch系列入门到精通——模型保存与加载
  5. python深度学习第一讲——用python写神经网络
  6. oracle ora-01476: 除数为 0,Oracle常见错误:ORA-01403 的根本原因和解决方案
  7. 本题要求实现一个求整数的逆序数的简单函数。_回溯算法:求组合总和(二)...
  8. 大数据在各个行业的应用_大数据的应用领域有哪些
  9. 从0成为Facebook广告高手系列教程,Facebook广告数据分析上篇
  10. 强化学习 ---baselines项目之 Atari游戏的网络结构解析