tus


Мне довелось познакомиться с HTTP протоколом для загрузки файлов с поддержкой докачки в случае обрыва связи или принудительной остановки загрузки. Речь пойдёт про tus (https://tus.io). Задача загрузки файлов куда-либо всегда была актуальна. Тот же ftp протокол сколько не хоронят, а всё равно используется. Я покажу вам один из неплохих и функциональных вариантов управления загрузкой.


Tus состоит из двух частей - клиента и сервера. Сервер написан на Go и представляет собой один бинарник. Можно просто скачать из репы и запустить, либо воспользоваться докер контейнером.

Бинарник под свою систему берём тут. Запускаем:
# ./tusd -upload-dir=/tmp
Используем Docker:
# docker run tusproject/tusd

В первом случае для хранения файлов будет использоваться директория tmp, во втором случае /srv/tusd-data/data. Это дефолтное значение. В качестве хранилища для файлов может использоваться S3. Примеры настройки в документации. А та же различные облачные платформы.

Для загрузки файлов через tus используется клиент. Он есть практически под все языки программирования. Вот например на JavaScript - tus-js-client. Там же примеры использования. 

Нам сисадминам ближе python, так что будем использовать его:
# pip3 install -U tus.py
# tus-upload soft.rpm http://192.168.13.123:1080/files/
Залили файл soft.rpm через запущенный tusd сервер. В консоль получили ссылку, по которой можно скачать этот файл.

Tusd сам поддерживает работу по tls. При желании его можно запустить за прокси сервером. Примеры есть в FAQ.

Продукт достаточно известный в определённых кругах и много кем используется. Например, Vimeo. На него можно лить файлы через tus-client. К сожалению, я не нашёл какой-то готовой реализации файлового обменника на базе tus. Так что готовую реализацию под себя придётся писать самостоятельно, если потребуется.

Отправить комментарий

Комментировать (0)

Новые Старые