rsync с Ubuntu Linux на Windows 11 с OpenSSH сервером

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

В этой статье говорится, что необязательная функция сервера OpenSSH в Windows 11 может быть использована для поддержки rsync с Linux.

После установки сервера OpenSSH, как указано в приведенной выше статье (через Настройки/Программы/Необязательные программы, а не в WSL), и запуска службы с помощью Start-Service sshd, я смог успешно подключиться с помощью SSH с машины Ubuntu.

В терминале Linux (Ubuntu 20.04 LTS) он предоставляет терминал Windows с подсказкой, напоминающей me@windowshost C:\Users\Me>

Из терминала Ubuntu я попробовал команду, как указано в статье:

rsync -avP --rsync-path="wsl rsync" /home/me me@windowshost:\\Users\\Me\\folder

После запроса пароля rsync выводит:

несоответствие версий протокола -- ваша оболочка чиста?
(см. страницу man rsync для объяснения)
ошибка rsync: несовместимость протокола (код 2) в compat.c(600) [отправитель=3.2.3]

Страница man rsync предлагает выполнить $ ssh hostname > /bin/true > out.dat, чтобы выяснить, не является ли оболочка “грязной”. Я выполнил это и получил Система не может найти указанный путь. в терминале. Файл out.dat был создан с 0 байтами. Я не уверен, как это интерпретировать.

Я заметил, что команда rsync включает “wsl”. Но название связанной статьи – “Как rsync напрямую в машину с Windows 10 (используя OpenSSH, а не cygwin или WSL)”

Команда действительно ожидает WSL на системе Windows? Всё ещё необходимо использовать WSL на Windows для поддержки rsync?

В Win32-OpenSSH нет rsync.

Хотя статья, на которую вы ссылаетесь создаёт впечатление, что это не зависит от WSL, --rsync-path="wsl rsync" в командной строке rsync действительно доказывает обратное. Это зависит от rsync в WSL.

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

Для передачи данных с Ubuntu на Windows 11 с использованием rsync и OpenSSH-сервера вам понадобится правильно настроить обе системы и учитывать некоторые нюансы.

Установка и конфигурация OpenSSH на Windows 11

  1. Установка OpenSSH Server:

    • Перейдите в Настройки → Приложения → Дополнительные функции.
    • Найдите и установите OpenSSH Server.
  2. Запуск службы OpenSSH:

    • Откройте PowerShell от имени Администратора и выполните команду:
      Start-Service sshd
    • Убедитесь, что служба запускается автоматически при старте системы:
      Set-Service -Name sshd -StartupType 'Automatic'

Настройка Ubuntu

Теперь вам необходимо убедиться, что вы можете подключиться к вашему Windows 11 с Ubuntu через SSH:

  1. Подключение по SSH:
    На Ubuntu выполните:
    ssh me@windowshost

    Проверьте, что переходите к приглашению командной строки Windows, например C:\Users\Me>.

Использование rsync для передачи данных

Теперь основной вопрос: как использовать rsync без установки WSL? К сожалению, в стандартной установке OpenSSH для Windows нет rsync, и для его использования в этой настройке потребуется WSL.

Установка WSL и rsync

  1. Установка WSL:

    • Откройте PowerShell и выполните команду:
      wsl --install
  2. Установка rsync в WSL:

    • Запустите WSL (например, Ubuntu) из меню Пуск и выполните:
      sudo apt update
      sudo apt install rsync

Команда rsync

Теперь вы сможете использовать rsync через WSL. Обратите внимание на команду:

rsync -avP --rsync-path="wsl rsync" /home/me me@windowshost:/mnt/c/Users/Me/folder
  • --rsync-path="wsl rsync" указывает, что rsync должен исполняться в контексте WSL.
  • Проверьте путь назначения. На Windows пути выглядят как /mnt/c/Users/Me/folder, потому что WSL монтирует файловую систему Windows в /mnt.

Устранение ошибок

Если вы столкнулись с ошибкой protocol version mismatch -- is your shell clean?, это говорит о том, что команда rsync не может правильно взаимодействовать с оболочкой. Проверьте следующие моменты:

  1. Чистая оболочка:

    • Убедитесь, что в вашем профиле не выполняются какие-либо команды, которые могут мешать rsync. Например, проверьте файл .bash_profile, .bashrc или PowerShell конфигурации.
  2. Отладка:

    • Запустите команду:
      ssh me@windowshost > out.dat
    • Если в файле out.dat нет сообщений об ошибке, оболочка должна быть чистой.

Заключение

Поскольку нет нативной поддержки rsync в Windows OpenSSH без использования WSL, вам действительно придется установить WSL, чтобы работать с rsync. Несмотря на то, что путь может показаться сложным, это обеспечит вам мощный инструмент для синхронизации файлов между Ubuntu и Windows 11.

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

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