2011-08-31 49 views
37

我试图在Windows 7上使用rsync。我安装了cwRsync并尝试连接到Ubuntu 9.04。为什么在Windows上意外关闭此rsync连接?

$ rsync -azC --force --more-options ./ [email protected]:/my/path/ 
rsync: connection unexpectedly closed (0 bytes received so far) [receiver] 
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [receiver=3.0.5] 
rsync: connection unexpectedly closed (0 bytes received so far) [sender] 
rsync error: error in rsync protocol data stream (code 12) at io.c(610) [sender=3.0.8] 
+2

这个错误似乎是一个捕获所有。如果您为文件指定目标文件名,而不仅仅指定目录,也会出现这种情况。 – Nick

+4

这可能迟了,但为后代增添了一些。文件同步到的文件系统已达到100%的磁盘空间。 – bram

回答

3

我得到的解决方案。我已经使用了cygwin,这是Windows的rsync命令只能在Windows shell中工作的问题,并且可以在Windows PowerShell中工作。

有几次它发生了两个linux盒子之间的相同错误。而似乎是由rsync的

+0

如果目标服务器上的rsync不存在,也会发生这种情况。 –

4

此错误消息可能意味着你要么输入了错误的服务器名称或忘记在服务器启动SSH服务器。确保在端口22上的服务器上运行ssh服务器,并且它没有受到防火墙限制。你可以用ssh [email protected]来测试。

+0

nop服务器工作正常,名称正确scp命令和ssh命令也可以正常工作 – rkmax

+0

@rkmax更新了其他可能原因的答案,但如果ssh工作,那些也不适用。你可以尝试一个没有任何不必要参数的rsync,然后上传一个数据包转储,例如用[wireshark](http://wireshark.org/)生成的数据包转储? – phihag

+0

是服务器在22端口上侦听,只用from_dir和user @ host:to_dir运行命令并获得相同的消息 – rkmax

12

的不兼容版本的rsync变化版本时,我看到了这一点。在旧版本,它的工作说:

rsync -e 'ssh ...

rsync.exessh.exe在同一个目录下。

有了新版本,我必须指定路径:

rsync -e './ssh ...

和它的工作。

+2

+1除了一个更好的示例路径是rsync -e/usr/bin/ssh .... – maverick

+1

@maverick是的我确定rsync -e/usr/bin/ssh.exe会更好。 -_- –

6

我有这个问题,但只有当我试图从Linux(RH)服务器在Solaris服务器与rsync。我的修复是确保rsync在两个盒子上具有相同的路径,并且rsync的所有权是相同的。

在Linux中,rsync的路径是在/ usr/bin中,在Solaris系统是在/ usr/local/bin目录。因此,在Solaris机器上,我执行了ls -s/usr/local/bin/rsync/usr/bin/rsync。

我仍然有同样的问题,并注意到所有权的差异。在linux上,它是root:root,在solaris上是bin:bin。将solaris更改为root:root修复它。

+3

如果远程rsync二进制文件位于异常位置,则可以指定它:rsync -azC --rsync-path =/usr/local/bin/rsync ...例如。 –

5

我在2个Linux框之间出现了这个错误。通过在远程盒子和本地盒子上安装RSYNC很容易解决。

+0

是的,如果rsync可以更详细地描述错误,那就太好了。我收到了这个问题的所有其他“答案”所产生的完全相同的错误消息,但是我的另一个基本问题是:在Linux机器上目标目录的文件权限和所有权。在验证我没有发现本答复中提到的任何其他问题(rsync路径,bin版本不匹配,分区权限,ssh路径等)之后才发现。 – hobs

+0

谢谢; D这解决了我的问题......我接受的答案在这里; D –

21

对我来说,诀窍是我ssh冲突。

我在我的Windows路径上安装了Git,其中包括ssh。 cwrsync也会安装ssh。

诀窍是要有做一个批处理文件来设置正确的路径:

rsync.bat

@echo off 
SETLOCAL 
SET CWRSYNCHOME=c:\commands\cwrsync 
SET HOME=c:\Users\Petah\ 
SET CWOLDPATH=%PATH% 
SET PATH=%CWRSYNCHOME%\bin;%PATH% 
%~dp0\cwrsync\bin\rsync.exe %* 

在Windows上,您可以键入where ssh检查,如果这是一个问题。你会得到这样的东西:

where ssh 
C:\Program Files (x86)\Git\bin\ssh.exe 
C:\Program Files\cwRsync\ssh.exe 
+1

也有问题与github的git客户端的shell ssh版本。做一个'apt-cyg安装openssh'为我解决了这个问题。如果不确定是否有这个问题,请尝试从cygwin提示符中选择“哪个ssh”。 –

+0

或'你从哪里ssh' Windows CLI – Petah

+0

嗨,我很抱歉,它看起来像我有同样的问题,但我对计算机环境的不了解并不能帮助我解决这个问题:http://stackoverflow.com/questions/32756423/rule-conflict-between-multiple-ssh感谢 – leonsaysHi

相关问题