首先下载好两个工具:html
rsync地址: http://rsync.samba.org/download.htmllinux
inotify-tools: http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gzc++
此次的实验主要有两台机器,172.16.54.114和172.16.54.115,咱们把115作为源服务器,114作为目标服务器git
主要是把115上/home/md中的全部数据实时同步到114上的/home/md中github
1,先关闭防火墙服务器
vi /etc/selinux/config #编辑防火墙配置文件工具
#SELINUX=enforcing #注释掉ui
#SELINUXTYPE=targeted #注释掉spa
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目录中
在这一步以前要安装相对就的gcc和gcc-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 //次数的password-file是服务端的密码文件
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 &
关闭了窗口也没事,已在后台运行下次开机自动启动
也能够参照此博客:http://dl528888.blog.51cto.com/2382721/771533
还有这个,建议参考这个文档:http://ixdba.blog.51cto.com/2895551/580280/