我正在寻找一种解决方案,在云服务器上使用远程 bittorrent 客户端,然后通过 http 将文件下载到本地系统。这有望提高我的带宽并克服将我的 ip 列入黑名单(假设我在代理后面)。我的解决方案将与 seedr.cc 完全相同。我想提供的另一项改进是文件/目录可以同时在本地(客户端应用程序)部分下载。如果我的解决方案是客户端服务器应用程序,这也可以很容易地完成。现在,真正的问题是,假设我根本不想在服务器上下载文件/目录,而是直接在客户端上而不安装远程磁盘(客户端磁盘)。在这里,请记住服务器仅用于网络,根本不使用存储。你知道有什么可以帮助的吗?
3 回答
让我首先描述一下您的拓扑结构。
您构建了一个服务器和一些客户端,客户端可以使用 p2p 下载文件。并且您希望客户端可以从服务器和其他客户端下载文件以加快速度。
首先,bt 下载可以提高您的速度,但限制来自您的 ISP。如果你只买一个100Mb的带宽,你就无法获得比它更高的速度。
其次,如果这种拓扑结构可以帮助您,那么您可以构建这样的系统。
需要NAT穿越,这是基本的p2p通信。您可能需要 natpmp、upnp 或 ICE。既然你有服务器,也许 ICE 会更好。
LSD 和 DHT 将帮助您找到其他客户。
需要对等线通信协议来连接到其他对等点并下载文件。
有一个名为 libtorrent 的开源项目可能会对您有所帮助。它构建了整个系统,您可以使用它或通过学习它来构建自己的系统。
至于同时下载form server 和clients,需要有一个peer manager 的设计,比较难,我也不能一概而论,需要自己做很多例子和优化。
好吧,标题中的“rsync”有点误导,你在这里遇到了几个问题:遥控器必须是可访问的..所以有一个“活动隧道”回到你的客户将是一项繁重的任务
对于传入部分:您可以将lftp用于种子https://lftp.yar.ru/torrent.html并将每个用户分开,还可以帮助您获得配额等,建议:在屏幕或byobu会话中使用它
对于下载部分:
- 也许使用ramdisk (
mkdir /tmp/ramtamtam;mount -t tmpfs /dev/null /tmp/ramtamtam/ -o size=64M
) 并让客户端访问它 - 使用archivemount https://github.com/bramp/archivemount并将其发送给客户端
- 在 rclone 中使用诸如 mega 之类的外部提供程序,并让客户端访问它
- 一个简洁的选择是让客户端通过 torrent 本身使用自定义磁力链接访问您服务器上的 torrent,并将其添加到正在运行的 lftp 会话中,因为为此您可以使用https://webtorrent 下载 100%。 io/
- 通过 http 下载也可以使用lftp的
mirror
命令来实现
Bittorrent 客户端通常需要随机访问它们正在传输的数据,因为它们同时下载和上传,并且必须为来自远程对等点的随机请求提供服务。这意味着如果您使用网络文件系统,那么 bittorrent 客户端的性能将受到上传和下载带宽以及提供存储的主机的延迟的限制。这可能会削弱云实例本来可以实现的性能。
相反,您可以使用具有临时存储作为加速器的云实例(此后称为服务器)。这可以通过让服务器和本地客户端都实现 bittorrent 来实现,但对从服务器到客户端的带宽给予优先处理。这样,服务器将从其他对等点下载数据,同时将其传输到客户端。服务器可以继续从其临时存储中播种 torrent,直到重新启动。