Rsync в Windows - работа с сокетами, не являющимися сокетами

StackOverflow https://stackoverflow.com/questions/106544

  •  01-07-2019
  •  | 
  •  

Вопрос

Я получаю следующую ошибку при попытке запустить последнюю версию rsync Cygwin в 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]
Это было полезно?

Решение

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

Другие советы

Вероятно, у вас что-то блокирует 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 

обратите внимание на команду "выполнить" после запуска 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 sync.exe

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

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

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

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

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

Последовав совету @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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top