#!/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
rsync(三):inotify+rsync监控脚本
原创
©著作权归作者所有:来自51CTO博客作者醒悟的笨蛋的原创作品,请联系作者获取转载授权,否则将追究法律责任
rsync(三):inotify+rsync监控脚本
https://blog.51cto.com/zhangrf/2095772
rsync(三):inotify+rsync监控脚本
https://blog.51cto.com/zhangrf/2095772
举报文章
请选择举报类型
内容侵权
涉嫌营销
内容抄袭
违法信息
其他
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
rsync(三):inotify+rsync监控脚本
根据网上的文章,结合本人的需求修改后的脚本。
inotify rsync