我如何才能轻松地(例如像 rsync 或 SCP 一样简单)通过 Internet 延迟链路进行高速(1gpbs)文件传输?

我如何才能轻松地(例如像 rsync 或 SCP 一样简单)通过 Internet 延迟链路进行高速(1gpbs)文件传输?

每年有几次,我需要通过互联网传输大量文件(20+GB)(延迟 20-100 毫秒),但服务器之间的连接速度相当快,约为 1gbps。不幸的是,当我使用 rsync 执行此操作时,它会出现各种问题,并且反复无法使连接饱和,每次只使用全部连接几分之一秒,并且经常连续几分钟不使用任何连接(< 1mbps,可能为零)。两端的硬盘和 CPU 都没有被固定在 100% 使用率,因此它们都不是瓶颈。SCP 的行为方式相同。

然而,速度测试在整个测试过程中都让我的网络完全饱和(很多比 rsync 更长)。我可以通过多线程下载器 (aria2c) 使用 Cloudflare 上的 HTTP 获得一些成功,但它仍然不会使我的连接饱和 — 它只是防止它接近零。有趣的是,当不通过 Cloudflare 时,aria2c 也不会使我的连接饱和。

在提出这个问题之前,我做过研究,似乎 TCP 窗口可能与此有关,但我不太了解那是什么,也不知道如何更改它(我在互联网上能找到的唯一信息是在速度测试的上下文中,速度测试有一个命令行标志,但 rsync 和 SCP 都没有在其手册页中记录任何此类标志)。然而,这没用,因为我不知道如何使用这些知识来修复我的下载速度。

因此,我想问一下,我该如何容易地(例如,无需进行自定义编译或购买专有产品),就像我现在可以使用 rsync、scp 或 http(通过 nginx)一样,我的快速连接会饱和,以进行批量文件传输?理想的答案是给我一组我可以使用的 rsync 标志,以便完全解决这个问题。也许更现实的答案仍然有用,那就是一个特定的标准 Linux 实用程序,它可以完成我想要的工作而无需进行重大调整。我确信这样的事情存在,因为我确信我不是唯一一个需要通过互联网传输大文件的人。

答案1

使用lftp我能够将我的连接推至最大容量(900Mbps),你需要这样的东西 - 。我遇到的唯一问题是运行几个小时后吞吐量下降了。lftp -e 'mirror --parallel=10 --use-pget-n=10 /var/vtemp /var/vtemp' sftp://[email protected]

相关内容