CentOS6.5实现rsync+inotify实时同步
参考博文:
参考1:CentOS6.5实现rsync+inotify实时同步
参考2:inotify-tools+rsync实时同步文件安装和配置
CentOS 6.3下rsync服务器的安装与配置 对 rsync命令解释的很详细
参考1比较详细,但是有点问题,参考2主服务器端比较详细 但是有小问题 把二者结合培正成功
注意:从主服务器拷贝到从服务器,千万别搞混了。
1、首先从主服务器A开始
需要确定你的系统是否支持inotify:
在安装inotify-tools前请先确认你的linux内核是否达到了2.6.13,并且在编译时开启了CONFIG_INOTIFY选项,也可以通过以下命令检测,如果出现以下输出,说明支持:
[root@localhost ~]# ls /proc/sys/fs/inotify/
max_queued_events max_user_instances max_user_watches
下载并安装inotify-tools:
wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar xvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make;make install
接下来需要写两个SH脚本,inotify_init.sh和inotify_monitor.sh:
inotify_init.sh 用于第一次初始化,也就是运行一次完整的RSYNC同步.
vim /root/inotify_init.sh
内容如下:
#!/bin/sh
SRC=/主服务器A需要同步的目录/ #记得在最后面加/不然RYNC会自动增加一层目录 DES=backup
IP=从服务器B的IP
USER=rsync
#DST=/etc/rsyncd 远程rsync模块下的目录
INWT=/usr/bin/inotifywait #注意路径 我的路径为:/usr/local/bin/inotifywait
RSYNC=/usr/bin/rsync $RSYNC -zahqt --password-file=/root/rsync.pwd $SRC $USER@$IP::$DES
保存退出.
设置可执行权限:
chmod +x /root/inotify_init.sh
接下是inotify_monitor.sh,用于订阅文件修改事件.注意,因为特别原因,我在这里做的是增量备份+实时同步,也就是说,当主服务器A上的图片被删除是,从服务器B是不会删除图片的.
vi /root/inotify_monitor.sh
内容如下:
#!/bin/bash ###########################
sync[0]='/主服务器需要同步的目录/,从服务器B的IP,backup,rsync' # localdir,host,rsync_module,auth_user INWT=/usr/bin/inotifywait #注意路径 我的路径为:/usr/local/bin/inotifywait
RSYNC=/usr/bin/rsync
PASS=/root/rsync.pwd
###########################
for item in ${sync[@]}; do
dir=`echo $item | awk -F"," '{print $1}'`
host=`echo $item | awk -F"," '{print $2}'`
module=`echo $item | awk -F"," '{print $3}'`
user=`echo $item | awk -F"," '{print $4}'`
$INWT -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f %e' \
--event CLOSE_WRITE,create,move $dir | while read date time file event
do
#echo $event'-'$file
case $event in
MODIFY|CREATE|MOVE|MODIFY,ISDIR|CREATE,ISDIR|MODIFY,ISDIR)
if [ "${file: -4}" != '4913' ] && [ "${file: -1}" != '~' ]; then
cmd="$RSYNC -zahqzt --exclude='*' --password-file=$PASS \
--include=$file $dir $user@$host::$module "
echo $cmd >> /var/log/rsyncd.log #写入日志文件
$cmd
fi
;;
MOVED_FROM|MOVED_FROM,ISDIR|DELETE,ISDIR)
if [ "${file: -4}" != '4913' ] && [ "${file: -1}" != '~' ]; then
cmd="$RSYNC -zahqzt --password-file=$PASS --exclude=$file \
$dir $user@$host::$module "
echo $cmd >> /var/log/rsyncd.log
$cmd
fi
;;
esac
done &
done
加 执行权限:chmod +x /root/inotify_monitor.sh
设置RSYNC自动登录验证密码,认证文件只用加入密码即可
vi /root/rsync.pwdxxxxxx保存,退出
设置只有ROOT才可以查看的权限.
chmod 600 /root/rsync.pwd
2、以下是备从务器B的配置:
yum install rsync -y #安装rsync服务
配置RSNYD服务:
vi /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 0 #没有连接限制
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log [backup]
path = /从服务器B本地用于存放备份的目录
ignore errors
read only = no
list = false
hosts allow = 主服务器A的IP
auth users = rsync
secrets file = /etc/rsync.pwd
设置密码文件:
vim /etc/rsync.pwd #添加以下内容rsync:123456chmod 600 /etc/rsync.pwd #修改密码文件权限为600注:当配置文件中参数strict modes为true时,rsync认证口令文件的权限一定是600,否则客户端将不能连接服务器。rsync认证口令文件中每一行指定一个 用户名:口令 对,格式为:username:passwd。
启动RSYNCD
rsync --daemon
添加开机自动启动服务:
添加开机自动启动服务:
vi /etc/rc.local添加以下内容:
rsync --daemon
3、主服务器开机启动
vi /etc/rc.local
添加以下内容,实时开机自动同步:
/root/inotify_init.sh
/root/inotify_monitor.sh
保存退出
运行
/root/inotify_init.sh
/root/inotify_monitor.sh
CentOS6.5实现rsync+inotify实时同步的更多相关文章
- rsync+inotify实时同步环境部署记录
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足.首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件 ...
- rsync+inotify实时同步方案
rsync+inotify实时同步,inotify可以实时监控本地文件或目录变化,当检测到本地文件变化,执行rsync同步命令,将变化的文件同步到其他服务器节点. 1.配置环境 3.在服务节点1.服务 ...
- 配置rsync+inotify实时同步
与上一篇同步做 配置rsync+inotify实时同步 1:调整inotify内核参数 在linux内核中,默认的inotify机制提供三个调控参数:max_queue_events.max_user ...
- linux设置rsync+inotify实时同步文件
linux设置rsync+inotify实时同步文件 应用场景: 同步接收方:test01 接收目录:/opt/software/test/a/ 同步发起方:test02 同步目录:/opt/so ...
- (转)rsync+inotify实时同步
原文:http://lxw66.blog.51cto.com/5547576/1331048 声明:rsync inotify 需要逆向思考,当只做rsync不实时同步时,我们一般是从rsync服务端 ...
- 浅谈Rsync+Inotify实时同步
Rsync是Unix/Linux旗下的一款应用软件,利用它可以是多台服务器数据保持同步一致性,第一次同步时rsync会复制全部内容,但在下次只传输修改过的文件 Rsync在传输数据的过程中可以实行压缩 ...
- rsync+inotify实时同步
!!!在安装前要先确保,rsync daemon服务配置成功,在安装inotify-tools前先确认你的linux内核是否达到了2.6.13,并且在编译时开启CONFIG_INOTIFY选项,也可以 ...
- centos 6 rsync+inotify 实时同步
主机名.ip: server 172.31.82.184 client 172.31.82.185 需求: 1.server端 ”/data/server“ 做为client端 “/data/cli ...
- rsync + inotify 实时同步
1. 前言 2 台 nginx 需要做集群, 静态文件和php文件都在nginx服务器本地. 有三种方案: (1)NFS (2)Rsync + inotify (3)共享存储服务器 第一种:当 nfs ...
随机推荐
- 采用translate实现垂直水平居中
今天分享一个利用css3新特性实现垂直水平居中的方法. 通过对元素进行绝对定位再配合transform中的translate实现. 代码如下: html <div id="conten ...
- Linux系统之UpStart
子贡问为仁.子曰:“工欲善其事,必先利其器.居是邦也,事其大夫之贤者,友其士之仁者.”——孔子(春秋)<论语·卫灵公> [工欲善其事,必先利其器] 掌握一门技术,知道其发展历程是非常重要的 ...
- 高质量程序设计指南C/C++语言——有了malloc/free为什么还要new/delete?
- [转]IOS Segment页面之间view的切换
有三个view,分别为view1.view2.view3,通过UISegmentedControl进行三个view的切换. @interface UIViewDemoViewController : ...
- 一个帝国cms [!--show.listpage--] css样式
1.在分页位置加<div class="pagepage">[!--show.listpage--]</div> </div>这个标签 2.在需 ...
- 转: Transact-sql游标使用详解~~很详细
/*原理:游标就是把数据按照指定要求提取出相应的数据集,然后逐条进行数据处理.1.1游标的概念 游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集. 使用游标(cursor)的一 ...
- android程序报错“error launching activity com.android.ddmlib.shellcommandunresponsiveexception”的解决方式
今天在调试android程序的时候,因为是NDK开发,要先编译.so库再打包下载到android模拟器,所以花费的时间比較长.控制台就会报例如以下错误: error launching activit ...
- BFG
"/"应用程序中的服务器错误. 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错误消息: 提供程序集合中不 ...
- C# 日期格式转换 string类型 20150329 转换为 2015/03/29
DateTime.ParseExact("20150329", "yyyyMMdd", System.Globalization.CultureInfo.Cur ...
- linux基本命令-注销、关机、重起
链接地址:http://blog.163.com/bhao_home/blog/static/6647763120081202047945/ 一.注销,关机,重启 注销系统的logout命令 1,Lo ...