2008-09-20 76 views
1

嘗試在Windows XP SP2中運行最新的Cygwin版本的rsync時出現以下錯誤。在本地同步(即:本地硬盤上的源和目標)和遠程同步(使用openssh軟件包中的「-e ssh」)時都會發生此錯誤。有關如何修復/解決方法的任何建議?Windows上的Rsync - 非插座上的套接字操作

 
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] 

回答

0

不是一個真正的回答你的問題,但我發現Delta Copy比使用Cygwin亂搞一個更好的選擇。它也連接到常規的rsync守護進程。

1

請注意,Cygwin中長期存在的管道實現錯誤會導致rsync在通過SSH連接使用時掛起。

從Cygwin v.1.7開始,似乎使用rsync傳輸大量數據的唯一可靠方法是使用rsync協議連接到rsync守護進程。 DeltaCopy只是這個方法的一個漂亮的包裝。

一些用戶顯然已經成功地將SSH數據從Windows推送到Unix,而不是從Unix的Unix端拔出。儘管如此,我們的經驗也是不可靠的。

Google對於cygwin,rsync,ssh和pipe/hang/stall,你會發現更多關於這個問題的信息。

0

我發現這是一個winsock錯誤。我確認問題始於爲Sierra Wireless Aircard(875U)安裝ATT Communcations Manager(版本6.12.0046.0)。卸載Communications Manager並且rsync錯誤消失。

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 

記「運行」廣發行已經開始命令後。你會看到一些像這樣的輸出:

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的\斌\ rsync.exe

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 

當然你需要Cygwin的rsync的。