Rsync结合Inotify 实时同步配置(更新之前繁琐的传输认证)
今天一位CU的友友根据之前介绍过 通过rsync+inotify-tools+ssh实现触发式远程实时同步 配置分发系统,但是由于认证繁琐,很容易出错,我今天重新整理了下,用rsync密码文件pas认证的方式进行同步。
系统环境:
10.10.10.20 (发布文件服务器) 源目录:/home/httpd/20dir
10.10.10.21 (同步镜像文件服务器) 目标目录:/home/httpd/21dir
实现目标:目录/home/httpd/20dir 通过Rysnc实时同步到/home/httpd/21dir目录
软件下载
rysnc的主页地址为:
http://rsync.samba.org/
目前最新版本为Rsync version 3.0.9。
一、配置Rysnc服务 ,实现文件密码文件认证传输。
首先在10.10.10.21上搭建rsync服务,设置同步的目录
1、在10.10.10.21上下载、安装rsync:
#tar zxvf rsync-3.0.9.tar.gz
#cd rsync-3.0.9
#./configure --prefix=/usr/local/rsync
#make
#make install
2、配置rsync
server服务:
#vim /etc/rsyncd.conf
uid =
root //运行RSYNC守护进程的用户
gid =
root //运行RSYNC守护进程的组
use
chroot = no //不使用chroot
max
connections=0 // 最大连接数无限制
log
file=/var/log/rsyncd.log //日志记录文件的存放位置
pid
file=/var/run/rsyncd.pid //锁文件的存放位置
lock
file=/var/run/rsyncd.lock //pid文件的存放位置
[21dir] //这里是认证的模块名,在client端需要指定
path = /home/httpd/21dir/ //需要做镜像的目录,不可缺少
comment =
rsync from 10.10.10.20
read only
= no // 非只读
list = on //不允许列文件
auth
users = rsyncuser //认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /etc/21.pas //密码和用户名对比表,密码文件自己生成
3、设置密码文件secrets
file ,编辑/etc/21.pas
#vim /etc/21.pas
rsyncuser:123456 //用户名和密码,用”/” 隔开
并且设置600文件属性:
#chomd 600 /etc/21.pas
4、启动Rsync服务:
#/usr/local/rsync/bin/rsync
--port=873 --address=10.10.10.21 –daemon
其次在10.10.10.20分发服务器上测试同步:
1、添加密码文件认证:
#vim /etc/21.pas
123456 //对应10.10.10.21 密码即可
并且设置600文件属性:
#chomd
600 /etc/21.pas
2、测试
/usr/bin/rsync -avH --delete --progress --password-file=/etc/21.pas /home/httpd/21dir rsyncuser @10.10.10.21::21dir
二、安装配置inotify 服务
在10.10.10.20 上搭建inotify 服务
1、下载安装
# wget http://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
# tar xzvf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.13
# ./configure --prefix=/usr/local/inotify
# make
# make install
2、创建inotify_rsync.sh脚本
# vim inotify_rsync.sh
#!/bin/sh
#date:2013-1-11
#function:rysnc
10.10.10.20 to 10.10.10.21
if [ ! -f
/etc/21.pas ];then
echo "123456">/etc/21.pas
/bin/chmod 600 /etc/1.pas
fi
log=/usr/local/inotify/logs/rsync.log
src="/home/httpd/20dir/"
host="10.10.10.21"
module="21dir"
/usr/local/inotify/bin/inotifywait
-mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e
close_write,modify,delete,create,attrib $src | while read DATE TIME DIR FILE; do
FILECHANGE=${DIR}${FILE}
/usr/bin/rsync -avH --delete --progress --password-file=/etc/21.pas
$src --exclude-from="/usr/local/inotify/logs/rules.txt" rsyncuser@$host::$module
&
echo "At ${TIME} on ${DATE}, file
$FILECHANGE was backed up via rsync" >> $log
done
相关注解如下:
/usr/local/bin/inotifywait -mrq -e
modify,delete,create,attrib ${src}
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
-e close_write,modify,delete,create,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件
/usr/bin/rsync -avH --delete --progress
--password-file
-a 存档模式
-H 保存硬连接
-delete 删除于多余文件
--password-file 密码文件
今天参数可以man rsync
要排除同步某个目录时,为rsync添加--exculde=PATTERN参数,注意,路径是相对路径,具体查看man rsync。
要排除某个目录的事件监听的处理时,为inotifywait添加--exclude或--excludei参数,具体查看man inotifywait。
--exclude-from="/usr/local/inotify/logs/rules.txt" 可以匹配过滤文件:
如排除包括 .svn的文件:
#cat /usr/local/inotify/logs/rules.txt
- *.svn*
inotifywait 命令产生三个返回值,分别是“日期,时间,文件” 这3个返回值会做为参数传给read,因此脚本中的“while read D E F” 写法细化了返回值。
赋予脚本可执行权限
#chmod +x inotify_rsync.sh
运行
#./ inotify_rsync.sh &
转载地址:http://blog.chinaunix.net/uid-25266990-id-3522465.html
Rsync结合Inotify 实时同步配置(更新之前繁琐的传输认证)的更多相关文章
- centos6.6配置rsync+sersync实现实时同步分布式多客户端分发同步
1.sersync项目: sersync项目利用inotify与rsync技术实现对服务器数据实时同步到解决方案,其中inotify用于监控sersync所在服务器上文件系统的事件变化,rsync是目 ...
- 配置rsync+inotify实时同步
与上一篇同步做 配置rsync+inotify实时同步 1:调整inotify内核参数 在linux内核中,默认的inotify机制提供三个调控参数:max_queue_events.max_user ...
- rsync+inotify实时同步环境部署记录
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足.首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件 ...
- rsync+inotify实时同步方案
rsync+inotify实时同步,inotify可以实时监控本地文件或目录变化,当检测到本地文件变化,执行rsync同步命令,将变化的文件同步到其他服务器节点. 1.配置环境 3.在服务节点1.服务 ...
- CentOS6.5实现rsync+inotify实时同步
参考博文: 参考1:CentOS6.5实现rsync+inotify实时同步 参考2:inotify-tools+rsync实时同步文件安装和配置 CentOS 6.3下rsync服务器的安装与配置 ...
- linux设置rsync+inotify实时同步文件
linux设置rsync+inotify实时同步文件 应用场景: 同步接收方:test01 接收目录:/opt/software/test/a/ 同步发起方:test02 同步目录:/opt/so ...
- Rsync+Sersync数据实时同步(双向)
Rsync+Sersync数据实时同步(双向) 服务介绍 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.se ...
- rsync与inotify 数据同步
发布:thebaby 来源:脚本学堂 [大 中 小] 本文介绍下,在linux系统中,使用rsync与inotify实现数据同步的一个实例,有研究文件同步的朋友可以作个参考.本文转自:ht ...
- rsync+inotify-tools文件实时同步
rsync+inotify-tools文件实时同步案例 全量备份 Linux下Rsync+sersync实现数据实时同步完成. 增量备份 纯粹的使用rsync做单向同步时,rsync的守护进程是运行在 ...
随机推荐
- HYSBZ 1036(树的统计Count)
题目链接:传送门 题目大意:中文题,略 题目思路:树链剖分裸题. 闲谈:树链越练越熟练了 #include <iostream> #include <cstdio> #incl ...
- 【BZOJ2973】石头游戏 矩阵乘法
[BZOJ2973]石头游戏 Description 石头游戏的规则是这样的. 石头游戏在一个n行m列的方格阵上进行.每个格子对应了一个编号在0~9之间的操作序列. 操作序列是一个长度不超过6且循环执 ...
- LAMP集群项目二 初始化系统
1.关闭防火墙 /etc/init.d/iptables stop chkconfig iptables off 2.关闭selinux cat /etc/selinux/config #查看状态 s ...
- Quartz 的使用
1. Quartz 入门案例 1.1 Quartz 相关jar包 quartz-2.2.3.jar quartz-jobs-2.2.3.jar 1.2 创建任务类 // 自定义任务类 public c ...
- react native 或 flutter 开发app
react-native react native和原生Android/ios: https://www.oschina.net/news/97466/should-we-use-react-nati ...
- Error-the resource is not on the build path of a java project
错误描述 eclipse中的the resource is not on the build path of a java project,在Eclipse中点击生成源码时,弹窗提示该错误 解决办法 ...
- 前端 javascript 数据类型 布尔类型
python 是大写 True javascript 是小写 true false 也是 布尔类型仅包含真假,与Python不同的是其首字母小写. == 比较值相等 != 不等于 ...
- windows平台tensorboard的配置及使用
由于官网和其他教程里面都是以Linux为平台演示tensorboard使用的,而在Windows上与Linux上会有一些差别,因此我将学习的过程记录下来与大家分享(基于tensorflow1.2.1版 ...
- mutex_lock
多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理. mutex_lock(struct mutex *lock)和mute ...
- HDU1520:Anniversary party(树形dp第一发)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1520 一个公司去参加宴会,要求去的人不能有直接领导关系,给出每一个人的欢乐值,和L K代表K是L的直接领导 ...