RSYNC+inotify(同步和实时监测)

环境

centso
关闭防火墙与selinux

文件同步

数据同步
本机:cp、ln、dd、dump、mount crond
局域网:scp、sftp、samba、ftp、web

弊端:

  1. 本地执行
  2. 完整复制,效率低
  3. 没有实时同步
文件同步工具RSYNC

核心算法:rsync算法
弱校验:32位
强校验:128位

  • Rsync ( remote synchronize )是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用Rsync同步本地硬盘中的不同目录。
  • 这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
  • Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,比较知名的有cwRsync和Sync2NAS
  • RSYNC文件同步同样也没有实时同步功能
总结

优势:
与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。
缺陷:
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过crontab linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify组合出现了!

在这里插入图片描述

客户端和服务器的区别
  • 客户机是发起端,其需要inotify进行监控,服务器是接收端。
    rsync 认证口令文件中每一行指定一个"用户名:口令"对,格式为:
# 以 "#" 开始的行为注释行
username:passwd
# 一般来说口令最好不要超过8个字符。
下载
yum -y install rsync       #服务器与客户端都需要安装rsync服务
or
http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz  

rsync 命令使用

基本格式:rsync [选项] 原始位置 目标位置

-a:归档模式,递归并保留对象属性,等同于 -rlptgoD
-v:显示同步过程的详细(verbose)信息
-z:在传输文件时进行压缩(compress)
-H:保留硬连接文件
-A:保留ACL属性信息
–delete:删除目标位置有而原始位置没有的文件


-r:递归模式,包含目录及子目录中所有文件
-l:对于符号链接文件仍然复制为符号链接文件
-p:保留文件的权限标记-t:保留文件的时间标记
-g:保留文件的属组标记(仅超级用户使用)
-o:保留文件的属主标记(仅超级用户使用)
-D:保留设备文件及其他特殊文件
 --protocol=NUM 强制使用指定的老版本协议
rsync -avz 同步源的一个账户@同步源IP:同步源目录 发起端目录   #下行同步
rsync -acz dal@192.168.154.187:/server /client

请注意,':'会使用ssh来远程连接,而'::'以及'rsync://'则用于以tcp方式连接一个rsync daemon服务器,这个需要SRC(),以及包含模块名字的DEST(目的)

#同步服务器的/server目录里的文件到本地/client目录

 

rsync -avz 发起端目录 同步源的一个账户@同步源IP:同步源目录  #上行同步

rsync -avz /client/rsync dal@192.168.154.187:/server
#同步本地/client目录中的文件到服务器的/server目录
inotify 实时监控
  • Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。
  • 在上面章节中,我们讲到,rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了同步数据的实时性问题。
yum -y install gcc   #安装gcc

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz  #安装inotifu-tools
tar -zxf inotify-tools-3.14.tar.gz   #解压缩包
./configure && make && make install*    #进入解压后目录bing'y

inotifywait:用于持续监控,实时输出结果inotifywatch:用于短期监控,任务完成后再出结果

选项:
-m:表示持续监控
-r:表示递归监控
-q:表示输出数据简化
-e:指定你要监控的哪些数据 例:create(创建),delete(删除),modify(修改),move(移动),多个命令用逗号隔开ctrl+c    #退出

 inotifywait -mrq -e modify,create,move,delete /server/rsync    #实时监控,输出结果

 inotifywatch -mrq -e modify,create,move,delete /server/rsync    #短期监控,任务完成后出结果
4.1.1、基于ssh的实时同步 RSYNC+inotify

利用inotify有输出这一特性可以进行与脚本的配合,实时监控数据的增删,进行同步
**先进行免密认证
然后在服务器端写脚本
在这里插入图片描述

#!/bin/bash
a="/usr/local/bin/inotifywait -mrq -e create /var/www/html/" #监控 /var/www/html/下的create
b="/usr/bin/rsync -avz /server/rsync* 192.168.154.187:/client/rsync"
$a | while read directory event file
do 
	$b
done
sh /tmp/rsync.sh &  #以后台程序执行该脚本
echo "/tmp/rsync.sh " >> /etc/rc.local  #将脚本加入开机自启动
linux下inotify api

inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系统的变化如文件修改、新增、删除等,并可以将相应的事件通知给应用程序。该机制由著名的桌面搜索引擎项目beagle引入用于替代此前具有类似功能但存在诸多缺陷的dnotify。
inotify既可以监控文件,也可以监控目录。当监控目录时,它可以同时监控目录及目录中的各子目录及文件的。此外,inotify 使用文件描述符作为接口,因而可以使用通常的文件I/O操作select、poll和epoll来监视文件系统的变化。

inotify 可以监视的文件系统常见事件包括:

IN_ACCESS:文件被访问
IN_MODIFY:文件被修改
IN_ATTRIB,文件属性被修改
IN_CLOSE_WRITE,以可写方式打开的文件被关闭
IN_CLOSE_NOWRITE,以不可写方式打开的文件被关闭
IN_OPEN,文件被打开
IN_MOVED_FROM,文件被移出监控的目录
IN_MOVED_TO,文件被移入监控着的目录
IN_CREATE,在监控的目录中新建文件或子目录
IN_DELETE,文件或目录被删除
IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己
IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己

通过/proc接口中的如下参数设定inotify能够使用的内存大小:
1、/proc/sys/fs/inotify/max_queue_events
应用程序调用inotify时需要初始化inotify实例,并时会为其设定一个事件队列,此文件中的值则是用于设定此队列长度的上限;超出此上限的事件将会被丢弃;
2、/proc/sys/fs/inotify/max_user_instances
此文件中的数值用于设定每个用户ID(以ID标识的用户)可以创建的inotify实例数目的上限;
3、/proc/sys/fs/inotify/max_user_watches
此文件中的数值用于设定每个用户ID可以监控的文件或目录数目上限;
参考

RSYNC
参数

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值