如何通过 sftp 或 http 等使用多个同时连接下载单个大文件

如何通过 sftp 或 http 等使用多个同时连接下载单个大文件

是否有一个命令行工具支持多个同时连接和多种网络协议(ftp,http等)?

以下是一个实际的例子:

我在 ssh 服务器上有一个很大的备份文件,我想将其传输到我当前的机器上。文件下载时间太长,所以我想使用多个同时的网络连接来加快速度。假设 ssh 服务器负载不重。

下载多个文件/URL使用同时连接不相关对这个问题

我不想编写任何代码来解决这个问题。

答案1

lftp程序可以同时处理多种网络协议和同时连接。

协议支持:

Lftp 支持以下协议:

  • FTP
  • 安全FTP
  • http 和 https
  • 比特流

有关 ftps 等的更多信息这里

并行下载:

<URI>要使用 2 个同时连接下载位于的单个大文件:

lftp -c "pget -c -n 2 <URI>"

第一个-c选项指定要运行的命令。 pget使用多个并行连接建立文件传输。第二个-c选项表示如果此传输先前被中断,则继续传输。该-n选项限制要使用的最大连接数。

在线上有更多关于命令和选项的信息手册页

警告:这可以加快传输速度,但会严重增加网络和服务器的负载。速度取决于网络和服务器的状况。

针对问题中的实际例子:

lftp -c "pget -c -n 2 sftp://[email protected]/~/backups/large.tar.gz"

此示例通过 ssh (sftp) 使用 2 个同时连接下载大型备份文件。假设您已设置无密码 ssh 登录。

注意:Lftp 也可以在交互模式下使用;与其他 ftp 命令类似。

答案2

aria2支持多种连接和 FTP、HTTP 和 SFTP(以及其他)。

例如:

aria2c -j ${num_concurrent} "${uri}"

我想使用多个同时网络连接来加快速度

除非服务器配置为限制单个连接,否则运行多个并行下载可能不会带来任何好处……事实上,它可能会对您的吞吐量产生负面影响。

使用标准工具(即:rsyncscpcurl)将通常给你你想要的东西。

如果断开连接/部分传输是一个问题,那么像这样的实用程序可能会有所帮助,但请注意,这rsync --partial也会有所帮助。

相关内容