19 декабря, 2013

HSCP - полезный инструмент администратора

Не каждый день, но довольно часто я сталкиваюсь с ситуацией, когда нужно перебросить большой объем данных между двумя Linux хостами. Поднять ftp/http сервер не всегда возможно да и долго, ради одноразовой операции. Про проект hscp я знал давно, но... Чужими бинарниками я не пользуюсь, а процедура сборки этого счастья вызывает, мягко говоря, сложности.

О проекте:


Hscp (Hybrid scp) - проект объединяет в себе достоинства scp(SSH) в плане распространенности и UDP(UDT) в плане скорости. Для полноценной работы нужен hscp установленный и на клиенте, и на сервере. При отсутствии hscp на сервере используется классический scp, т.е. хуже чем есть не станет. При наличии hscp на сервере происходит создание соединения по протоколу UDP в рамках которого производится передача данных между хостами.

Достоинства:


  • легко установить - достаточно скопировать один бинарник и один конфиг
  • скорость передачи близка к максимально возможной по существующему каналу

Недостатки:

  • необходимо обеспечить возможность соединения по UDP от сервера к клиенту, что может быть сложно, если нет доступа к настройке файрвола
  • данные не шифруются, значит не все можно передавать с использованием hscp

Что сделано:

  • создан репозитарий на GitHub: https://github.com/eostapets/hscp.git
  • библиотека UDT добавлена в проект, на нее наложен патч от HSCP
  • необходимые для сборки файлы из OpenSSH 6.4p1 добавлены в проект и зачищены до состояния собираемости
  • добавлен каталог debian для упрощения сборки deb-пакетов для Debian-совместимых дистрибутивов
  • добавлен hscp.spec для сборки rpm-пакетов(сделан для openSUSE 12.3, но легко может быть адаптирован для других дистрибутивов)
  • в ходе всех правок добавлена куча Linux-specific вещей, что однозначно сломает сборку на других Unix системах :-(

Что необходимо сделать:

  • очистить импортированные из OpenSSH файлы от всех неиспользуемых функций, что существенно упростит в будущем поддержку этого хозяйства
  • добавить систему автоконфигурирования(вероятно это будет autotools) и починить сборку на всех доступных вариантах Unix
  • портировать патч на UDT для последней версии этой библиотеки
Отправить комментарий