电报 无限的网络驱动器。 免费的

哈Ha

肯定有很多人考虑过,也许有人在TODO中有这个想法。 她和我在一起待了大约一年,但仍然设法以可行的原型形式实施了它。

TgCloud:


  • 开源虚拟文件系统g ****代码。
  • 在本地磁盘上-仅元数据:名称,大小,文件夹结构等。
  • 数据存储在电报中,仅在处理文件时下载
  • 文件的大小和类型不受限制,可以在任何操作系统上使用

实现细节和目录的链接。



主意


AudioTubeBotVideoTubeBot上工作时,提出了基于Telegram创建VFS的想法-在我找到一种方法来解决机器人下载文件的50mb限制之后 -研究了Telegram源代码 -我发现了很多有趣的东西。 例如,下载速度主要受客户端本身限制,而不受服务器限制。

结果,我将到Telegram云的下载速度提高到每个会话约240mbit / s(已稳定运行了一年多),这比​​正式客户端的速度快15倍。

合理的步骤是将下载速度快的无限制文件存储用作网络驱动器-很可能很多人这样做,但是问题是电报客户端不方便使用来搜索和组织文件。 此外,每个文件大小限制为1.5 GB。

保险丝


为了解决这些问题,我首先决定制作一个Linux内核补丁并创建自己的虚拟文件系统,该系统将仅使用元数据方便地将上传到Telegram的文件分组。

在研究该问题的过程中,事实证明,根本不需要修补内核。 Linux有一个特殊的FUSE内核模块 ,该模块允许开发人员创建新型的文件系统,供用户访问而无需特权即可安装。 该模块有几乎所有流行语言的包装。



Telethon


要访问Telegram,我将Telethon库版本0.19.1与修改后的多线程文件上传(TelegramClientX)一起使用。

甚高频


为了不从头开始编写文件系统-使用python dedupfs ,使用保险丝和sqlite存储元数据,这会将文件分为块,考虑sha1哈希并重复使用相同的块-您只需要用自己的方法替换将数据加载到存储中的方法即可。

天云


通过所有这些,我们得到了一个可行的tgcloud原型,到目前为止,它没有空间速度,但是仍然可以运行,我希望吸引社区参与到开发中。 下载的文件分为10 MB的块,计算sha1并将其加载到SavedMessages中,哈希存储在本地数据库中,并且在读取该块时,文件就位于其上。 块按照必要的顺序粘在一起,并发出字节流-就像您从磁盘读取它们一样。

运行代码


  • 您需要在my.telegram.org上获取api_hash和api_id,并将此数据以及您帐户的电话号码插入tg_access.py中
  • 通过从项目文件夹运行来创建会话

    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/zh-CN456290/


All Articles