Ошибка rsync: неверный номер файла - PullRequest
1 голос
/ 07 июня 2011

Я пытаюсь rsync содержимого с локальной машины (Windows 7 на 64-битной) на удаленный сервер (Ubuntu 8 на 64-битной), и это не удается. Любые советы приветствуются, поскольку я уже потратил слишком много времени на эту ерунду ... Заранее спасибо!

$ ls -al
total 3
drwxr-xr-x    4 www www     4096 Jun  7 11:04 .
drwxr-xr-x    5 www www     4096 Jun  7 13:13 ..
drwxr-xr-x    7 www www        0 Jun  7 11:04 release-20110607110404

$ rsync -avz ./release-20110607110404/ www@web1:/home/www/
opening connection using: ssh -l www web1 rsync --server -vvlogDtprze.iLsf . /home/www/
select: Bad file number
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(610) [sender=3.0.8]

$ rsync --version
rsync  version 3.0.8  protocol version 30
Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, no xattrs, iconv, symtimes   

Ответы [ 2 ]

1 голос
/ 31 мая 2012

Хех, я понял это, по крайней мере, нашел источник проблемы ... Он не работает в git bash от msysgit (code.google.com/p/msysgit), но работает в обычной командной строке Windows! Weird !!!

0 голосов
/ 20 июня 2014

Хорошо, проверьте это. GitBash поставляется с набором * nix утилит (включая ssh), но cwRsync также поставляется с ssh. Теперь, в моей системе, версия ssh, которая поставляется с GitBash, безумно устарела, а та, которая поставляется с cwRsync, совсем недавно. Если я запускаю which ssh изнутри GitBash, очевидно, что версия GitBash обнаруживается. Итак, угадайте, какую версию rsync будете использовать? Я думаю, что не тот.

Вы можете обойти это.

Вы пытаетесь запустить эту команду:

rsync -avz ./release-20110607110404/ www@web1:/home/www/

Но поскольку вы хотите использовать другой ssh, вам понадобится что-то вроде этого:

rsync -avz -e '<path to cwRsync ssh> www@web1' ./release-20110607110404/ :/home/www/

Теперь, если вы похожи на меня, у вас будет другая проблема: ssh будет жаловаться на то, что у вашего конфигурационного файла ssh неправильные разрешения. Это потому, что он смотрит в /cygdrive/<the correct path to your config file> по какой-то причине. Но это тоже поправимо:

rsync -avz -e '<path to cwRsync ssh> -F <path to ssh config> www@web1' ./release-20110607110404/ :/home/www/

Теперь имейте в виду, что пути, которые вы должны использовать для ssh, и для вашего конфигурационного файла ssh должны быть в формате обратной косой черты Windows (по крайней мере, моя система, кажется, жалуется, если я не использую этот формат) но я считаю, что это сработает для вас, и вы можете остаться в GitBash вместо использования cmd.

...