哈Ha
肯定有很多人考虑过,也许有人在TODO中有这个想法。 她和我在一起待了大约一年,但仍然设法以可行的原型形式实施了它。
TgCloud:
- 开源虚拟文件系统g ****代码。
- 在本地磁盘上-仅元数据:名称,大小,文件夹结构等。
- 数据存储在电报中,仅在处理文件时下载
- 文件的大小和类型不受限制,可以在任何操作系统上使用
实现细节和目录的链接。

主意
在
AudioTubeBot和
VideoTubeBot上工作时,提出了基于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 / — , !