rsync+inotify实现服务器之间文件实时+双向同步

 

实现两台服务器a和b之间文件双向同步

大概步骤:... 2

详细步骤:... 2

一. 主服务器(server端,我这里是192)... 2

1.安装rsync. 2

2建立密码认证文件... 5

3安装inotify. 7

4创建rsync复制脚本... 9

二、备份服务器(client,我这里为192.xxx.xx.209)... 10

1安装rsync. 10

2密码认证文件... 11

3立rsync配置文件... 11

双向同步重点备注... 13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

大概步骤:

1.先实现a->b文件同步,接着实现aß>b双向同步

2.主服务器a(166)安装rsync和inotify

3.备份服务器b(209)安装rsync

4.启动备份服务器b的rsync

5.启动主服务器a的rsync

6.在实现a->b之后,把b服务器上当作主服务器在重新配置即可

 

实现双向同步的关键

1、两边都不能设置用户名,2、日志文件不能在待同步的文件夹里面

 

详细步骤:

一. 主服务器(server端,我这里是166)

其中主服务器需要安装rsync与inotify,主服务器作为server,向备份服务器client传输文件

1.安装rsync

[root@jwxt ~]# cd /usr/src/

[root@jwxt src]# wget  http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz 

[root@jwxt src]# tar zxvf rsync-3.0.9.tar.gz 

[root@jwxt src]# cd rsync-3.0.9 

[root@jwxt rsync-3.0.9]# ./configure --prefix=/usr/local/rsync 

[root@jwxt rsync-3.0.9]# make 

[root@jwxt rsync-3.0.9]# make install

 

 

 

 

2建立密码认证文件

[root@jwxt rsync-3.0.9]# cd /usr/local/rsync/  

[root@jwxt rsync]# echo "rsync-pwd" >/usr/local/rsync/rsync.passwd 

(其中rsync-pwd是自己设置的密码,rsync.passwd是文件名称)

然后给密码文件授权:

[root@jwxt rsync]# chmod 600 rsync.passwd  

 

命令执行完之后会在/usr/local/rsync目录下生成一个rsync.passwd文件,里面存放的是密码

 

3安装inotify

 

[root@jwxt rsync]# cd /usr/src/  

[root@jwxt src]# wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz  

[root@jwxt src]# tar zxvf inotify-tools-3.14.tar.gz  

[root@jwxt src]# cd inotify-tools-3.14  

[root@jwxt inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify  

[root@jwxt inotify-tools-3.14]# make  

[root@jwxt inotify-tools-3.14]# make install  

 

 

4创建rsync复制脚本

此项功能主要是将server端的目录/tmp里的内容,如果修改了(无论是添加、修改、删除文件)能够通过inotify监控到,并通过rsync实时的同步给client/tmp里,下面是通过shell脚本实现的。

 

#!/bin/bash 

host=1xx.xx.xx.209

src=/tmp/        

des=web

user=webuser

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

do 

/usr/bin/rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync.passwd $src $user@$host::$des 

echo "${files} was rsynced" >>/home/rsync.log 2>&1 

done

 

其中hostclientipsrcserver端要实时监控的目录,des是认证的模块名,需要与client一致,user是建立密码文件里的认证用户,日志文件rsync.log不要放在需要同步的文件夹里面,要不然会出现一直复制的问题,也没法做双向同步

把这个脚本命名为rsync.sh,放到监控的目录里,比如我的就放到/tmp下面,并给予764权限

[root@jwxt tmp]# chmod 764 rsync.sh 

然后运行这个脚本(一定要在在备份服务器client端的rsync安装并启动rsync之后,在启动rsync.sh脚本)

[root@jwxt tmp]# sh /tmp/rsync.sh & 

我们还可以把rsync.sh脚本加入到开机启动项里

[root@jwxt tmp]#  echo "/tmp/rsync.sh" >> /etc/rc.local 

 

二、备份服务器(client,我这里为192.xxx.xx.209)

1安装rsync(备份服务器只安装rsync

[root@jwhsyj ~]# cd /usr/src/  

     t@jwhsyj src]# wget  http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz  

[root@jwhsyj src]# tar zxvf rsync-3.0.9.tar.gz  

[root@jwhsyj src]# cd rsync-3.0.9  

[root@jwhsyj rsync-3.0.9]# ./configure --prefix=/usr/local/rsync  

[root@jwhsyj rsync-3.0.9]# make  

[root@jwhsyj rsync-3.0.9]# make install 

 

2密码认证文件

[root@jwhsyj rsync-3.0.9]# echo "rsync-pwd" > /usr/local/rsync/rsync.passwd 

echo "rsync-pwd" > /usr/local/rsync/rsync.passwd 

需要给密码文件600权限

[root@jwhsyj rsync]# chmod 600 rsync.passwd 

 3rsync配置文件

uid = root

gid = root

use chroot = no

max connections = 10

strict modes = yes

pid file = /var/run/rsyncd.pid 

lock file = /var/run/rsync.lock 

log file = /var/log/rsyncd.log 

[web] 

path = /tmp/ 

comment = web file 

ignore errors 

read only = no

write only = no

hosts allow = 1xx.xx.xx.166

hosts deny = * 

list = false

uid = root

gid = root

secrets file = /usr/local/rsync/rsync.passwd

 

其中webserver服务端里的认证模块名称,需要与主服务器里的一致,以上的配置我的自己服务器里的配置,以供参考。

把配置文件命名为rsync.conf,放到/usr/local/rsync/目录里

启动rsync

[root@jwhsyj rsync]# /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf

我们可以把rsync脚本加入到开机启动项里

[root@jwhsyj rsync]# echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf" >> /etc/rc.local

 

 

 

 

 

 

 

双向同步重点备注

如果只做单项a->b的备份,到上面结束了,如果需要做a<->b双向的备份,就需要把b也按照a那样装一遍,而且需要同步的文件夹里面放两个rsync.sh脚本文件,并且需要区分开,我这里是用rsync166.sh和rsync209.sh,效果图如下

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章