rsync+inotify实现数据同步

操做系统:rhel 5.7 html

首先下载好两个工具: linux

rsync地址: http://rsync.samba.org/download.html c++

inotify-tools: http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz git

此次的实验主要有两台机器,172.16.54.114172.16.54.115,咱们把115作为源服务器,114作为目标服务器 github

主要是把115/home/md中的全部数据实时同步到114上的/home/md 服务器

1,先关闭防火墙 工具

vi /etc/selinux/config #编辑防火墙配置文件 ui

#SELINUX=enforcing #注释掉 spa

#SELINUXTYPE=targeted #注释掉 操作系统

SELINUX=disabled #增长

:wq! #保存,退出

setenforce 0 #当即生效

 

2,查看端口是否被占用(直接在命令行输入)及安装

netstat –apn | grep 873

 

安装rsync,在两台服务器上都要进行这个步骤

首先将下载的包解压

tar -xzvf  rsync-3.1.0.tar.gz

解压后进入目录

./configure --prefix=/usr/local/rsync

 

#说明安装在/usr/local/rsync目录中

在这一步以前要安装相对就的gccgcc-c++

make

make install

安装完毕

 

chkconfig rsync on #随系统启动

这个只在114上作

建立rsync配置文件rsync.conf

vi /etc/rsyncd.conf #建立配置文件,添加如下代码

log file = /var/log/rsyncd.log #日志文件位置,启动rsync后自动产生这个文件,无需提早建立

pidfile = /var/run/rsyncd.pid  #pid文件的存放位置

lock file = /var/run/rsync.lock  #支持max connections参数的锁文件

secrets file = /etc/rsync.pass  #用户认证配置文件,里面保存用户名称和密码,后面会建立这个文件

motd file = /etc/rsyncd.Motd  #rsync启动时欢迎信息页面文件位置(文件内容自定义)

[md] #自定义名称

path = /home/md/ #rsync服务端数据目录路径

comment = md #模块名称

uid = root #设置rsync运行权限为root

gid = root #设置rsync运行权限为root

port=873  #默认端口

use chroot = no #默认为true,修改成no,增长对目录文件软链接的备份

read only = no  #设置rsync服务端文件为读写权限

list = no #不显示rsync服务端资源列表

max connections = 200 #最大链接数

timeout = 600  #设置超时时间

auth users = md #执行数据同步的用户名,能够设置多个,用英文状态下逗号隔开

hosts allow = 172.16.54.114  #容许进行数据同步的客户端IP地址,能够设置多个,用英文状态下逗号隔开

#hosts deny = 218.234.1.254 #禁止数据同步的客户端IP地址,能够设置多个,用英文状态下逗号隔开(这个比较随便,也能够没有)

:wq!  #保存,退出

 

建立用户认证文件

vi /etc/rsync.scrt  #配置文件,添加如下内容

md:123456 #格式为 用户:密码,若是是多个,能够一行一个

:wq!  #保存,退出

chmod 600 /etc/rsyncd.conf  #设置文件全部者读取、写入权限

chmod 600 /etc/rsync.scrt  #设置文件全部者读取、写入权限

 

在此,咱们普及一个问题,咱们先进入/etc/xinetd.d文件中,能够看到rsync这个文件,说明rsync是由xinetd管理,能够经过xinetd来启动rsync

/etc/init.d/xinetd start  #启动

service xinetd stop   #中止

service xinetd restart #从新启动

------------------------只在114上进行的到此为止--------------------

 

如下只到115上进行

vi /etc/rsync.scrt  #编辑文件,添加如下内容

123456 #密码

:wq! #保存退出

chmod 600 /etc/passwd.txt #设置文件权限,只设置文件全部者具备读取、写入权限便可

inotify-tools下载地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

 

上传inotify-tools-3.14.tar.gz/usr/local/src目录下

cd /usr/local/src

tar zxvf inotify-tools-3.14.tar.gz  #解压

cd inotify-tools-3.14 #进入解压目录

./configure --prefix=/usr/local/inotify  #配置

make  #编译

make install  #安装

3、设置系统环境变量,添加软链接

echo "PATH=/usr/local/inotify/bin:$PATH" >>/etc/profile.d/inotify.sh

source /etc/profile.d/inotify.sh  #使设置当即生效

echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf

ln -s /usr/local/inotify/include  /usr/include/inotify

4、修改inotify默认参数(inotify默认内核参数值过小)

查看系统默认参数值

sysctl -a | grep max_queued_events

结果是:fs.inotify.max_queued_events = 16384

sysctl -a | grep max_user_watches

结果是:fs.inotify.max_user_watches = 8192

sysctl -a | grep max_user_instances

结果是:fs.inotify.max_user_instances = 128

修改参数:

sysctl -w fs.inotify.max_queued_events="99999999"

sysctl -w fs.inotify.max_user_watches="99999999"

sysctl -w fs.inotify.max_user_instances="65535"

参数说明:

max_queued_events

inotify队列最大长度,若是值过小,会出现"** Event Queue Overflow **"错误,致使监控文件不许确

max_user_watches

要同步的文件包含多少目录,能够用:find /home/www.osyunwei.com -type d | wc -l 统计,必须保证max_user_watches值大于统计结果(这里/home/www.osyunwei.com为同步文件目录)

max_user_instances

每一个用户建立inotify实例最大值

 

5、建立脚本,实时触发rsync进行同步

vi /usr/local/inotify/rsync.sh   #编辑,添加如下代码

#!/bin/sh

srcdir=/home/md/

dstdir=buspos

rsyncuser=buspos

rsyncpassdir=/etc/rsync.scrt

dstip="172.16.54.114"

for ip in $dstip

do

rsync -avH --port=873 --progress --delete  $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdir

done

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $srcdir |  while read file

do

for ip in $dstip

do

rsync -avH --port=873 --progress --delete  $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdir

echo "  ${file} was rsynced" >> /tmp/rsync.log 2>&1

done

done

 

 

 

chmod +x /usr/local/inotify/rsync.sh   #添加脚本执行权限

 

6、设置脚本开机自动执行

vi /etc/rc.d/rc.local  #编辑,在最后添加一行

sh /usr/local/inotify/rsync.sh & #设置开机自动在后台运行脚本

:wq!  #保存退出

启动脚本

nohup  . /usr/local/inotify/rsync.sh &

 

关闭了窗口也没事,已在后台运行下次开机自动启动

相关文章
相关标签/搜索