安装布署rsync+Inotify实现数据的实时同步更新

环境说明:

server:CentOS-02:192.168.1.220 (rsync  server)

client:CentOS-01:192.168.1.210  (rsync client、inotify)

同步顺序从client-server端。


一、配置server端。

1.准备好软件包并解压

[root@CentOS-02 ~]# ll
总用量 876
drwxrwxr-x. 10 root root   4096 12月 10 15:57 rsync-3.0.9
-rwxr-xr-x.  1 root root 792725 12月 10 13:51 rsync-3.0.9.tar.gz


2.安装rsync软件包

[root@CentOS-02 ~] cd rsync-3.0.9
[root@CentOS-02 rsync-3.0.9]./configure –prefix=/usr/local/rsync && make && make install


3.手动创建/etc/rsyncd.conf文件

log file = /var/log/rsyncd.log       #存放rsync软件日志文件位置
pid file = /var/run/rsyncd.pid       #存放rsync的pid文件位置
lock file = /var/run/rsyncd.lock     #存放rsync的锁文件位置
uid = root       #以root用户运行rsync软件
pid = root       #以root组运行rsync软件
port = 873       #配置rsync监控的端口(默认873,可自行更改)
max connections = 20      #配置最大客户端的连接数
[server]     #需要同步的模块名
path = /usr/local/weblogic/webapps    #需要同步的模块路径
comment = weblogic server project    #对该模块的描述信息
ignore errors      #忽略错误
read only = no     #配置不只读
write only = no    #配置不只写
auth users = ruser   #配置登陆名
secrets file = /etc/rsync.pass   #配置指定用户名及密码的文件


4.建立/etc/rsyncd.conf文件中所认证的用户名及密码

[root@CentOS-02 rsync-3.0.9] echo “ruser:123” >> /etc/rsync.pass


5.将上述两个文件授权为600

[root@CentOS-02 rsync-3.0.9]chmod 600 /etc/rsyncd.conf
[root@CentOS-02 rsync-3.0.9]chmod 600 /etc/rsync.pass



二、配置client端

1.准备inotify软件包并解压

[root@CentOS-01 ~]# ll
drwxrwxrwx.  5 1000 1000   4096 12月 10 13:38 inotify-tools-3.14
-rwxr-xr-x.  1 root root 358772 12月 10 13:33 inotify-tools-3.14.tar.gz


2.安装inotify软件包

[root@CentOS-01 ~] cd inotify-tools-3.14
[root@CentOS-01 inotify-tools-3.14]./configure && make && make install


3. 写一个 inotify 的监控脚本

[root@CentOS-01 ~]cat /data/script/rsync_inotify.sh
#!/bin/bash
src=/usr/local/weblogic/webapps
des=server
host=192.168.1.220
user=ruser
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib $src | while read files
do         
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pass $src $user@$host::$des >>/data/script/rsync.log 2>&1 &&
echo "src was rsyncd"
done


3.配置/etc/rsync.pass密码

[root@CentOS-01 inotify-tools-3.14]echo “123” >> /etc/rsync.pass


4.授权此文件

[root@CentOS-01 inotify-tools-3.14]chmod 600 /etc/rsync.pass


5.将Inotify脚本放到后台运行

[root@CentOS-01 inotify-tools-3.14] sh /data/script/rsync_inotify.sh &



三、验证。

1.分别在server端及client端创建需同步的目录

[root@CentOS-01 ~]# mkdir -d /usr/local/weblogic/webapps/server/
[root@CentOS-02 ~]# mkdir -d /usr/local/weblogic/webapps/server/


2.在client端进入该目录

[root@CentOS-01 server]# pwd
/usr/local/weblogic/webapps/server
[root@CentOS-01 server]#
[root@CentOS-01 server]#
[root@CentOS-01 server]# ll
总用量 0


3.在server端进入该目录

[root@CentOS-02 server]# pwd
/usr/local/weblogic/webapps/server
[root@CentOS-02 server]# ll
总用量 0


4.在client端创建一个文件及目录,验证

[root@CentOS-01 server]# touch 111
[root@CentOS-01 server]# src was rsyncd
src was rsyncd
[root@CentOS-01 server]#
[root@CentOS-01 server]#
[root@CentOS-01 server]# mkdir icon
[root@CentOS-01 server]# src was rsyncd
[root@CentOS-01 server]# ll
总用量 4
-rw-r--r-- 1 root root    0 12月 10 17:02 111
drwxr-xr-x 2 root root 4096 12月 10 17:03 icon
[root@CentOS-01 server]# pwd
/usr/local/weblogic/webapps/server
[root@CentOS-01 server]#


5.在server端查看该文件及目录是否已经同步过来

[root@CentOS-02 server]# pwd
/usr/local/weblogic/webapps/server
[root@CentOS-02 server]# ll
总用量 4
-rw-r--r-- 1 root root    0 12月 10 17:02 111
drwxr-xr-x 2 root root 4096 12月 10 17:03 icon
[root@CentOS-02 server]#




可能遇到的错误:

如使用netstat –an | grep 873 未任何结果

原因:rsync未启动

解决方法:

[root@CentOS-02 server]# vim /etc/xinetd.d/rsync
        disable = no   将该行改成no
[root@CentOS-02 server]/etc/init.d/xinetd restart


如无法启动xinetd服务

原因:未安装xinetd

解决方法:

[root@CentOS-02 server]Yum –y install xinetd
/etc/init.d/xinetd restart
或
[root@CentOS-02 server]rsync --daemon


rsync: failed to connect to 192.168.1.220: No route to host (113)

rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]

如果是这种错

原因:因为开了iptables,而未开放873端口

解决方法:

1.关闭Iptables

2.在iptables中开放TCP873端口



@ERROR: auth failed on module server                                                   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

如果是这种错

原因:用户名及密码不对及文件授权不正确

解决方法:

1.检查client端/etc/rsync.pass文件中的用户名及密码和/etc/rsyncd.conf中的auth user是否对应

2.检查server端inotify脚本中的user和client端/etc/rsyncd.conf是否对应,/etc/rsync.pass中的密码是否和client端的/etc/rsync.pass文件中的密码对应

3.检查server端/etc/rsyncd.conf、/etc/rsync.pass以及client端/etc/rsync.pass文件的权限是否是600权限。







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