Telegrama Unidad de red ilimitada. Gratis

Hola Habr

Seguramente mucha gente lo pensó, tal vez alguien tenga esta idea en TODO. Estuvo conmigo durante aproximadamente un año, pero aún así logró implementarlo en forma de un prototipo funcional.

TgCloud:


  • Código de g **** del sistema de archivos virtual de código abierto.
  • En el disco local, solo metadatos: nombres, tamaño, estructura de carpetas, etc.
  • Los datos se almacenan en Telegram y se descargan solo cuando se trabaja con un archivo
  • El tamaño y el tipo de archivos no están limitados, se pueden usar con cualquier sistema operativo

Detalles de implementación y un enlace al repositorio debajo del gato.



Idea


La idea de crear VFS basado en Telegram surgió mientras trabajaba en AudioTubeBot y VideoTubeBot , después de encontrar una manera de superar el límite de 50mb para descargar archivos para bots , estudié el código fuente de Telegram , descubrí muchas cosas interesantes. Por ejemplo, la velocidad de descarga está limitada principalmente en el propio cliente y no en el servidor.

Como resultado, aumenté la velocidad de descarga a la nube de Telegram a ~ 240Mbit / s por sesión (ha estado funcionando de manera estable durante más de un año), que es 15 veces más rápido que el cliente oficial.

El paso lógico era usar un almacenamiento de archivos ilimitado con alta velocidad de descarga como unidad de red; lo más probable es que muchos lo hagan, pero el problema es que los clientes de telegramas son incómodos de usar para buscar y organizar archivos. Además, hay un límite de 1,5 GB por tamaño de archivo.

Fusible


Para resolver estos problemas, primero decidí hacer un parche del kernel de Linux y crear mi propio sistema de archivos virtual, que agruparía convenientemente los archivos cargados en Telegram, usando solo metadatos.

En el proceso de estudiar el problema, resultó que parchear el núcleo no es necesario en absoluto. Linux tiene un módulo especial de kernel FUSE que permite a los desarrolladores crear nuevos tipos de sistemas de archivos a los que los usuarios pueden acceder sin privilegios. Hay envoltorios para casi todos los idiomas populares para el módulo.



Teletón


Para acceder a Telegram, utilizo la versión 0.19.1 de la biblioteca de Telethon con mi archivo modificado de subprocesos múltiples (TelegramClientX).

Vfs


Para no escribir el sistema de archivos desde cero, la base se toma de los dedupfs de python, usando fuse y sqlite para almacenar metadatos, que divide los archivos en bloques, considera el hash sha1 y reutiliza los mismos bloques; solo necesita reemplazar los métodos de carga de datos en el almacenamiento con los suyos.

Tgcloud


Combinando todo esto, resultó ser un prototipo funcional de tgcloud , hasta ahora sin velocidades espaciales, pero aún funciona, espero atraer a la comunidad al desarrollo. Los archivos descargados se dividen en bloques de 10 MB, se calcula sha1 y se carga en mensajes guardados, el hash se almacena en la base de datos local y, al leer el bloque, el archivo se encuentra en él. Los bloques se pegan en el orden necesario y se emite una secuencia de bytes, como si los estuviera leyendo desde el disco.

Para ejecutar el código


  • Debe obtener api_hash y api_id en my.telegram.org e insertar estos datos junto con el número de teléfono de su cuenta en tg_access.py
  • Cree una sesión ejecutándose desde la carpeta del proyecto

    python3.6 download_service.py



  • sudo yum install python-fuse


  • mkdir storage
  • VFS:


    python dedupfs/dedupfs.py -df --block-size 10240000 storage/



    python dedupfs/dedupfs.py --block-size 10240000 storage/
  • , filebrowser

.

P.S. ( )


— , .. — « », — — , , — — . — , , 90% , VFS — .
— , — , Telegram — « — .. ..»

Telegram

GitHub



DEDIC.SH Intel Scalable 2019 :
  • 2x Xeon Silver 4214 — 24
  • 2x Xeon Gold 5218 — 32
  • 2x Xeon Gold 6240 — 36 .

Xeon Silver 4214 — 15210 /
!

VDS 150 / — , !

Source: https://habr.com/ru/post/456290/


All Articles