# Windows 环境多服务文件同步

多服务器文件同步的目标是将 SSCMS 系统生成的站点文件以及图片、附件等站点资源文件同步至独立服务器并对外提供访问,以避免直接将 SSCMS 系统暴露在外网。

我们推荐使用免费开源的 rsync 软件进行跨服务器文件同步,除了 rsync 软件之外,您也可以使用其他第三方软件进行文件同步。

通常,为了避免将管理后台暴露在外的风险,我们不会同步管理后台 ss-admin 文件夹,如果站点为纯静态页面,不包含登录、搜索、点击量统计等互动功能,我们可以只同步站点文件夹,如果包含互动功能,可以同步除 ss-admin 文件夹以外的所有文件,以保证 API 能够正常访问。

rsync 软件在 Windows 操作系统下的名称为 cwRsync,使用 cwRsync 来同步文件时,当源服务器文件修改后,目标服务器将自动同步文件,包括文件的更新、删除、重命名等均将同步至目标服务器。

# 1、下载安装文件:

cwRsync 包含服务器端(需要在源服务器中安装)安装包以及客户端(需要在目标服务器中安装)安装包,下载地址:

服务端下载:cwRsyncServer_4.1.0_Installer.exe (opens new window)

客户端下载:cwRsync_4.1.0_Installer.exe (opens new window)

# 2、服务端安装:

服务端服务器即源服务器,通常为 SSCMS 系统所在的服务器。

下载后双击运行文件 cwRsyncServer_4.1.0_Installer.exe,点击下一步,安装过程中会在当前系统下生成 SvcCWRSYNC 账户(可自定义),用来启动 RsyncServer 服务,该账户的密码是随机生成的,建议修改。如果安装完成系统中未出现这个账户,可能是操作被拦截,可以手动建立。

01

02

03

04

05

# 3、服务端配置

打开安装目录(默认为:C:\Program Files (x86)\ICW),编辑文件 rsyncd.conf

use chroot = false                #不使用chroot
strict modes = false              #静态模式
log file = rsyncd.log             #log文件名,可以指定路径
pid file = rsyncd.pid             #pid文件名,可以指定路径
port = 873                        #默认端口873
uid = 0                           #不指定uid,不加这一行将无法使用任何账户
gid = 0                           #不指定gid
max connections = 10              #最大连接数10

# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygdrive/c/work
# 和linux不同的是windows的备份目录前面都要加/cygdrive

[SVN]                                   #同步模块名称(可用方便好记的名称)
path = /cygdrive/d/Repositories         #需要备份的路径(服务端D盘Repositories目录)
read only = false                       #只读
transfer logging = yes                  #记录传输日志
ignore errors                           #忽略无关的IO错误
list = no                               #不列文件表
hosts allow = 192.168.1.0/255.255.255.0 #允许访问的IP多个用英文逗号,分割
hosts deny = *                          #不允许hosts allow以外的任何IP访问
include from = etc/rsyncd.ncac.include  #需要同步的目录或者文件 (可设置可不设置)
exclude from = etc/rsyncd.ncac.exclude  #不同步的目录或者文件
auth users = SvcCWRSYNC                 #认证用户名
secrets file = rsync.secrets            #认证用户的用户名和密码存储位置

以上代码需要注意的是文件目录的写法,比如 C:\Program Files (x86)\ICW 需要表示为 /cygdrive/c/Program Files (x86)/ICW

cwRsyncServer 的安装目录下,使用记事本程序建立一个 rsync.secrets 的文件,在里面添加用户名和密码等信息,例如 SvcCWRSYNC:J1yv3SIZe3m56f

注:用户名是可以重新指定的,但是要在该用户名和密码建立的前提下才可以。

在 Windows 管理工具中打开服务,或者在运行中输入 services.msc 打开服务,启动 RsyncServer 服务,为了使用方便,你可以将 RsyncServer 服务的属性修改为自动启动,然后在使用 netstat –an 命令看 8173 端口是否被监听。

07

提示

如果 RsyncServer 服务重启之后报错,则需要删除安装目录下 .pid 文件,此文件会跟着服务启动以后重新创建。

# 4、客户端安装

客户端服务器即终端服务器,通常为发布后的静态网站所在的服务器。

下载后双击运行 cwRsync_4.1.0_Installer.exe 文件,按照向导安装,客户端无需编辑配置文档,直接安装下一步即可。

系统变量中,将客户端的程序目录添加进 PATH 变量,注意,不是安装目录的根目录,而是程序的目录,即 bin 目录。

前文系统变量输入之后,该命令就可以直接运行,如果未成功,可以 CD 跳转到 BIN 目录,再运行命令。

打开命令行窗口,由于必须要在 rsync.exe 所在目录下运行命令,所以先 cd 到 cwRsync 的 bin 目录下,然后在执行命令:

cd 'C:\Program Files (x86)\cwRsync\bin'
rsync.exe -avzP --progress --delete --password-file=/cygdrive/c/SvcwRsync.ps<p.txt

rsync.exe 命令可选参数:

参数 说明
-a 全部,相当于-rlptgoD
-r 递归
-l 链接文件,意思是拷贝链接文件
-p 表示保持文件原有权限
-t 保持文件原有时间
-g 保持文件原有用户组
-o 保持文件原有属主
-g 保持文件原有用户组
-D 相当于块设备文件
-v 详细模式输出
-z 传输时压缩
-P 显示传输进度
--progress 显示备份同步过程
--delete 删除 Client 中有 Server 没有的文件
--password-file 账户@ip::模块名 表示 Rsync 服务器,如果服务端没有配置用户名并允许匿名,则可以不加账户

最后传递的参数 /cygdrive/d/wwwroot 表示同步到本地目录 D:\wwwroot 下。

运行成功屏幕显示password,此时输入账户对应的密码即可开始同步。

# 5、设置计划任务

为了避免人工定时操作,可以将命令编辑为 bat 文档,再添加到任务计划中。

创建一个批量处理脚本 rsync.bat,放到客户端安装目录的 bin 文件夹下,内容如下:

@echo off
set RSYNC_HOME= C:\Program Files\cwRsync\bin
cd %RSYNC_HOME%
rsync.exe -avzP --progress --delete --password-file=/cygdrive/c/rsync.password<p.txt administrator@192.168.1.10::SVN /cygdrive/e/SvnBackupData

接下来,在 Windows 管理工具 下打开 计划任务程序,执行以下操作:

09

10

11

12

13

14

15

16

至此,计划任务配置完成。

上次更新: 2023/8/23 下午3:49:04