Ошибка rsync: неверный номер файла

Я пытаюсь 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 ответа

Решение

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

Хорошо, проверь это. 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,

Другие вопросы по тегам