我最近问过类似的问题关于如何在延迟较高的情况下通过 Internet 传输大型文件(几 GB 到几十 GB)。我得到了一个很好的答案,但仅限于下载。当我想从位于仅允许传出 TCP 连接的防火墙后面的计算机上传某些内容到服务器时,我无法使用 lftp 或任何其他工具来满足我的千兆位上传(到距离 115ms 的千兆位服务器)。lftp 似乎限制在 36.88mbps 左右,即使在进行并行传输时也是如此,例如使用以下命令:
lftp -e 'mirror --parallel=1 --use-pget-n=10 -R . /destination/path' sftp://user@destinationdomain
我还尝试了此命令的一些变体(例如使用put
而不是mirror
,以及不同的标志),但没有什么能让我达到千兆位上传的饱和度。在这种情况下,我和服务器之间的链接可能不好,因为虽然两者都是千兆位,但都不是特别好的网络(有时在将数据发送到遥远的地方时都会出现问题)。为了验证这个假设,我对与目标服务器位于同一城市的另一家 ISP 进行了 speedtest.net 速度测试(服务器的主机不托管 speedtest.net 服务器),我得到了以下结果:
这似乎排除了中间网络的任何问题(至少,任何严重到足以导致 36.88mbps 的问题),而事实不仅如此,我到这个 speedtest.net 服务器的路由使用相同的长途传输提供商(Hurricane Electric),甚至似乎通过与我的服务器托管在同一个提供商的同一个数据中心,这进一步证实了这一点!
那么,我该如何容易地(意味着使用单个命令)从我的计算机上传到远程服务器,同时占用千兆连接,或者至少是 speedtest.net 能够执行的很大一部分?