目前rsync的windows版本挺乱的,而且各种包装封装的乱七八糟,网上各路文章又不求甚解,索性还是自己搞清楚了,做了个明晰简略的包包。
首先分辨一下,其实所谓的rsync(客户端)与rsyncd(服务器端)都是同一个程序文件,无非是用参数和配置文件来决定怎么运行,故此先鄙视一下那个cwRsyncServer的收费版本先。
然后关于版本问题,其实这货不论Linux还是Unix的版本都很多年没更新了,帮助信息里只要看到:
rsync version 3.1.2 protocol version 31
就是最新版本了,这两个数字能对上就可以。
然后呢,这玩意的Windows版本是基于cygwin环境的,这个实际上就相当于在操作系统和应用程序之间增加了一个api的封装层,用来让Linux的程序可以无缝移植到Windows系统上,但是因为两个系统的底层差异较大,所以有些功能属于纯模拟状态,有些功能属于降级状态,比如大多数Linux/Unix的程序移植到windows上以后呢,都只能用鸡肋版的select,而用不上IOCP,所以网络性能绝逼不会高,类似的降级挺多的,不过功能都是能实现的,所以很多小工具直接拿过来其实挺爽的。
还有要说明的是,网上能下载到的那个最新版的cwRsyncServer 4.1的那个版本,里面带的rsync版本很老了,这也是我写本文的原因之一。
将后面提供的压缩包解压至 C:\Service\Rsync ,然后配置文件在 C:\Service\Rsync\rsyncd.conf ,用户密码文件在 C:\Service\Rsync\user.txt ,里面全都写的有例子,自己看吧。
安装成系统服务的命令(注意下面所有内容是同一行):
C:\Service\Rsync\bin\cygrunsrv --install RsyncServer --path C:\Service\Rsync\bin\rsync.exe --args "--config rsyncd.conf --daemon --no-detach" --chdir C:\Service\Rsync --stderr C:\Service\Rsync\rsyncd-stderr.log --stdout C:\Service\Rsync\rsyncd-stdin.log
卸载服务的命令:
C:\Service\Rsync\bin\cygrunsrv --remove RsyncServer