我必须将一个大目录转移到另一台服务器。
我的问题是我无法使用可用的全部带宽,因为一个并发的 TCP 流速度不够快。
基本上,任何下载管理器都支持该功能。
因此我想做并发数据流。
但是我找不到支持此功能的程序,所以我考虑一次运行多个实例或 rsync。
这是个好主意吗?或者您能给我指出一个更合适的工具吗?
答案1
您可以用 lftp 替换 rsync - 请参阅我在超级用户上的帖子:
https://superuser.com/questions/75681/inverse-multiplexing-to-speed-up-file-transfer/305236#305236
唯一的问题可能是 lftp 不会“只传输更改/添加的文件”。但我可以向你保证,这是我见过的最快的多线程数据传输方式。
答案2
顺便说一句,您提出的问题(即 TCP 连接无法达到足够快的速度以耗尽整个网络带宽)只会在带宽延迟乘积很大的情况下发生,这种情况只出现在极少数网络上。在 LAN 中,延迟较小,因此乘积较小;在 WAN 中,带宽较小,因此乘积较小。
如果您的网络具有非常大的带宽延迟积,您可以做一些事情来调整 TCP 以适应它,首先是增加窗口大小并增加路径 MTU(好吧,这是一个 IP 调整,而不是 TCP 调整,但它适用!)。查看有关研究网络的论文以了解更多信息。为了进一步帮助您根据您的场景调整 TCP,您可能需要描述您的特定网络。
至于使用 rsync,您无法同时运行两个 rsync 来复制相同的文件。
我能想到的您可以在 rsync 级别执行的唯一操作是将目录分成多个子目录并并行逐个传输它们。