一、需求

卫士那边有一个需求,就是要把一台内网服务器的数据同步到外网的一台服务器上,之前我用的是rsync+intify-tool+ssh实现的实时同步更新,前几天我还在东莞出差,开发的人给我打电话说这两台服务器的数据不同步了,我上去检查一遍,原来是用来同步数据的这个系统账号被北京的同事修改,ssh免密码登陆失败了,所以数据同步不了,后来想想这样在系统开着个单用户用来同步数据确实是存在安全风险,我有具体和开发的沟通了一下,这个项目的数据同步也不是那么的需要实时同步,所以现在我要改成单用rsync同步,具体步骤如下:

二、环境

内网:10.20.220.247

同步目录1:/data/appsdata/softmgr-v3/static-file/update

同步目录2:/data/appsdata/softmgr-v3/static-file/v1_0

外网:114.112.36.X

同步目录1:/data/apps/ksoftmgr/ksafe/client/update

同步目录2:/data/apps/ksoftmgr/ksafe/client/v1_0

三、安装配置

1.服务器端(114.112.36.69)

A、[root@localhost ~]# yum -y install rsync xinetd

B、[root@localhost ~]# vi /etc/xinetd.d/rsync

  将 disable = no 改成yes

  [root@localhost ~]# /etc/init.d/xinetd start

C、撰写rsync的配置文件

  [root@localhost ~]# vi /etc/rsyncd.conf

  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

 

  [update]

  path = /data/apps/ksoftmgr/ksafe/client/update

  comment = update file

  ignore errors

  read only = no

  write only = no

  hosts allow = 125.89.65.194 

  hosts deny = *

  uid = root

  auth users = wcm

  secrets file = /etc/web.pass

 

  [v1_0]

  path = /data/apps/ksoftmgr/ksafe/client/v1_0

  comment = v1_0 file

  ignore errors

  read only = no

  write only = no

  hosts allow = 125.89.65.194 

  hosts deny = *

  uid = root

  auth users = wcm

  secrets file = /etc/web.pass

D、撰写密码文件

   [root@localhost ~]# vi /etc/web.pass (格式 账号:密码)

   wcm:8888888

  [root@localhost ~]# chown root:root /etc/web.pass 

  [root@localhost ~]# chmod 600 /etc/web.pass 

E、启动rsync

   [root@localhost ~]# rsync --daemon

   [root@localhost ~]# echo "rsync --daemon" >> /etc/rc.local 

2、客户端(10.20.220.247)

   A、[root@localhost ~]# yum -y install rsync

   B、撰写密码文件

   [root@localhost ~]# vi /etc/web.pass (主要:只写用来同步的账号的密码)

   8888888

   [root@localhost ~]# chown root:root /etc/web.pass 

   [root@localhost ~]# chmod 600 /etc/web.pass 

   C、撰写crontab,没一分钟同步一次

   [root@localhost v1_0]# crontab -e

   */1 * * * * /usr/bin/rsync -avz --progress --delete      /data/appsdata/softmgr-v3/static-file/update/  [email protected]::update --password-file=/etc/web.pass

   */1 * * * * /usr/bin/rsync -avz --progress --delete    /data/appsdata/softmgr-v3/static-file/v1_0/  [email protected]::v1_0 --password-file=/etc/web.pass

四、测试

在内网的update和v1_0下面删除或者新建文件,看对应外网的机器上是否也是做了相应的操作,如果是,说明OK,我的肯定是撒,线上的不同步就悲剧了。