Telegram Drive jaringan tidak terbatas. Gratis

Hai, Habr.

Tentunya banyak orang memikirkannya, mungkin seseorang memiliki ide ini di TODO. Dia berbaring dengan saya selama sekitar satu tahun, tetapi masih berhasil mengimplementasikannya dalam bentuk prototipe yang berfungsi.

TgCloud:


  • Sistem file virtual sumber terbuka g kode ****.
  • Di disk lokal - hanya metadata: nama, ukuran, struktur folder, dll.
  • Data disimpan di Telegram dan hanya diunduh saat bekerja dengan file
  • Ukuran dan jenis file tidak terbatas, dapat digunakan dengan OS apa saja

Detail implementasi dan tautan ke repositori di bawah kucing.



Ide


Gagasan untuk membuat VFS berdasarkan Telegram muncul saat mengerjakan AudioTubeBot dan VideoTubeBot - setelah saya menemukan cara untuk mencapai batas 50MB untuk mengunduh file untuk bot - Saya mempelajari kode sumber Telegram - Saya menemukan banyak hal menarik. Misalnya, kecepatan unduhan sebagian besar terbatas pada klien itu sendiri, dan bukan pada server.

Sebagai hasilnya, saya meningkatkan kecepatan pengunduhan ke cloud Telegram hingga ~ 240mbit / s per sesi (ini telah bekerja secara stabil selama lebih dari setahun), yang 15 kali lebih cepat daripada kecepatan klien resmi.

Langkah logisnya adalah menggunakan penyimpanan file tanpa batas dengan kecepatan unduhan tinggi sebagai drive jaringan - kemungkinan besar banyak yang melakukannya, tetapi masalahnya adalah klien telegram tidak nyaman menggunakannya untuk mencari dan mengatur file. Selain itu, ada batas 1,5 GB per ukuran file.

Fuse


Untuk mengatasi masalah ini, saya pertama kali memutuskan untuk membuat patch kernel Linux dan membuat sistem file virtual saya sendiri, yang akan dengan mudah mengelompokkan file yang diunggah ke Telegram, hanya menggunakan metadata.

Dalam proses mempelajari masalah ini, ternyata menambal kernel tidak diperlukan sama sekali. Linux memiliki modul kernel FUSE khusus yang memungkinkan pengembang untuk membuat jenis baru sistem file yang dapat diakses oleh pengguna untuk dipasang tanpa hak istimewa. Ada pembungkus untuk hampir semua bahasa populer untuk modul.



Telethon


Untuk mengakses Telegram, saya menggunakan Telethon library versi 0.19.1 dengan unggahan file multi-utas yang dimodifikasi (TelegramClientX).

Vfs


Agar tidak menulis sistem file dari awal - digunakan dedupfs python, menggunakan sekering dan sqlite untuk menyimpan metadata, yang memecah file menjadi blok, pertimbangkan hash sha1 dan menggunakan kembali blok yang sama - Anda hanya perlu mengganti metode memuat data ke dalam penyimpanan dengan Anda sendiri.

Tgcloud


Menggabungkan semua ini, ternyata menjadi prototipe tgcloud yang berfungsi , sejauh ini tanpa kecepatan ruang, tetapi masih berfungsi, saya berharap dapat menarik masyarakat ke pengembangan. File yang diunduh dibagi menjadi blok 10 MB, sha1 dihitung dan dimuat ke SavedMessages, hash disimpan dalam database lokal dan ketika membaca blok, file tersebut berada di sana. Blok direkatkan bersama dalam urutan yang diperlukan dan aliran byte dikeluarkan - seolah-olah Anda membacanya dari disk.

Untuk menjalankan kode


  • Anda perlu mendapatkan api_hash dan api_id di my.telegram.org dan masukkan data ini bersama dengan nomor telepon akun Anda di tg_access.py
  • Buat sesi dengan menjalankan dari folder proyek

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


All Articles