rsync通过SSH从Linux到Windows SBS 2003协议不匹配

可能重复:
协议版本不匹配 – 你的shell是干净的吗?

我正在试图将我的linuxnetworking服务器备份到我们在办公室的本地windows sbs 2003服务器。 我已经在Windows服务器上设置了ssh和cwrsync,并且已经确认linux服务器可以通过命令到达windows服务器:

ssh [email protected]

它要求一个密码,并连接好。 但是当我运行这个命令来启动备份时:

rsync -avz -e ssh home / account / public_html / some / small / directory / [email protected]:/ cygdrive / c / backup / destination / directory /

input密码后出现此错误:

协议版本不匹配 – 你的shell是干净的吗?

然后死了。

这是什么意思,我该如何解决?

错误protocol version mismatch -- is your shell clean? 意味着本地rsync从远程机器获取一些不属于rsync协议的无效数据。

这通常是由自动shelllogin消息引起的,比如当天消息/etc/motd ),因此is your shell clean? 部分。

手动login到本机,看看是否有任何这样的消息。 为了rsync工作,你只应该得到远程命令行提示符。 如果您收到消息,请尝试将其禁用。 看看你的shellconfiguration文件(例如~/.bashrc ,bash shell的/etc/bash.bashrc ),如果它们包含任何产生这个输出的命令的话。

其中一个login脚本(.bashrc / .cshrc /等)可能正在向terminal输出数据,当它不应该。 这导致ssh错误,当它连接并准备好复制,因为它开始接收额外的数据,它不期望。 删除在启动脚本中生成的输出。

您可以检查您的terminal是否是交互式的,只能通过在bashrc中使用以下代码输出文本。 其他shell也有相同的东西:

 if shopt -q login_shell; then [any code that outputs text here] fi