Телеграмма. Безлимитный Сетевой Диск. Бесплатно

Привет, Хабр.

Наверняка многие об этом задумывались, возможно, у кого-то есть такая идея в TODO. Он был у меня около года, но мне удалось реализовать его в виде рабочего прототипа.



ТгОблако:

  • Виртуальная файловая система с открытым исходным кодом.

  • На локальном диске есть только метаданные: имена, размер, структура папок и т.д.
  • Данные хранятся в Telegram и загружаются только при работе с файлом.

  • Размер и тип файла не ограничены, можно использовать с любой ОС.

Подробности реализации и ссылка на репозиторий под катом.



Телеграмма. Безлимитный Сетевой Диск. Бесплатно

Безлимитный сетевой диск.

Бесплатно" alt="Телеграмма.

Безлимитный сетевой диск.

Бесплатно">



Идея

Идея создать VFS на базе Telegram возникла во время работы над

Безлимитный сетевой диск.



Бесплатно"> AudioTubeBot



И

Безлимитный сетевой диск.



Бесплатно"> VideoTubeBot



- после того, как путь найден обойти ограничение на загрузку файлов в 50 МБ для ботов - Я изучал

Безлимитный сетевой диск.



Бесплатно"> Исходники телеграма



— обнаружил много интересного.

Например, скорость загрузки ограничена в основном на самом клиенте, а не на сервере.

В результате я увеличил скорость загрузки в облако Telegram до ~240 Мбит/с за сессию (стабильно работаю больше года), что в 15 раз превышает скорость официального клиента.

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

Кроме того, существует ограничение на размер одного файла в 1,5 ГБ.





ПРЕДОХРАНИТЕЛЬ

Чтобы решить эти проблемы, я сначала решил пропатчить ядро Linux и сделать свою виртуальную файловую систему, которая позволила бы мне удобно группировать файлы, загружаемые в Telegram, используя только метаданные.

В процессе изучения вопроса выяснилось, что патчить ядро вовсе не обязательно.

в линуксе есть специальный

Безлимитный сетевой диск.



Бесплатно"> Модуль ядра FUSE



, что позволяет разработчикам создавать новые типы файловых систем, которые могут монтироваться непривилегированными пользователями.

Модуль имеет обертки практически для всех популярных языков.



Телеграмма. Безлимитный Сетевой Диск. Бесплатно

Безлимитный сетевой диск.

Бесплатно" alt="Телеграмма.

Безлимитный сетевой диск.

Бесплатно">



Телемарафон

Для доступа к Telegram я использую библиотеку

Безлимитный сетевой диск.



Бесплатно"> Телемарафон



модифицированная мной версия 0.19.1 с многопоточной загрузкой файлов (TelegramClientX).





ВФС

Чтобы не писать файловую систему с нуля, мы взяли за основу

Безлимитный сетевой диск.



Бесплатно"> дедупликация



в питоне для хранения метаданных используется Fuse и sqlite, который разбивает файлы на блоки, вычисляет хэш sha1 и повторно использует одинаковые блоки — нужно просто заменить методы загрузки данных в хранилище на свои.





ТгКлауд

Собрав все это вместе, мы получили работающий прототип.



Безлимитный сетевой диск.



Бесплатно"> tgcloud



, пока без космических скоростей, но всё равно работает, надеюсь привлечь сообщество к разработке.

Скачанные файлы разбиваются на блоки по 10 МБ, вычисляется sha1 и загружается в SavedMessages, хеш сохраняется в локальной базе данных и при чтении блока файл находится в нем.

Блоки склеиваются в правильном порядке и выводится поток байтов — как если бы вы читали их с диска.





Чтобы запустить код

  • Вам нужно включить api_hash и api_id.

    Безлимитный сетевой диск.



    Бесплатно"> my.telegram.org



    и вставьте эти данные вместе с номером телефона вашей учетной записи в tg_access.py.
  • Создайте сеанс, запустив его из папки проекта.

     
     
     
     
      python3.6 download_service.py 
    и вводим код подтверждения
  • Установить sudo yum install python-fuse
  • Создать папку монтирования mkdir storage
  • Запускаем ВФС: с отладкой python dedupfs/dedupfs.py -df --block-size 10240000 storage/ на заднем фоне python dedupfs/dedupfs.py --block-size 10240000 storage/
  • Вы можете, например, указать эту папку в качестве источника для

    Безлимитный сетевой диск.



    Бесплатно"> файловый браузер



Спасибо за внимание.





P.S. Об этической стороне (с.

Комментарии ) Другой вариант — снизить скорость на стороне сервера, ограничить количество потоков загрузки и т. д. — способов ограничить потребление диска, не «прикрывая магазин», достаточно, но даже при уменьшенной скорости — наличие дополнительного уровня абстракция над загружаемыми данными невероятно удобна, когда можно систематизировать файлы не только внутри чатов и каналов, но и потому, что это удобно пользователю — когда наоборот — будет загружено меньше данных за счет повторного использования блоков.

Если в текущей системе мне нужно отредактировать скачанный текстовый документ, я его скачиваю, редактирую и снова скачиваю, при этом 90% данных дублирует уже скачанное, а при использовании VFS - только измененные блоки будет загружен снова.



То есть для обычных пользователей это вообще хорошая вещь, если кто-то решит использовать это для размещения порно - ну пусть с ними как-то борются, это философия Telegram - что "даже если небольшое количество людей этим пользуется" за плохие поступки это не значит, что все это надо запретить и т. д. и т. п.

».



Безлимитный сетевой диск.



Бесплатно"> Мой Telegram-канал



Безлимитный сетевой диск.



Бесплатно"> Чат для вопросов



Безлимитный сетевой диск.



Бесплатно"> Исходники на GitHub






На

Безлимитный сетевой диск.



Бесплатно"> ДЕДИК.



Ш



Доступны новейшие конфигурации двухпроцессорных выделенных серверов с масштабируемыми процессорами Intel 2019 года:
  • 2x Xeon Silver 4214 — всего 24 ядра
  • 2x Xeon Gold 5218 — всего 32 ядра
  • 2x Xeon Gold 6240 — 36-ядерная конфигурация.

Стоимость сервера с двумя Xeon Silver 4214 —

Безлимитный сетевой диск.



Бесплатно"> от 15210 руб/мес.





Мы также готовы собрать для вас любая конфигурация

Безлимитный сетевой диск.



Бесплатно"> напишите нам



! Если не требуются большие мощности выделенного сервера -

Безлимитный сетевой диск.



Бесплатно"> VDS от 150 руб/мес.





- что вам нужно! Теги: #python #github #облачные сервисы #Хранение данных #Лайфхаки для гиков #Telegram #FUSE #облачное хранилище #vfs #файловая система
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2006-07-18 20:41:49
Баллов опыта: 605
Всего постов на сайте: 1
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.