rsync(三):inotify+rsync监控脚本

#!/bin/bash
######################################################################
# rsync通用实时同步脚本:
# 注意:所有目录结尾必须带/
#
######################################################################
# 源服务器同步目录
src_dir=/opt/src_dir/
# 目标服务器rsync同步目录模块名称
dst_module=dst_module
# 不需要同步的目录,如果有多个,每一行写一个目录,使用相对于同步模块的路径;
exclude_list=/usr/local/inotify/exclude_upload.list
# 目标服务器rsync同步用户名
rsync_user=rsync_user
# 目标服务器rsync同步用户的密码在源服务器的存放路径
rsync_passwd=/etc/rsync_user.password
# 目标服务器ip,多个ip用空格分开
dst_ip=168.0.0.22 168.0.0.23
# 日志文件
log_file=/opt/logs/rsync/dst_module.log
# 使用inotify -mrq 递归查询目录,打印监控事件的信息并始终保持事件监听状态,timefmt指定时间输出的格式,format:打印使用指定的输出类似格式字符串,-e通过此参数可以指定需要监控的事件
# 需要手动修改inotify命令路径及监听的事件
# 切换到需要同步源目录,下面命令监听相关对目录
cd ${src_dir}
# 脚本启动时做一次全量同步
for each_ip in ${dst_ip};do
rsync -avHR --delete --progress --exclude-from=${exclude_list} --password-file=${rsync_passwd} ${src_dir} ${rsync_user}@${each_ip}::${dst_module}
done
# 开始监听目录 close_write,modify,delete,create,move,attrib,
# 创建文件时会有create, modify,close_write 三个事件,修改文件时会有modify,close_write 两个事件,所以只需要监听 close_write事件
# 创建目录时会有create, isdir 两个事件,故监听isdir事件
# 目标服务器一般对attrib属性没有要求,帮助不监听此事件
/usr/local/inotify/bin/inotifywait -mrq --timefmt ‘%Y-%m-%d_%H:%M:%S‘ --format ‘%T %Xe %w%f‘ -e close_write,delete,move,isdir ${src_dir} | while read file
abs_file=`echo $file | awk ‘{print $3}‘`
do
for each_ip in ${dst_ip};do
relative_file=`echo ${abs_file} | awk -F "${src_dir}" ‘{print $2}‘`
rsync -avHR --delete --progress --exclude-from=${exclude_list} --password-file=${rsync_passwd} ${relative_file} ${rsync_user}@${each_ip}::${dst_module}
echo "${relative_file} was rsynced" >> ${log_file} 2>&1
done
done

原文地址:http://blog.51cto.com/zhangrf/2095772

时间: 2024-08-04 23:01:23

rsync(三):inotify+rsync监控脚本的相关文章

配置rsync同步+inotify实时监控

rsync简介Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的"Rsync算法"来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快. 实验环境两台Centos7虚拟机互联互通,一台作为rsync源服务器:192.168.37.129一台作为rsync发起端:192.168.37.134yum仓库已创建inotify软件包:http:

inotify+rsync实时备份总结

第1章 inotify简介 1.1 rsync+inotify组合的起源Rsync(remote sync)远程同步工具,通过rsync可以实现对远程服务器数据增量备份同步,但是rsync自身也有瓶颈,同步数据时,rsync采用核心算法对远程服务器的目标文件进行对比,只进行差异同步,如果服务器文件的数量达到百万甚至是千万量级,那么文件对比将是非常耗时的,而且发生变化的往往只是其中很少的一部分,这是非常低效的方式,Inotify的出现,可以缓解rsync的不足之处,取长补短1.2 Inotify介

inotify事件监控

1.第一个里程碑搭建好备份服务器,rsync服务2.启动inotify1)配置epel源wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo2)检查inotify-tools是否安装rpm -qa inotify-tools安装yum install -y inotify-tools 3)编写inotify实时监控脚本vim inotify.sh#!/bin/sh/usr/bin/inotify

(转)Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步

Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步原文:http://www.summerspacestation.com/linux%E4%B8%8B%E9%80%9A%E8%BF%87rsync%E4%B8%8Einotify%E5%BC%82%E6%AD%A5%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%BA%8B%E4%BB%B6%E7%9B%91%E6%8E%A7%E6%9C%BA%E5%88%B6%E5%AE%9E

centos7.x rsync+inotify实时监控备份

#简介 rsync 官方描述 他是一个快速拷贝工具,可以复制到本地或者远程 Rsync is a fast and extraordinarily versatile file  copying  tool.   It can  copy  locally,  to/from  another  host  over  any remote shell, or to/from a remote rsync daemon.  It offers a  large  number  of  opti

inotify+rsync监控实时同步

监控到Centos7-001机器上的网站内容发生变化时,就同步Centos7-001:/var/www/html/目录到Centos7-002上 Centos7-001上所做的操作 安装 rsync # yum install rsync -y 生成密钥对 [[email protected] ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh

inotify+rsync实现实时同步(附解决crontab中无法执行python脚本的问题)

1.准备环境 # 系统支持的话,下面的目录就会存在 ls /proc/sys/fs/inotify/ rpm -qa inotify-tools yum -y install inotify-tools 2.inotifywait监控目录状态变化 /usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e delete,create,close_write /data # 可以把时间去掉 /usr/bin/

inotify+rsync实现实时同步部署

1.1.架构规划 1.1.1架构规划准备 服务器系统 角色 IP Centos6.7 x86_64 NFS服务器端(NFS-server-inotify-tools) 192.168.1.14 Centos6.7 x86_64 rsync服务器端(rsync热备服务器) 192.168.1.17 1.1.2架构图 2.1 部署前检查 2.1.1 检查rsync热备服务器daemon是否起来 1 [[email protected] data]# lsof -i:873 2 COMMAND PID

rsync结合inotify实现实时同步

背景介绍 中小企业的web应用场景中,web服务器可能是由2台服务器组成,通过DNS的轮询作为负载均衡,此时就需要对2台服务器之间同步的实时性有较高的要求,上一篇文章所介绍的rsync+crontab就不能满足此需求,本章就来介绍使用rsync+inotify完成服务器之间的实时同步 实验说明 操作系统:CentOS6.8,inotify要求内核版本必须为2.6.13以上 源服务器:172.16.10.10/24 目标服务器:172.16.10.20/24 实验目的:将源服务器上的/rsync目

linux inotify+rsync

一.系统环境: centos 6.5_64 更新源服务器:192.168.10.11 目的服务器:192.168.10.10 二.目的服务器配置:192.168.10.10 (rsync服务端): 1.检查rsync是否安装 rpm -qa|grep rsync 如果没有发装,执以下命令进行安装 yum -y install rsync 2.定义rsync配置文件/etc/rsyncd.conf 192.168.10.11: cat >> /etc/rsyncd.conf << E