背景:做一个全自动版本发布系统
服务端为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.
查询到linux机器确实有自带的rsync工具的。
这样的话软件方面已准备完成。
安装步骤:
此安装步骤针对与windows服务端的。
解压后运行cwRsyncServer_4.0.5_Installer.exe
一路next 默认安装路径为 C:\Program Files\ICW\
不要修改路径,之前估计是修改了路径,导致安装不成功,默认安装就行,安装过程中有一步比较重要的地方
会要求输入用户名 两次密码, 这里不是创建密码 而是输入rsync登陆windows系统的账号密码
在这里输入你要设置的用户名和密码,这个在两台机器使用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设置为自动启动 并启动服务
若使用过程中有配置文件的修改也要对这个服务进行重启。
至此,服务端的工作已完成。
客户端工作只要添加一个密码文件即可
文件中只添加密码信息即可
把这个文件设置为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端口
查看linux是否联通windows机器的873端口
这是联通状态
这是没有联通状态
接下来的工作就是整合之前的脚步,把这个命令加入到脚本中,这样的话就可以用一个脚本来完成之前所有的工作。