Windows上的Rsync - 非套接字上的套接字操作

时间:2008-09-20 00:22:03

标签: sockets cygwin rsync

尝试在Windows XP SP2中运行最新的Cygwin版本的rsync时出现以下错误。尝试同时进行本地同步(即仅本地硬盘上的源和目标)和远程同步(使用openssh软件包中的“-e ssh”)时会发生错误。关于如何修复/解决它的任何建议?

bash-3.2$ rsync -a dir1 dir2
rsync: Failed to dup/close: Socket operation on non-socket (108)
rsync error: error in IPC code (code 14) at /home/lapo/packaging/tmp/rsync-2.6.9/pipe.c(143) [receiver=2.6.9]
rsync: read error: Connection reset by peer (104)
rsync error: error in IPC code (code 14) at /home/lapo/packaging/tmp/rsync-2.6.9/io.c(604) [sender=2.6.9]

5 个答案:

答案 0 :(得分:3)

你可能有阻止rsync的东西。就我而言,它是NOD32防病毒软件。您可以通过在'gdb'中运行rsync来检查这一点,如下所示:

$ gdb --args /usr/bin/rsync -a somedir/ anotherdir
GNU gdb 6.8.0.20080328-cvs (cygwin-special)
.....
(no debugging symbols found)
(gdb) run 

注意gdb启动后的“run”命令。你会看到一些像这样的输出:

Starting program: /usr/bin/rsync -a somedir/ anotherdir
.....
(no debugging symbols found)
warning: NOD32 protected [MSAFD Tcpip [TCP/IP]]
warning: NOD32 protected [MSAFD Tcpip [UDP/IP]]
warning: NOD32 protected [MSAFD Tcpip [RAW/IP]]
warning: NOD32 protected [RSVP UDP Service Provider]
warning: NOD32 protected [RSVP TCP Service Provider]
(no debugging symbols found)
(no debugging symbols found)
---Type <return> to continue, or q <return> to quit---
(no debugging symbols found)
[New thread 1508.0x720]
[New thread 1508.0xeb0]
[New thread 1508.0x54c]
rsync: Failed to dup/close: Socket operation on non-socket
(108)
rsync error: error in IPC code (code 14) at
/home/lapo/packaging/rsync-3.0.4-1/src/rsync-3.0.4/pipe.c(147)
[receiver=3.0.4] 

因此,您必须将rsync添加到该病毒扫描程序(NOD32)中的排除列表中:

C:\ cygwin的\ BIN \ rsync.exe

答案 1 :(得分:1)

请注意,如果通过SSH连接使用rsync,则Cygwin中长期存在的管道实现错误会导致rsync挂起。

从Cygwin v.1.7开始,似乎使用rsync传输大量数据的唯一可靠方法是使用rsync协议连接到rsync守护程序。 DeltaCopy只是这种方法的一个很好的包装。

有些用户显然已经成功地在SSH上将数据从Windows推送到Unix而不是从Unix上取消Windows。根据我们的经验,这也是不可靠的。

Google for cygwin,rsync,ssh和pipe / hang / stall,您可以找到有关此问题的更多信息。

答案 2 :(得分:0)

对你的问题不是真正的答案,但我发现Delta Copy比使用Cygwin更好的选择。它也连接到常规的rsync守护进程。

答案 3 :(得分:0)

我发现这是一个winsock错误。我确认问题始于为Sierra Wireless Aircard(875U)安装ATT Communcations Manager(版本6.12.0046.0)。卸载Communications Manager,rsync错误消失。

答案 4 :(得分:0)

按照@akaihola的建议后,我找到了this博客文章,解决了同样的问题。 我在这里发布解决方案,但积分转到Marc Abramowitz

cygrunsrv --install "rsyncd" --path /usr/bin/rsync --args "--daemon --no-detach" --desc "Starts a rsync daemon for accepting incoming rsync connections" --disp "Rsync Daemon" --type auto

当然你需要带有rsync的Cygwin。