今天一位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 实时同步配置(更新之前繁琐的传输认证)的更多相关文章

  1. centos6.6配置rsync+sersync实现实时同步分布式多客户端分发同步

    1.sersync项目: sersync项目利用inotify与rsync技术实现对服务器数据实时同步到解决方案,其中inotify用于监控sersync所在服务器上文件系统的事件变化,rsync是目 ...

  2. 配置rsync+inotify实时同步

    与上一篇同步做 配置rsync+inotify实时同步 1:调整inotify内核参数 在linux内核中,默认的inotify机制提供三个调控参数:max_queue_events.max_user ...

  3. rsync+inotify实时同步环境部署记录

    随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足.首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件 ...

  4. rsync+inotify实时同步方案

    rsync+inotify实时同步,inotify可以实时监控本地文件或目录变化,当检测到本地文件变化,执行rsync同步命令,将变化的文件同步到其他服务器节点. 1.配置环境 3.在服务节点1.服务 ...

  5. CentOS6.5实现rsync+inotify实时同步

    参考博文: 参考1:CentOS6.5实现rsync+inotify实时同步 参考2:inotify-tools+rsync实时同步文件安装和配置 CentOS 6.3下rsync服务器的安装与配置  ...

  6. linux设置rsync+inotify实时同步文件

    linux设置rsync+inotify实时同步文件   应用场景: 同步接收方:test01 接收目录:/opt/software/test/a/ 同步发起方:test02 同步目录:/opt/so ...

  7. Rsync+Sersync数据实时同步(双向)

    Rsync+Sersync数据实时同步(双向) 服务介绍 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.se ...

  8. rsync与inotify 数据同步

    发布:thebaby   来源:脚本学堂     [大 中 小] 本文介绍下,在linux系统中,使用rsync与inotify实现数据同步的一个实例,有研究文件同步的朋友可以作个参考.本文转自:ht ...

  9. rsync+inotify-tools文件实时同步

    rsync+inotify-tools文件实时同步案例 全量备份 Linux下Rsync+sersync实现数据实时同步完成. 增量备份 纯粹的使用rsync做单向同步时,rsync的守护进程是运行在 ...

随机推荐

  1. cx_Oracle在sublime text里运行遇到 ImportError错误解决办法

    如果你装完cx_Oracle之后,命令行运行没错,但是在sublime text里运行, 就遇到这个错误: ImportError: dlopen(/Library/Python/2.7/site-p ...

  2. VUE学习总结

    VUE学习总结 文档:https://cn.vuejs.org/v2/guide/ Webstorm的一些常用快捷键:1. ctrl + shift + n: 打开工程中的文件,目的是打开当前工程下任 ...

  3. 2017Summmer_上海金马五校 F题,G题,I题,K题,J题

    以下题目均自己搜 F题  A序列 一开始真的没懂题目什么意思,还以为是要连续的子串,结果发现时序列,简直智障,知道题意之后,好久没搞LIS,有点忘了,复习一波以后,直接双向LIS,处理处两个数组L和R ...

  4. inode file 结构

    inode位图(inode Bitmap) 和块位图类似,本身占一个块,其中每个bit表示一个inode是否空闲可用. inode表(inode Table) 我们知道,一个文件除了数据需要存储之外, ...

  5. postfix邮箱服务器修改附件大小限制遇到的问题与解决

    Q1:邮件大小限制为30M,发送的附件大小为25M,发送后提示邮件大小超过限制 A:邮箱客户端在发送邮件时会把附件进行base64转码,转码之后邮件大小会超过附件+正文的大小,所以10M的附件在经过转 ...

  6. 前端开发 - CSS - 下

    CSS: 12.display 13.浮动效果 14.浮动特性 15.浮动产生的问题和解决方法 16.float京东导航栏 17.position 18.z-index 19.京东案例 12.disp ...

  7. 基于Django的乐观锁与悲观锁解决订单并发问题的一点浅见

    订单并发这个问题我想大家都是有一定认识的,这里我说一下我的一些浅见,我会尽可能的让大家了解如何解决这类问题. 在解释如何解决订单并发问题之前,需要先了解一下什么是数据库的事务.(我用的是mysql数据 ...

  8. Pycharm配置同步服务器

    一.使用场景 我们一般需要将代码放到服务器上运行,但如果等我们将项目全部开发好之后再上传到服务器,而且每次在开发阶段需要经过多次修改,每修改一次,都手动上传一次,这样就太麻烦了,有没有一种方法可以达到 ...

  9. 前端 javascript 数据类型 字典

    定义字典 a = {"k1":"v1","k2":"v2",}; Object {k1: "v1", ...

  10. js-jquery-003-条形码-二维码【QR码】

    一.基本使用 插件地址:https://github.com/jeromeetienne/jquery-qrcode 1.首先在页面中加入jquery库文件和qrcode插件. <script ...