Ошибка 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,