如何在多台计算机上分发大型下载内容?

如何在多台计算机上分发大型下载内容?

我需要下载一个大文件(1GB)。我还可以访问多台运行 Linux 的计算机,但管理策略将每台计算机的下载速度限制为 50kB/s。

如何将该文件分散下载到多台计算机上,并在所有片段下载完毕后合并它们,以便我可以更快地接收它?

答案1

支持常见协议 HTTP、FTP 和 SFTP范围请求,这样您就可以请求文件的一部分。请注意,这还需要服务器支持,因此在实践中可能会也可能不会。

您可以使用curl-r--range选项来指定范围并最终将cat文件连接在一起。例子:

curl -r 0-104857600         -o distro1.iso 'http://files.cdn/distro.iso'
curl -r 104857601-209715200 -o distro2.iso 'http://files.cdn/distro.iso'
[…]

最终,当你收集各个部分时,你将它们连接起来:

cat distro* > distro.iso

您可以使用以下选项获取有关文件的更多信息,包括其大小--head

curl --head 'http://files.cdn/distro.iso'

您可以使用开放范围检索最后一个块:

curl -r 604887601- -o distro9.iso 'http://files.cdn/distro.iso'

阅读卷曲手册页以获得更多选项和解释。

您可以进一步利用 ssh 和 tmux 来轻松运行和跟踪多个服务器上的下载。

答案2

以每秒 50 KB 的速度加载 1 GB 的文件大约需要 5.5 小时。

协调多台计算机来获取部分内容似乎可以节省一些时间。

您可以查看 BitTorrent 并利用网络播种以及通过对等交换进行传输。每个客户端都可以接收碎片并在局域网(LAN)中共享已完成的碎片。您最终会在每台计算机上获得相同的 1GB 文件,但各个部分的合并是自动完成的。

相关内容