B F*_*ley 39 download cluster parallelism
我需要下载一个大文件(1GB)。我也可以访问多台运行 Linux 的计算机,但每台计算机的下载速度都受到管理员策略的限制,下载速度为 50kB/s。
如何在多台计算机上分发下载此文件并在下载所有段后合并它们,以便我可以更快地接收它?
Mar*_*rco 60
常用协议 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'
[…]
Run Code Online (Sandbox Code Playgroud)
最终,当您收集各个部分时,您将它们连接起来:
cat distro* > distro.iso
Run Code Online (Sandbox Code Playgroud)
您可以使用以下--head选项获取有关文件的更多信息,包括其大小:
curl --head 'http://files.cdn/distro.iso'
Run Code Online (Sandbox Code Playgroud)
您可以检索具有开放范围的最后一个块:
curl -r 604887601- -o distro9.iso 'http://files.cdn/distro.iso'
Run Code Online (Sandbox Code Playgroud)
阅读curl 手册页以获取更多选项和说明。
您可以进一步利用 ssh 和 tmux 来简化运行并跟踪多台服务器上的下载。