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