Rsync в Windows - работа с сокетом без сокета - PullRequest
1 голос
/ 20 сентября 2008

Я получаю следующую ошибку при попытке запустить последнюю версию Cygwin rsync в Windows XP SP2. Ошибка возникает при попытках как локальной синхронизации (т. Е. Источника и назначения только на локальном жестком диске), так и удаленной синхронизации (с использованием «-e ssh» из пакета openssh). Любой совет, как это исправить / обойти это?

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 ]

3 голосов
/ 24 марта 2010

Возможно, у вас есть что-то блокирующее rsync. В моем случае это антивирус NOD32. Вы можете проверить это, запустив rsync в 'gdb' следующим образом:

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

обратите внимание на команду "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

1 голос
/ 14 ноября 2008

Помните, что давняя ошибка реализации канала в Cygwin приводит к зависанию rsync, если он используется через соединение SSH.

Начиная с Cygwin v. 1.7, кажется, что единственный надежный способ передачи большого количества данных с помощью rsync - это подключение к демону rsync с использованием протокола rsync. DeltaCopy - это просто обертка для этого метода.

Некоторые пользователи, видимо, добились успеха при передаче SSH данных из Windows в Unix вместо того, чтобы извлекать данные из Windows на стороне Unix. Однако, по нашему опыту, это тоже ненадежно.

Google для cygwin, rsync, ssh и pipe / hang / stall, и вы найдете больше информации об этой проблеме.

0 голосов
/ 30 мая 2014

Следуя совету @akaihola, я нашел это сообщение в блоге с решением той же проблемы. Я выкладываю решение здесь, но кредиты идут на Марк Абрамовиц

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.

0 голосов
/ 20 июля 2009

Я обнаружил, что это ошибка winsock. Я подтвердил, что проблема начинается с установки диспетчера коммуникаций ATT (версия 6.12.0046.0) для беспроводной карты Sierra Wireless (875U). Удалите Communication Manager, и ошибка rsync исчезнет.

0 голосов
/ 20 сентября 2008

Не совсем ответ на ваш вопрос, но я нашел Delta Copy гораздо лучшим вариантом, чем возиться с Cygwin. Он также подключается к обычным демонам rsync.

...