背景:做一个全自动版本发布系统

     服务端为windows,客户端为linux。


现有的版本发布步骤为,执行备份脚本进行原有内容备份,通过FTP工具进行版本部署,最后进行脚本对nginx合tomcat服务进行重启。

现在使用rsync工具后,将这三个步骤整合为一个,即以后的版本发布,只要执行一个脚本即可。


准备内容:

已windows机器192.1681.15为服务端,准备rsync的windows服务端的版本---cwrsync。

cwrsync分为服务端工具和客户端工具,都是使用在windows下的.

注:cwrsync最新版已经变成收费软件了 官方能下到的免费版本是cwrsync的4.05版本

客户端版本:cwRsync 4.0.5 Installer

服务端版本:cwRsyncServer 4.0.5 Installer

因为此次要做的是将windows机器作为服务端,所以就选择cwRsyncServer 4.0.5 Installer这个即可。

下载地址

https://www.itefix.no/i2/content/cwrsync-free-edition

已linux机器192.168.1.216为客户端,准备rsync的linux版本。

正常的话linux机器都会自带rsync。

ps:我的linux机器为centos 6.2.

110430386.png

查询到linux机器确实有自带的rsync工具的。


这样的话软件方面已准备完成。


安装步骤:

此安装步骤针对与windows服务端的。


解压后运行cwRsyncServer_4.0.5_Installer.exe

一路next 默认安装路径为  C:\Program Files\ICW\

不要修改路径,之前估计是修改了路径,导致安装不成功,默认安装就行,安装过程中有一步比较重要的地方


会要求输入用户名 两次密码, 这里不是创建密码 而是输入rsync登陆windows系统的账号密码


111138545.png

在这里输入你要设置的用户名和密码,这个在两台机器使用rsync相互通信时会使用到的用户名和密码的。


创建过程中若出现安全软件拦截时,要让安全软件允许这样操作,这样才能正常创建成功。


配置文件配置:

修改windows机器服务端的文件即可

在C:\Program Files\ICW\rsyncd.conf

use chroot = false

strict modes = false

hosts allow = *

log file = rsyncd.log

port = 873

uid=0  # uid和gid要添加,否则会报:@ERROR: invalid uid nobody

gid=0  # rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.2]  的错误信息


# Module definitions

# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work

#

[backup] #这个模块名可以随意命名

path = /cygdrive/d/work  #要同步的文件路径,代表d:\work目录

read only = false

transfer logging = yes

list  = no

hosts allow = *

auth users = rsync       #rsync用户 仅这个账户可以同步该配置下文件

secrets file = etc/rsyncd.secrets  #rsync登陆用户文件 记录rsync时需要输入的账号密码



最后 创建账户文件 地址为

C:\Program Files\ICW\etc

文件命名必须和配置文件中相同:rsyncd.secrets

内容为 账户:密码

例如

rsync:qaz321


这个用户名和密码就是一开始安装时所建立的用户名和密码的。


待配置完成后,启动服务

服务器管理器-工具-服务 其他版本的windows可以用控制面板-管理工具-服务

找到服务rsyncserver (如果没有这个服务 应该是你用户名密码那你输入有问题 卸载了重新装一次)

将rsyncserver设置为自动启动 并启动服务

112813145.png


若使用过程中有配置文件的修改也要对这个服务进行重启。


至此,服务端的工作已完成。


客户端工作只要添加一个密码文件即可

文件中只添加密码信息即可

113015954.png

113106850.png

把这个文件设置为600的权限

chmod 600 rsyncd_test.scrt


配置客户端后,就可以进行rsync同步测试。

在linux客户端执行下面命令

rsync -vzrtopg --progress --delete  --password-file=/etc/rsyncd_test.scrt rsync@192.168.1.15::backup /tmp/test1


几点说明

password-file=/etc/rsyncd_test.scrt   为客户端创建的密码文件

rsync即为用户名

/tmp/test1 客户端的路径,即执行后,把服务端的内容同步到这个文件夹下的。

backup 即为服务端配置文件的那个配置模块名,代指path = /cygdrive/d/work  #要同步的文件路径,代表d:\work目录


到此,已windows为服务端,linux为客户端的rsync同步配置已完成。


其实配置的过程没那么顺利,附上在配置过程中的调试内容。

查看windows服务端是否开启873端口

113848393.png


查看linux是否联通windows机器的873端口

这是联通状态

113957333.png


这是没有联通状态

114019157.png




接下来的工作就是整合之前的脚步,把这个命令加入到脚本中,这样的话就可以用一个脚本来完成之前所有的工作。