ошибка rsync: ошибка в потоке данных протокола rsync (код 12)

Вопрос или проблема

У меня есть ПК с Windows 10, на котором установлен rsync 3.3.0 (через cygwin)

У меня есть Raspberry Pi 4 с Debian Linux и rsync 3.2.7

Я настроил свои SSH-ключи, чтобы получить доступ к Pi с ПК без пароля.

Я пытаюсь выполнить следующую команду:

C:\cygwin64\bin\rsync.exe -avz /Sites/monsters/ [email protected]:var/www/monsters.local

В этом случае в Raspberry Pi есть пользователь с именем saletto. Существует допустимый файл с именем monsters в соответствующих местах на обоих компьютерах. Также папка /Sites/ находится непосредственно на диске C: на ПК.

Затем я сталкиваюсь со следующими ошибками:

rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(232) [Receiver=3.2.7]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(231) [sender=3.3.0]

Некоторые из различных попыток отладки следующие:

  • Проверено, что rsync установлен в /usr/bin/rsync и имеет правильные разрешения (-rwxr-xr-x для root).
  • Успешно запущен rsync локально на Pi для копирования файлов внутри Pi (rsync -avz –progress ~/testfile /var/www/giantmonstersonthehorizon.local/).
  • Проверено, что rsync –server успешно запускается на Pi.
  • Подтверждено соединение SSH с Pi с компьютера под управлением Windows с использованием ssh -vvv [email protected].
  • Проверено, что /usr/bin/rsync доступен и выполняется удаленно, запустив ssh [email protected] “/usr/bin/rsync –version”. – Подтверждено, что бинарный файл rsync находится в /usr/bin/rsync и корректно выполняется на Pi.
  • Проверен файл /etc/ssh/sshd_config на наличие ограничений (PermitUserEnvironment, AllowTcpForwarding, ForceCommand закомментированы).
  • Проверено, что rsync имеет правильные разрешения на Pi (/usr/bin/rsync исполняется).

Мои ключевые выводы и нерешенные вопросы

  • rsync работает локально на Pi, но не выполняется при запуске удаленно через SSH с Windows.
  • Аутентификация SSH проходит успешно, но процесс rsync не устанавливает связь.
  • Возможно, существует несовместимость между Cygwin rsync и rsync на Pi или проблема с сетью, которая прерывает процесс rsync до передачи данных.

Заранее благодарю за вашу помощь!

Ответ или решение

Ошибка Rsync с кодом 12 является достаточно распространенной проблемой, которая указывает на неполадку в протоколе передачи данных Rsync. Основная сложность заключается в том, что эта ошибка не всегда указывает на конкретную проблему, что затрудняет её диагностику и устранение. В данном случае, проблема возникает при передаче данных между Windows 10 с Rsync 3.3.0 на базе Cygwin и Raspberry Pi 4 с Debian Linux и Rsync 3.2.7. Рассмотрим возможные причины данной ошибки и способы её устранения.

Теория

Библиотека Rsync используется для синхронизации файлов между разными системами через SSH. При возникновении ошибки с кодом 12, как правило, есть проблема с подключением или согласованием протоколов между клиентом и сервером Rsync. В большинстве случаев, данная ошибка связана с:

  1. Неподдерживаемым или некорректным протоколом связи. Версии Rsync должны корректно сопоставляться друг с другом, и когда возникает несовпадение, это может привести к проблемам с передачей данных.

  2. Сетевой или брандмауэрной конфигурацией. Ограничения брандмауэра могут препятствовать установлению корректного соединения между системами.

  3. Неправильными настройками SSH или неправильными привилегиями пользователей. Это включает в себя ошибки в конфигурации SSH или проблемы с разрешениями ключей, используемых для аутентификации.

  4. Отсутствующими или поврежденными зависимостями в Cygwin. Пакеты Cygwin должны быть правильно установлены, чтобы обеспечить полноценную работу Rsync.

Примеры

В вашей конкретной ситуации была выполнена значительная предварительная работа для диагностики проблемы:

  • Версия Rsync была установлена корректно и прошла проверку на доступность как на удаленном Pi, так и на локальном уровне.
  • Успешно выполнена локальная синхронизация через Rsync на Raspberry Pi.
  • SSH ключи были настроены правильно и обеспечивают доступ без пароля.
  • Был выполнен тест SSH соединения с использованием "ssh -vvv", показывающий успешное соединение.

Несмотря на все эти приготовления, проблема все еще остается, что говорит о необходимости более глубокого анализа.

Применение

Для устранения ошибки Rsync с кодом 12 в вашем контексте рекомендуется следовать следующим рекомендациям:

  1. Обновление Rsync и Cygwin до последних стабильных версий. Проверьте, что вы используете совместимые версии Rsync. Иногда обновление до последних стабильных версий может разрешить проблемы совместимости.

  2. Проверка конфигурации Cygwin. Убедитесь, что все необходимые пакеты Cygwin правильно установлены. Rsync в Cygwin зависит от ряда вспомогательных библиотек, и отсутствие одной из них может привести к ошибкам.

  3. Тестировка SSH через командную оболочку. Попробуйте выполнить команду ssh [email protected] "which rsync", чтобы проверить доступность Rsync через SSH. Это позволит определить, есть ли проблемы с путями в переменной окружения.

  4. Анализ сетевого трафика с использованием tcpdump или Wireshark. Это может помочь выявить, происходит ли разрыв соединения или блокировка на уровне сети.

  5. Проверка и настройка конфигурации брандмауэра. Убедитесь, что ваш брандмауэр не блокирует необходимые порты для SSH и Rsync. Также проверьте NAT или VPN настройки, если они используются.

  6. Отладка соединения с помощью strace или ltrace. Эти инструменты помогут отследить системные вызовы Rsync и выявить, на каком этапе происходит сбой.

  7. Переключение на альтернативные методы передачи данных как временное решение. Например, использование SCP или SFTP для синхронизации данных, если важно быстрое временное решение.

Рекомендуется выполнять диагностику с помощью данных инструментов поэтапно, чтобы можно было идентифицировать конкретный аспект, где происходит неисправность. Хотя это может занять время, такой комплексный подход обеспечит наилучшие результаты и минимизирует риски возникновения подобных проблем в будущем.

Оцените материал
Добавить комментарий

Капча загружается...