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

时间:2020-03-06 14:28:21  来源:igfitidea点击:

尝试在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]

解决方案

并不是真正回答问题,但我发现与使用Cygwin相比,Delta Copy是更好的选择。它也连接到常规的rsync守护程序。

请注意,如果通过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,我们将找到有关此问题的更多信息。

我发现这是一个winsock错误。我确认问题是从为Sierra无线飞行卡(875U)安装ATT通讯管理器(版本6.12.0046.0)开始的。卸载通讯管理器,rsync错误消失。

我们可能有阻止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