是否有一个命令行工具支持多个同时连接和多种网络协议(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}"
我想使用多个同时网络连接来加快速度
除非服务器配置为限制单个连接,否则运行多个并行下载可能不会带来任何好处……事实上,它可能会对您的吞吐量产生负面影响。
使用标准工具(即:rsync
,scp
,curl
)将通常给你你想要的东西。
如果断开连接/部分传输是一个问题,那么像这样的实用程序可能会有所帮助,但请注意,这rsync --partial
也会有所帮助。