Я пытался:
rsync -v -v -e 'ssh -p YY' ./testfile me@XXXXX:/home
Сообщение об ошибке
opening connection using: ssh -p YY -l me 146.6.84.206 rsync ->-server -vvve.s . /home
[sender] make_file(testfile,*,0)
send_file_list done
send_files starting
server_recv(2) starting pid=17537
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600)[sender=3.0.6]
_exit_cleanup(code=12, file=io.c, line=600): about to call exit(12)
Это прекрасно работает:
ssh -p YY me@XXXXX
Что наводит на мысль, что проблема не в том, что sshd
не работает и порт YY не защищен. Я все равно проверил.
Какие еще проблемы могут быть?
РЕДАКТИРОВАТЬ: Проблема, кажется, "саморазрешимый". Я не мог повторить на следующий день. Я запустил свой локальный компьютер. Возможно, у меня был другой IP-адрес, чем в прошлый раз. И теперь rsync волшебным образом работает. Я был бы признателен за предположения о том, что это могло бы быть в свете его ухода.
Вы также можете получить эту ошибку, если укажете удаленный путь, который не существует.
Я получил эту ошибку в OS X:
$ rsync -avz public/ static:apps/myapp.com
building file list ... done
rsync: connection unexpectedly closed (8 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-47/rsync/io.c(453) [sender=2.6.9]
Оказалось, это просто вопрос неправильного ввода пути назначения. Каталог приложений
не существует. Когда я изменил это на static: sites / myapp.com
вместо этого (каталог sites
dir действительно ] существовал), ошибка исчезла.
Это нормально, если последний каталог в пути не существует (я мог бы сделать static: sites / mynewapp.com
)но похоже, что любой предыдущий каталог уже должен существовать.
Производит ли ваш скрипт входа в систему на удалённом конце мусор на stdout? Проверьте это с помощью
ssh -p YY me@XXXXX /bin/true > out.txt
Если out.txt
содержит данные, идентифицируйте оскорбительные выражения в вашем .profile
или .bashrc
и оберните их в
if [ ! -t 1 ]; then
echo garbage
fi
Возможно, вам понадобится вставить полный путь к бинарному ssh, т.е.
rsync -v -v -e '/usr/bin/ssh -p YY' ./testfile me@XXXXX:/home
, хотя есть и другие возможные причины.
Эта ошибка также может произойти, если путь к rsync в удаленной системе не такой, как предполагается в локальной системе. Вы можете увидеть, что происходит, указав -vv (или даже больше vs). Если это проблема, вы можете указать удаленный путь к rsync с помощью опции --rsync-path.
Я видел эту ошибку:
rsync -e 'ssh -v'
debug1: Exit status 11
...
rsync error: error in rsync protocol data stream (code 12) at /BuildRoot
/Library/Caches/com.apple.xbs/Sources/rsync/rsync-51/rsync/io.c(453)
[sender=2.6.9]
Я смог подключиться по ssh к удаленному хосту и обнаружил, что на нем нет места на диске.
Я получил эту ошибку, когда rsync
не был установлен на целевом хосте. В моем случае в сообщении об ошибке также говорилось rsync: команда не найдена
. Простое
sudo apt-get install rsync
на целевом хосте решило проблему.
Я обнаружил эту ошибку, потому что выполнял синхронизацию с заполненным диском! Проверьте использование диска, если другие решения здесь не помогают решить эту проблему.
Я получил эту ошибку в потоке данных протокола rsync (код 12) для пары rsync с разными версиями. Поэтому, пожалуйста, проверьте версии rsync как на клиенте, так и на сервере.
В моем случае локальный rsync был версии 2.6.9 (в Mac OSX), а удаленный - версии 3 (сейчас не могу вспомнить точную версию). Как только я обновил свой локальный rsync до версии 3 (используя brew), проблема была исправлена.