使用 rsync (cwRsync Server) 同步 Windows 上的文件

Published at 21st October, 2016

rsync 是一个 UNIX 下很流行的命令行同步工具。rsync 有两种工作模式,一种是 rsync 自己作为一个服务端运行监听客户端的同步请求,另一种是基于 SSH 直接进行同步(即 rsync over SSH)。我比较喜欢第二种模式,因为第二种模式下它可以使用公钥登录不需要每次都输入密码,进一步提高了自动化程度,另外它还可以同步任意路径不需要提前指定。

这篇文章将介绍使用 rsync over SSH 对 Windows 系统进行文件同步。使用命令行工具最大的好处在于一次性配置之后(即编写命令行脚本)可以非常轻松地重复操作。键盘上按回车就可以进行同步,这可比重复进行【远程连接 -> 打开挂载的分区 -> 复制 -> 粘贴】要快捷多了。

1. 安装 cwRsync Server

下载地址:https://www.backupassist.com/rsync/cwRsyncServer_4.1.0_Installer.zip

一路下一步即可。安装向导中出现的用户名和密码可以忽略,用不到。

2. 安装 Copssh

下载地址:https://www.backupassist.com/rsync/Copssh_4.1.0_Installer.zip

一路下一步即可。安装向导中出现的用户名和密码可以忽略,用不到。

3. 创建 SSH 登录所需的 Windows NT 用户

计算机管理 -> 本地用户和组 -> 用户 -> 新用户

该用户的用户名将作为 SSH 登录的用户名,密码将作为 SSH 登录的密码,权限将作为 SSH 登录后的权限。

推荐给予该用户普通权限而不是管理权限,我们将稍后以白名单方式给该用户读写权限。

4. 将新建的 SSH 用户添加到 Copssh 登录列表

Copssh 采用白名单机制,本地 Windows NT 用户不能直接登录,只有白名单上的用户才能被登录,因此需要添加用户。

打开 COPSSH Control Panel (开始菜单 -> Copssh -> COPSSH Control Panel),在 Users 下点击 Add 打开添加向导,选择第三步中新建的用户,一路下一步添加即可。

5. 测试一下 SSH 是否正常~

Copssh 监听在 22 端口,此刻应当已经可以通过 SSH 协议使用第三步中建的账户登录了。

ssh ssh_username@your_host

如果无法登录:

  • 检查防火墙配置
  • services.msc 中确保 Copssh 的服务已经启动

6. (可选)将自己的公钥加入 SSH 用户

加公钥之后就可以免密码登录了。需要将公钥加到 C:\Program Files (x86)\ICW\home\ssh_username\.ssh\authorized_keys

  • 其中 ssh_username 是第三步中建立的用户名。
  • 如果是 32 位系统, 路径是 C:\Program Files\ICW\...

7. 修改 SSH 用户的文件系统权限

SSH 用户不是管理员用户,因而初始情况下不具有写权限。对于允许通过 rsync 同步的目录,右键属性编辑权限,给予第三步中的用户读写权限即可。

8. Done

假设需要同步的 local_dir 目录到远程的 C:\foo\bar 目录下:

rsync -rltz ./local_dir ssh_username@your_host:/cygdrive/c/foo/bar/

Comments