Cetnos环境下inotify+rsync实时同步
一.介绍
1.1 rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
1.2 Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化
1.3 inotify+rsync结合,可以做到远程数据的实时同步,以下实验使用rsync客户端+inotify实时将数据同步到rsync服务端
二.环境准备
2.1 系统:CentOS6.5
rsync客户端:192.168.55.229
rsync服务端:192.168.55.219
2.2 rsync和inotify安装:
# yum install rsync# yum install inotify-tools
三.rsync服务器配置
3.1 编辑rsync服务端配置文件
# vim /etc/rsyncd.conf log file = /var/log/rsyncd.log pid file = /usr/local/rsync/var/rsyncd.pid lock file = /usr/local/rsync/var/rsyncd.lock secrets file = /usr/local/rsync/etc/rsyncd.pas read only = no hosts allow = 192.168.55.0/24 list = yes uid = nobody gid = nobody use chroot = no max connections = 4 [bak] //模块 path = /bak //模块目录 comment = nfs bak //描述信息 auth users = bak //rsync同步需要的认证用户
3.2 rsync服务器创建密码文件
# vim rsyncd.pas bak:338912 //格式为用户名:密码,文件权限为600
3.3 rsync服务启动
# /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
四.rsync客户端配置
4.1 编辑rsync客户端同步需要的密码文件
# vim /etc/rsync.pas 338912 //rsync客户端只需要认证用户的密码,文件权限为600
4.2 命令行验证rysnc客户端到rsync服务端同步功能
# rsync -avzc --progress --delete --password-file=/etc/rsync.pas /tmp/test/ bak@192.168.55.219::bak sending incremental file list ./ test/ sent 223 bytes received 15 bytes 476.00 bytes/sec total size is 394699 speedup is 1658.40
注:如果有“failed: Permission denied (13)”这种错误,需要给与服务端配置文件中用户nobody对模块所在目录有写权限
4.3 使用inotify+rsync脚本实现文件的实时检测并同步
脚本内容如下:
#!/bin/bash src=/tmp/test/ des=bak rsync_passwd_file=/etc/rsync.pas ip1=192.168.55.219 user=bak cd ${src} /usr/bin/inotifywait -mrq --format '%Xe %w%f' -e modify,create,delete,attrib,close_write,move ./ | while read file doINO_EVENT=$(echo $file | awk '{print $1}') # 把inotify输出切割 把事件类型部分赋值给INO_EVENTINO_FILE=$(echo $file | awk '{print $2}') # 把inotify输出切割 把文件路径部分赋值给INO_FILEecho "-------------------------------$(date)------------------------------------"echo $file#增加、修改、写入完成、移动进事件#增、改放在同一个判断,因为他们都肯定是针对文件的操作,即使是新建目录,要同步的也只是一个空目录,不会影响速度。if [[ $INO_EVENT =~ 'CREATE' ]] || [[ $INO_EVENT =~ 'MODIFY' ]] || [[ $INO_EVENT =~ 'CLOSE_WRITE' ]] || [[ $INO_EVENT =~ 'MOVED_TO' ]];thenecho 'CREATE or MODIFY or CLOSE_WRITE or MOVED_TO'rsync -avzcR --password-file=${rsync_passwd_file} $(dirname ${INO_FILE}) ${user}@${ip1}::${des}fi#删除、移动出事件if [[ $INO_EVENT =~ 'DELETE' ]] || [[ $INO_EVENT =~ 'MOVED_FROM' ]];thenecho 'DELETE or MOVED_FROM'rsync -avzR --delete --password-file=${rsync_passwd_file} $(dirname ${INO_FILE}) ${user}@${ip1}::${des}fi#修改属性事件 指 touch chgrp chmod chown等操作if [[ $INO_EVENT =~ 'ATTRIB' ]]thenecho 'ATTRIB'if [ ! -d "$INO_FILE" ] # 如果修改属性的是目录 则不同步,因为同步目录会发生递归扫描,等此目录下的文件发生同步时,rsync会顺带> 更新此目录。thenrsync -avzcR --password-file=${rsync_passwd_file} $(dirname ${INO_FILE}) ${user}@${ip1}::${des}fifi done
注:为做到实时同步,就必须要减少rsync对目录的递归扫描判断,尽可能的做到只同步inotify监控到已发生更改的文件。结合rsync的特性,所以该脚本是分开判断来实现一个目录的增删改查对应的操作,已经在测试机测试成功。因为inotify只在启动时会监控目录,他没有启动期间的文件发生更改,它是不知道的,所以可以在启动该脚本前做一次rsync全量同步,启动脚本后使用计划任务定时做rsync全量同步,防止各种意外遗漏,保证数据一致。
此脚本参考链接:http://www.ttlsa.com/web/let-infotify-rsync-fast/
五.rsync和inotify常用参数解释
5.1 rsync常用参数说明
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性
-c, --checksum 打开校验开关,强制对文件传输进行校验
--delete 删除那些DST中SRC没有的文件
-H, --hard-links 保留硬链接
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀
--backup-dir 将备份文件(如~filename)存放在在目录下
-z, --compress 对备份的文件在传输时进行压缩处理
5.2 inotify常用参数说明
-m 要持续监视变化
-r 使用递归形式监视目录
-q 减少冗余信息,只打印出需要的信
--format 指定文件变化的详细信息
转载于:https://blog.51cto.com/liubin0505star/1830615
Cetnos环境下inotify+rsync实时同步相关推荐
- 真正的inotify+rsync实时同步 彻底告别同步慢
真正的inotify+rsync实时同步 彻底告别同步慢 我们公司在用inotify+rsync做实时同步,来解决分布式集群文件一致性的问题.但当web文件越来越多(百万级数量html,jpg等小 文 ...
- inotify+rsync实时同步 彻底告别同步慢
背景 公司在用inotify+rsync做实时同步,来解决分布式集群文件一致性的问题.但当web文件越来越多(百万级数量html,jpg等小 文件),同步就越来越慢,根本做不到实时,按照网上的调优方法 ...
- inotify+rsync实时同步服务部署
环境:服务端 192.168.6.30(安装 rsync) /data/share :客户端 192.168.6.38(安装 inotufy+rsync)/nfsbackup 主流程:https:// ...
- 企业级别应用--rsync远程同步(配置 rsync 备份源、rsync 下行和上行、inotify+rsync 实时备份)
文章目录 一.配置 rsync 源服务器 1.1 rsync简介 1.2 rsync特点 1.3 配置 rsync 同步源 1.4 测试rsync功能 下行同步的三种方式 二.inotify+rsyn ...
- 【Linux下Inotify + Rsync文件实时同步】
Linux下Inotify + Rsync文件实时同步 一.使用前言* 随着公司业务的发展,单web服务器不能满足用户的访问,需要增加多台web服务器实现均衡高可用性访问.为了统一各web服务器之间的 ...
- rsync+inotify实现实时同步案例详解
rsync+inotify实现实时同步案例详解 转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也 ...
- rsync远程同步及结合inotify实现实时同步
rsync远程同步及结合inotify实现实时同步 rsync 命令格式 常用选项 实现免交互 rsync同步配置 环境准备 同步源编写rsync配置文件 创建数据文件 确保读取权限 开启服务 sla ...
- 运维之道 | Linux rsync 文件同步、Inotify远程实时同步
Linux rsync 文件同步服务器 与传统的cp.scp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的 ...
- rsync + inotify 实现实时同步
rsync + inotify 实现实时同步 rsync 简介 Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.并且可以不进行改变原有数据的属性信息,实现 ...
最新文章
- Linux 文件系统权限(一)
- 【学习笔记】juc并发学习+关于锁的面试题
- ABAP Pattern usage - define own custom user exit
- Google Shopping Feed 数据整理之XML格式实现方法
- gitlab去掉邮箱验证功能
- Android 功耗(14)----Android功耗 问题debug处理
- QQ邮箱发送邮件,出现mail from address must be same as authorization user错误
- 三种GDB类型的转换后字段类型的变化
- 《吴忠与富富平》之一:秦统一前后的吴忠及秦汉对吴忠地区的开发
- 小白如何搭建自己的网络服务器
- 普惠联接,让人类诗意地栖居在大地上
- APP推广|小众APP推广渠道,总有适合你的。
- Get IT技能百科库 50个领域轻松直达
- 【Vic的小课堂】Unity实现游戏功能(1)—矩形框选
- 和合共生,聚势谋远——云创大数据教育渠道大会隆重举行!
- 最新最简便解决 teamviewre检测为商业用途 的方法
- Java导出Excel文档(poi),并上传到腾讯云对象存储服务器
- python从1 2 3 4 1000_Python语句序列“a=(1,2,3,None,(),[]);print(len(a))”的运行结果是()。 (2.0分)_学小易找答案...
- 学习编程的基础(学编程的基础要具备什么)
- 物理学与计算机相关参考文献,中国科学技术大学 计算物理学 教材与参考文献...
热门文章
- win7卸载显卡及对应驱动后桌面分辨率不对以及鼠标键盘无反应
- 使用JMeter 进行接口并发性能测试
- antd树型选择控件选择父级_element的tree树形菜单回显、父级半勾选
- java 3500_学java开发3500价位的笔记本该侧重那些方面?
- android开发图片格式,Android程序开发如何处理图像格式类及图像转换
- solve stiffness matrix in matlab
- MATALB程序调试
- jupyetr notebook添加anaconda虚拟环境内核(tensorflow+pytorch)
- 快速制作BP神经网络结构示意图
- sorted()函数快速实现字典输出