Telegram Unidade de rede ilimitada. Grátis

Oi Habr.

Certamente muitas pessoas pensaram sobre isso, talvez alguém tenha essa idéia no TODO. Ela ficou comigo por cerca de um ano, mas ainda conseguiu implementá-lo na forma de um protótipo funcional.

TgCloud:


  • CĂłdigo g **** do sistema de arquivos virtuais de cĂłdigo aberto.
  • No disco local - apenas metadados: nomes, tamanho, estrutura de pastas etc.
  • Os dados sĂŁo armazenados no Telegram e sĂŁo baixados apenas ao trabalhar com um arquivo
  • O tamanho e o tipo de arquivos nĂŁo sĂŁo limitados, podem ser usados ​​com qualquer sistema operacional

Detalhes da implementação e um link para o repositório sob o gato.



Idéia


A ideia de criar VFS com base no Telegram surgiu enquanto trabalhava no AudioTubeBot e no VideoTubeBot - depois de encontrar uma maneira de contornar o limite de 50mb para baixar arquivos para bots - estudei o cĂłdigo-fonte do Telegram - descobri muitas coisas interessantes. Por exemplo, a velocidade de download Ă© limitada principalmente no prĂłprio cliente, e nĂŁo no servidor.

Como resultado, aumentei a velocidade de download da nuvem do Telegram para ~ 240mbit / s por sessão (ela está funcionando de maneira estável por mais de um ano), o que é 15 vezes mais rápido que a velocidade do cliente oficial.

O passo lógico era usar armazenamento ilimitado de arquivos com alta velocidade de download como uma unidade de rede - provavelmente muitos o fazem, mas o problema é que os clientes de telegrama são inconvenientes para usar para pesquisar e organizar arquivos. Além disso, há um limite de 1,5 GB por tamanho de arquivo.

FusĂ­vel


Para resolver esses problemas, primeiro decidi fazer um patch do kernel do Linux e criar meu prĂłprio sistema de arquivos virtual, que agruparia convenientemente os arquivos carregados no Telegram, usando apenas metadados.

No processo de estudo da questão, verificou-se que não é necessário corrigir o kernel. O Linux possui um módulo de kernel FUSE especial que permite que os desenvolvedores criem novos tipos de sistemas de arquivos acessíveis aos usuários para montar sem privilégios. Existem wrappers para quase todos os idiomas populares do módulo.



Telethon


Para acessar o Telegram, eu uso a biblioteca Telethon versĂŁo 0.19.1 com o upload de arquivo multithread modificado (TelegramClientX).

Vfs


Para não escrever um sistema de arquivos do zero - o python dedupfs é usado, usando o fuse e o sqlite para armazenar metadados, que dividem os arquivos em blocos, consideram o hash sha1 e reutilizam os mesmos blocos - você só precisa substituir os métodos de carregamento de dados no armazenamento.

Tgcloud


Combinando tudo isso, acabou sendo um protótipo funcional do tgcloud , até agora sem velocidade espacial, mas ainda funcionando, espero atrair a comunidade para o desenvolvimento. Os arquivos baixados são divididos em blocos de 10 MB, sha1 é calculado e carregado em SavedMessages, o hash é armazenado no banco de dados local e, ao ler o bloco, o arquivo está localizado nele. Os blocos são colados na ordem necessária e um fluxo de bytes é emitido - como se você os estivesse lendo do disco.

Para executar o cĂłdigo


  • VocĂŞ precisa obter api_hash e api_id em my.telegram.org e inserir esses dados juntamente com o nĂşmero de telefone da sua conta em tg_access.py
  • Crie uma sessĂŁo executando a partir da pasta do projeto

    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/pt456290/


All Articles