环境说明:
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 �Cprefix=/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 �Can | 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 �Cy 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权限。