rsync over ssh "помилка в потоці даних протоколу" (код 12). ssh працює


50

Я намагався:

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 магічно працює. Я би вдячний здогадам про те, що це могло бути у світлі того, як воно пройде.


1
У вас є дозвіл на запис /homeна віддаленому сервері?
souravc

Звичайно. Коли я ssh, я можу почати робити котів і чіпати і т.д. Я говорю про виклик rsync під час віддаленого сервера для переміщення речей локально. Я повинен мати дозволи на запис як в оригінальній, так і в цільовій папці
user3391229

Я отримував цю помилку (намагаючись rsync мій блог Pelican на моєму сервері) раз у раз. Я знаходжу, що якщо я забиваю на сервер, то спробуйте rsync ще раз, він справно працює. Не впевнений, що відбувається між ними.
Ентоні C

Недостатня кількість місця на віддаленому сервері також може призвести до цієї помилки.
Макан

Відповіді:


84

Ви також можете отримати цю помилку, якщо вказати віддалений шлях, який не існує.

Я отримав цю помилку в 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]

Виявилося, що це просто питання затуманення шляху призначення. appsРеж не існувало. Коли я змінив це на static:sites/myapp.comзамість цього ( sitesdir дійсно існував), помилка пішла.

Добре, якщо остаточного каталогу в шляху не існує (я міг би зробити static:sites/mynewapp.com), але, здається, будь-який попередній каталог вже повинен існувати.


Я майже забув задати це питання. З тих пір у мене не було такої ж проблеми. Я підозрюю, що саме так і сталося.
користувач3391229

18
Дякую! Це повинно бути найбільш оманливим повідомленням про помилку коли-небудь.
Франс

1
також якщо у вас немає виконуваного файлу rsync, воно показує подібну помилку. Здебільшого я бачив у ансібілах
манній

Чомусь я думав, що rsync створить каталог, якщо його не існує ... Я думаю, що ні - вам потрібно спершу створити каталог призначення. Якщо шлях призначення закінчується на косою рисою, каталог повинен існувати. Якщо вона не закінчується косою рисою, рівень над нею повинен існувати.
squarecandy

1
Моя проблема: віддалений диск заповнений.
Чжан Базз

15

Я отримав цю помилку, коли rsyncїї не встановлено на цільовому хості. У моєму випадку також було вказано повідомлення про помилку rsync: command not found. Простий

sudo apt-get install rsync

на цільовому хості вирішили проблему.


У мене була помилка з кодом 12, і жодного повідомлення про команду rsync не знайдено. Після встановлення помилка зникла.
Хбар

3

Чи створює ваш скрипт входу на віддаленому кінці сміття на stdout? Перевірте це за допомогою

ssh -p YY me@XXXXX /bin/true > out.txt

Якщо out.txtдані містять дані, визначте висловлювання, що порушують свою поведінку, .profileабо .bashrcвставте їх

if [ ! -t 1 ]; then
  echo garbage
fi

Нада у out.txt. Але я також спробував це сьогодні вдень, у період, коли я не міг відтворити проблему.
користувач3391229

Я спробував це в той момент, коли я міг створити проблему, і я нічого не отримав у out.txt.
joshreesjones

1

Можливо, вам доведеться прокласти повний шлях до бінарного файлу ssh, тобто

rsync -v -v -e '/usr/bin/ssh -p YY' ./testfile me@XXXXX:/home

Хоча є й інші можливі причини.


Так, я читав, що може статися, коли у вас є кілька примірників ssh, на які ви можете посилатися. Однак той факт, що він пішов наступного дня, робить це малоймовірним
користувач3391229

0

Ця помилка також може статися, якщо шлях до rsync у віддаленій системі не є таким, яким вважається, що локальна система є такою. Ви можете побачити, що відбувається, вказавши -vv (або навіть більше vs). Якщо це проблема, ви можете вказати віддалений шлях до rsync за допомогою параметра --rsync-path.


0

Я бачив цю помилку:

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]

Мені вдалося потрапити на віддалений хост і виявив, що це не має місця на диску.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.