我们有一个 Windows 文件存储(不要问),现在我想从 Windows、Mac 和 Linux 与机器进行 rsync。
所以我安装了自由SSHd(登录 shell 设置为C:/cygwin64/bin/sh.exe
),设置证书并从 Linux 测试test.dat
有 0 个字节:
ssh myuser@winmachinename "C:/cygwin64/bin/true.exe" > test.dat
即使使用实际输出进行双重检查也可以正常工作:
ssh myuser@winmachinename "C:/cygwin64/bin/ls.exe" > test.dat
现在,当我调用 rsync 时:
rsync --progress -avz -e ssh myuser@winmachinename:/c/Users ~/test
它失败了:
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(174) [Receiver=3.1.0]
就阅读文档而言,当第一次测试成功时,这种情况不应该发生!?
我现在已经没有主意了——有什么建议可以调试这个问题吗?
编辑:
| OS | rsync version |
|:--------------|:------------------------------------------|
| Windows | rsync version 3.0.9 protocol version 30 |
| Linux | rsync version 3.1.0 protocol version 31 |
答案1
问题似乎出在路径上。
由于我安装了 mysysgit PATH
(但没有 cygwin),因此sh.exe
从 mysysgit 调用可执行文件失败。在PATH
mysysgit 之前添加 cygwin 时,错误消失。
之后,我有一个新问题。