一。下载安装
1.yum安装。
yum install rsync
2编译安装。
tar -zxvf rsync-3.0.3.tar.gz
cd rsync-3.0.3
./configure
make
make install
二。服务器配置(1.238)
案例说明,如192.168.1.237和192.168.1.238两台服务器,OS(centos6.2),192.168.1.238当服务器,192.168.1.237做client。当1.238文件删除时1.237同步删除,当1.238添加/修改时1.237同步修改。
1、采用系统默认安装的rsync 编辑/etc/rsyncd.conf文件,如果没有则新建一个
vi /etc/rsyncd.conf
strict modes = yes
port = 873
logfile = /var/log/rsyncd.log
pidfile = /var/run/rsyncd.pid
max connections = 4
[web]
uid = root
gid = root
path = /home/wwwroot/pmedia/images/tmp/ //同步路径
read only = no
host allow = *
auth users = wwyhy //认证用户名(不是系统用户)
secrets file = /etc/rsyncd.scrt //密码文件
2.添加一个密码文件
vi /etc/rsyncd.scrt
wwyhy:123456
3.改变权限为600
chmod 600 /etc/rsyncd.scrt
4.启动服务(如开有防火墙请允许873端口通过)
rsync --daemon --config=/etc/rsyncd.conf
三。client配置和同步
1.client新建密码文件
vi /etc/rsyncd.scrt
123456
2.修改权限
chmod 600 /etc/rsyncd.scrt
3.开始同步
rsync -avz --delete --password-file=/etc/rsyncd.scrt [email protected]::web /qq
4。建立脚本
vi /root/rsync.sh
#!/bin/bash
while :
do
PATH1=/qq
rsync -avz --delete --password-file=/etc/rsyncd.scrt [email protected]::web $PATH1 >> /var/log/rsync_client.log
#5s 循环一次
sleep 5
done
nohup /bin/bash /root/rsync.sh & 启动脚本
四。注意事项和命令说明。
1.配置文件和密码文件不要有注释行和多余的空格。密码文件权限统一是600.
一。inotify+rsync同步部署部署环境:
rsync服务器:192.168.0.1
文件服务器and rsync客户端:192.168.0.2ify-tools安装1.rsync安装配置:
http://hi.baidu.com/867358162/item/33f26ceded746919560f1dc0
2.rsync:
介绍 Inotify 是文件系统事件监控机制,作为 dnotify 的有效替代。dnotify 是较早内核支持的文件监控机制。Inotify 是一种强大的、细粒度的、异步的机制,它满足各种各样的文件监控需要,不仅限于安全和性能。 inotify 可以监视的文件系统事件包括: IN_ACCESS,即文件被访问 IN_MODIFY,文件被 write IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等 IN_CLOSE_WRITE,可写文件被 close IN_CLOSE_NOWRITE,不可写文件被 close IN_OPEN,文件被 open IN_MOVED_FROM,文件被移走,如 mv IN_MOVED_TO,文件被移来,如 mv、cp IN_CREATE,创建新文件 IN_DELETE,文件被删除,如 rm IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己 IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己 IN_UNMOUNT,宿主文件系统被 umount IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO) 注:上面所说的文件也包括目录。
Linux内核的支持
在源主机中安装inotify-tools-3.13.tar.gz
下载:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@Linux-Master src]# tar zxvf inotify-tools-3.13.tar.gz
[root@Linux-Master src]# cd inotify-tools-3.13
[root@Linux-Master inotify-tools-3.13]# ./configure
[root@Linux-Master inotify-tools-3.13]# make && make install
========================================
命令:
Inotifywait监听
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e modify,attrib,move,close_write,create,delete /root/ //当/root/目录后里面的子目录发生改变时 会打印出来
Inotifywatch监听统计
#! /bin/bash
PATH1=/home/wwwroot/pmedia/public/
PATH2=/home/wwwroot/pmedia/protected/views/www/website/
IP=192.168.1.235
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e modify,attrib,move,close_write,create,delete $PATH1 $PATH2 | while read file
do
chmod -R 777 $PATH1
chmod -R 777 $PATH2
/usr/bin/rsync -auvzrog --delete --password-file=/etc/rsyncd.client $PATH1 wwyhy@$IP::web >> /var/log/rsync_clinet.log
/usr/bin/rsync -auvzrog --delete --password-file=/etc/rsyncd.client $PATH2 wwyhy@$IP::web2 >> /var/log/rsync_clinet.log
# echo "$PATH1 rsync OK!!!!!!!!! "
done
启动脚本:
nohup /home/scritp/rsync_inoticy.sh &
测试修改/home/wwwroot/pmedia/public/ ,/home/wwwroot/pmedia/protected/views/www/website/ 目录文件 查看192.168.1.235是否同步
二。 sersync部署同步
sersync主要用于服务器同步,web镜像等功能。基于boost1.43.0,inotify api,rsync command.开发。目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google开源项目Openduckbill(依赖于inotify- tools),这两个都是基于脚本语言编写的。相比较上面两个项目,本项目优点是:
sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
相比较上面两个项目,sersync配置起来很简单,其中bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。
另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
本项目有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则按设定时长对同步失败的文件重新同步。
本项目自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。
本项目socket与http插件扩展,满足您二次开发的需要。
rsync服务器:192.168.0.1
文件服务器and rsync客户端:192.168.0.2 安装sersync
1.rsync安装配置:
http://hi.baidu.com/867358162/item/33f26ceded746919560f1dc0
下载配置sersync
http://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz 64bit
tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
cd GNU-Linux-x86
vi confxml.xml
...................
<sersync>
<localpath watch="/root/ss">
<remote ip="192.168.0.1" name="web"/>
</localpath>
<rsync>
<commonParams params="-artuz"/>
// <auth start="false" users="wwyhy" passwordfile="/etc/rsync.client"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync>
.....................................................
启动
./sersync2 -r
./sersync2 -r -d 守护进程运行