介绍

rsync 是一个用来快速增量传输文件的开源工具。

需求

rsync 的核心特点就是增量传输文件变化的部分,具体信息可以参考 rsync - 维基百科,自由的百科全书

  • 如果需求是每次将变化的文件放到新的目录中单独传输,那么可以考虑自己实现简单的传输缓存。
  • 如果需求就是要传输经常改动的文件,那么使用 rsync 能有效地节省时间与流量。

方案选择

cwRsync

cwRsync 实现了一个图形化客户端,但是用起来并不是很方便,而且这是一个收费软件。

Cygwin

Cygwin 是自由软件的集合,同时包含 POSIX API 兼容的库。

正好,rsync 也在 Cygwin 中,也就是说这是免费的,因此尝试使用。

我并未在网上搜索到一个介绍如何在 Windows 下使用 Cygwin 安装 rsync 的,大部分人的方案都是使用 cwRsync。

使用

安装 Cygwin,从官网下载安装,需要配置下国内网易镜像源。

然后在安装软件列表时,需要选择 rsync,如果想要节省时间的话,所有其他软件都可以不下载安装。

rsync 可以直接在 CMD 下调用,只要按照 Cygwin 的路径写法修改下路径即可,可以参考以下用例:

1
C:\cygwin64\bin\rsync.exe --stats -vzrt --port=8000 --password-file=/cygdrive/D/Test/rsync_password.txt /cygdrive/D/Test/Data/ rsync@192.168.1.100::volume/Data/

不要使用 --archive 这个复合参数(archive mode; same as -rlptgoD (no -H)),会修改用户及权限,导致 FTP HTTP 无法访问之类的问题。

环境变量增加 C:\cygwin64\bin\,这样就可以直接使用 rsync,与 macOS 保持一致,并且改完之后需要重启 Jenkins agent 以使环境变量生效。

其他

Windows 下 rsync 服务器搭建可以参考这篇文章: