cwRsyncServer从windows下数据实时同步到linux服务器上的实现过程
由于公司有两台windows服务器,开发在操作时一般也都是在这两台服务器上上传一些数据或修改一些东西,而Linux上的服务器也要跟windows上的数据要保持一致而又不需要人为的实现这个过程,基于此过程,昨天花了点时间,完成了基本的测试实现过程,今天就把这过程给记录下来,方便以后查看,以希望可以帮到还在困惑的朋友们。
第一步:在windows上的安装cwRsyncServer4.1.0以及配置过程:
在windows上下载安装包cwRsyncServer4.rar,这个不多解析,大家都懂,要是在虚拟机上安装windowd服务器的,如果你的windows服务器上不了网,那就在本机上下载好持拷贝过去就好了,如果还不知道怎么拷贝到windows上去的话那就在linux上建个ftp服务器,把文件丢里面去共享就可以拷贝了。
在拷贝中如果出现这个问题:windows 2003当前的安全设置不允许从该位置下载文件的解决方案:
只需要设置Internet选项-->安全-->自定义级别 找到下载项中的“文件下载”,启用即可。
如下是cwRsyncServer安装过程,一直点下一步就可以了,这里就不一一贴出来了:
这里需要创建一个帐户,就用默认的就好了,设置一个自己的密码就OK了。
安装完成之后下面开始配置,打开安装目录下的文件目录:C:\Program Files (x86)\ICW,修改rsyncd.conf配置文件的内容为以下配置;
这里要注意的是,如果不写uid=0,和gid=0的话就,在远程连接时就会出现以下的情况:
到这里了就要在F盘下新建一个rsyncdata的目录,这个目录就是指它里面的所有数据同步到linux的指定目录去的,也就是windows下的rsyncd.conf配置文件的[rsyncdata]模块对应的文件,新建好之后我们还需要改一些配置:
还需要修改一下rsyncdata这个目录的一些相关属性信息,右键这个文件选属性:
输入完SvcCWRSYNC这个用户名后点“检查名称”就可以匹配上了,再点确定就OK了。
最后再改一下这个文件对这个用户的访问权限:
选中我的电脑--右键管理---服务和应用--服务,找到RsyncSever,双击--启动,把这个服务器起动起来:
到这里应该是说windows下的就配置完了,但是要注意的是如果你的linux需要用telnet来连接到windows上来的话那windows上的防火墙记得要关闭,否则很可能连不上去,也可以在本上的测试一下,出现以下情况就说明可以连接上去了,说明windows服务可用了。
在cmd下输入你windows的本机地址和rsync的监听端口,它的默认监听的端口是873,回车:
出现@RSYNCD:30.0这个就说明可以连接上去了。
二、Rsync客户端配置,这个就需要linux上做配置了,相关的配置见如下过程:
1、查看selinux机制,关闭selinux
[root@node1 ~]# getenforce Disabled
2、安装Rsync客户端软件
[root@node1 ~]# yum install rsync xinetd
3、需要安装这两个软件包就可以了,安装好之后就要修改一点配置文件了:
[root@node1 ~]# vi /etc/xinetd.d/rsync #编辑配置文件,设置开机启动rsync ,Centos上的rsync使用xinetd启用的
将disable=yes,改为no
service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID } /etc/init.d/xinetd start #启动xinetd这个服务
4、修改之后就远程连接测试一下,记得把windows的防火墙给关闭了哦,要不然很可能会连接不上的,或都在windows防火墙上开放873这个端口
OK,说明连接到windows上成功了,那接下来我们就创建一个与windows下同步的目录了:
[root@node1 ~]# mkdir pv /rsyncdata/data
为了同步数据时不用每次都不手动输入密码,我们在客户端(linux下)也创建一个和服务端(windows)一样的密码文件(此文件路径和密码要与服务器端的一样,客户端不用写名字)
[root@node1 ~]# vim /etc/rsyncd.secrets #只需要写上服务器端上的用户密码就可以了
[root@node1 ~]# chmod 600 /etc/rsyncd.secrets #改一下权限
5、到这里我们就可以写命令来拉取windows服务器端上的数据了:
[root@node1 ~]# rsync -vazrtopqg --delete --password-file=/etc/rsyncd.secrets [email protected]::rsyncdata/* /rsyncdata/data/
传输成功,这里说明一下这几个参数表示什么:
-v, --verbose #详细模式输出 -q, --quiet #精简输出模式 -a, --archive #归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD -r, --recursive #对子目录以递归模式处理 -o, --owner #保持文件属主信息 -g, --group #保持文件属组信息 -t, --times #保持文件时间信息 --delete #删除那些DST中SRC没有的文件 --password-file=FILE #从FILE中得到密码
6、为了一是每次有数据修改时都要手动去同步一步,我们把这个命令写成一个脚本,再添加一个任务计划,这个就可以实现自动同步数据了;
[root@node1 ~]# crontab -e * * * * * /bin/bash /root/rsync.sh &> /dev/null #我们设置每分钟同步一次