1

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

bash-3.2$ rsync -a dir1 dir2
rsync:无法复制/关闭:非套接字上的套接字操作(108)
rsync 错误:/home/lapo/packaging/tmp/rsync-2.6.9/pipe.c(143) [receiver=2.6.9] 处的 IPC 代码(代码 14)错误
rsync:读取错误:对等方重置连接(104)
rsync 错误:/home/lapo/packaging/tmp/rsync-2.6.9/io.c(604) [sender=2.6.9] 处的 IPC 代码(代码 14)错误
4

5 回答 5

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 启动后的“运行”命令。你会看到一些像这样的输出:

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

于 2010-03-24T12:21:28.137 回答
1

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

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

一些用户显然在 SSH 将数据从 Windows 推送到 Unix 上取得了成功,而不是在 Unix 端从 Windows 拉取数据。不过,根据我们的经验,这也是不可靠的。

谷歌搜索 cygwin、rsync、ssh 和 pipe/hang/stall,你会发现更多关于这个问题的信息。

于 2008-11-14T11:44:35.033 回答
0

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

于 2008-09-20T01:42:29.903 回答
0

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

于 2009-07-20T17:14:17.550 回答
0

在遵循@akaihola 的建议后,我发现这篇博客文章解决了同样的问题。我在这里发布解决方案,但功劳归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。

于 2014-05-30T17:14:21.107 回答