linux:rsync + inotifywait 实现【准实时】同步
直接上脚本
#!/bin/bash
export PATH=./sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:$PATH src=/tmp1
#dest=root@192.168.0.18::dest
des=/tmp2
#CMD="rsync -avzcR --password-file=/etc/rsyncd.passwd"
CMD="rsync -avzcR --delete"
LASTFILE=ABC cd ${src} || exit
inotifywait -mrq --format '%,e %w%f' -e create,delete,modify,attrib,close_write,move ./ | while read file
do
echo $(date) : $file EVENT=$(echo $file | awk '{print $1}')
FILE=$(echo $file | awk '{print $2}') if [[ "${LASTFILE}" == "${FILE}" ]] ; then continue; fi ${CMD} $(dirname ${LASTFILE}) ${des} LASTFILE=${FILE}
done
优点:
比网上复杂的实现简单多了:) 且兼顾了效率问题,大大减少无效同步次数
缺点:
如果文件系统写活动不再持续,则最后一个文件的写操作不能触发同步,可能造成问题(解决:可以起一个守护程序,定期执行一个写活动,类似心跳)
备注:
vi inotify.mon.jos #!/bin/bash
export PATH=.:/bin:$/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin base=/tmp/ inotifywait -mr --format '%w%f %e' ${base} | while read event
do
echo ${event}
# 操作redis执行缓存存储,后续处理
echo redis-cli hset ${base} ${event}
redis-cli hset ${base} ${event}
done
linux:rsync + inotifywait 实现【准实时】同步的更多相关文章
- Linux下Rsync+Inotify-tools实现数据实时同步
Linux下Rsync+Inotify-tools实现数据实时同步 注意:下面的三个案例都是rsync 每次都是全量的同步(这就坑爹了),而且 file列表是循环形式触发rsync ,等于有10个文件 ...
- Linux下Rsync+sersync实现数据实时同步
inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...
- CentOS 6.5 rsync+inotify实现数据实时同步备份
CentOS 6.5 rsync+inotify实现数据实时同步备份 rsync remote sync 远程同步,同步是把数据从缓冲区同步到磁盘上去的.数据在内存缓存区完成之后还没有写入到磁盘 ...
- Rsync+inotify实现文件实时同步#附shell脚本
强烈推荐先仔细看此文 https://segmentfault.com/a/1190000002427568 实验环境 centos 7.3 vm2:192.168.221.128 同步服务器 vm1 ...
- centos 6.9使用Rsync+Inotify-tools实现数据实时同步
centos 6.9使用Rsync+Inotify-tools实现数据实时同步 说明: 操作系统:CentOS 6.9 源服务器:192.168.1.222 备份服务器:192.168.1.1.233 ...
- rsync 守护进程及实时同步
目录 rsync 守护进程及实时同步 rsync简介 rsync特性 rsync应用场景 cp命令 scp命令 rsync的传输方式 rsync的传输模式 rsync实际使用 rsync命令 案例 r ...
- rsync+sersync实现文件实时同步
前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...
- 基于OGG的Oracle与Hadoop集群准实时同步介绍
版权声明:本文由王亮原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/220 来源:腾云阁 https://www.qclou ...
- Rsync+sersync实现数据实时同步
前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...
- CentOS7下Rsync+sersync实现数据实时同步
近期公司要上线新项目,后台框架选型我选择当前较为流行的laravel,运行环境使用lnmp. 之前我这边项目tp32+apache,开发工具使用phpstorm. 新建/编辑文件通过phpstorm配 ...
随机推荐
- JavaScript ES6特性
ES6 核心特性 块级作用域 let : 声明的变量存在块级作用域 不会声明提前 ES5 // ES5 // 声明提前 var x = 'outer'; function test(inner) { ...
- ftp命令详解补充
下面我来详细地介绍一个登陆FTP的命令和步骤吧: FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令.熟悉并灵活应用F ...
- 转载:Gitlab备份和恢复操作记录
转载:Gitlab备份和恢复操作记录 包含了备份和数据恢复的操作记录,实验可行 前面已经介绍了Gitlab环境部署记录,这里简单说下Gitlab的备份和恢复操作记录: 1)Gitlab的备份目录路径设 ...
- ESAPI学习笔记
ESAPI是owasp提供的一套API级别的web应用解决方案,本人通过对ESAPI和其提供的demo源码学习发现,关键的不是对其所提供的API的使用,而是其web应用安全防御体系的构建的思 ...
- look-into-oracle-redo
https://fritshoogland.wordpress.com/2018/02/05/a-look-into-oracle-redo-part-2-the-discovery-of-the-k ...
- 使用Maven自动部署Java Web项目到Tomcat问题小记
导读 首先说说自己为啥要用maven管理项目,一个直接的原因是:我在自己电脑上开发web项目,每次部署到服务器上时都要经历如下步骤: 首先在Eclipse里将项目打包成war包 将服务器上原来的项目文 ...
- ERROR: While executing gem … (Gem::RemoteFetcher::FetchError)
原文地址:https://www.zfanw.com/blog/error-while-executing-gem-gem-remote-fetch-error.html 我对命令行下安装 gem 包 ...
- EBS 由数据库端找到对应的前台URL地址
SELECT home_url FROM icx_parameters; SELECT profile_option_value FROM fnd_profile_option_values ...
- 更改mac系统语言及其软件
如图,把所用语音置顶 https://support.apple.com/zh-cn/HT202036 1.firefox需要下载英文版,同时可以保留中文版,两个不能同时启动.如果你只是为了切换浏览器 ...
- Java8 利用Lambda处理List集合循环给另外一个List赋值过滤处理
1.利用stream().forEach()循环处理List; List<String> list = Lists.newArrayList();//新建一个List 用的google提供 ...