反向多路复用以加快文件传输

Zim*_*bby 23 linux freebsd bsd file-transfer multiplexing

我已经将大量数据从一台机器发送到另一台机器。如果我使用 rsync(或任何其他方法)发送,它将以稳定的 320kb/sec 进行。如果我一次启动两到三个传输,每个传输将达到 320,如果我一次执行四个传输,它们将使链接最大化。

我需要能够尽可能快地发送数据,所以我需要一个可以对文件传输进行反向多路复用的工具。我需要一个通用的解决方案,所以在源机器上运行 split 并将它们放在另一端是不切实际的。我需要它以自动化方式工作。

有没有工具可以做到这一点,还是我需要自己制作?发送方是 CentOS,接收方是 FreeBSD。

小智 31

证明这一切加起来 - 我提出了远程镜像命令的“圣杯”。感谢 davr 的lftp建议。

lftp -c "mirror --use-pget-n=10 --verbose sftp://username:password@server.com/directory" 
Run Code Online (Sandbox Code Playgroud)

以上将递归镜像远程目录,在传输时将每个文件分成 10 个线程!


dav*_*avr 10

有几个工具可能有用。

  • LFTP - 支持 FTP、HTTP 和 SFTP。支持使用多个连接下载单个文件。假设要将文件从 remoteServer 传输到 localServer,请在 localServer 上安装 LFTP,然后运行:

    lftp -e 'pget -n 4 sftp://userName@remoteServer.com/some/dir/file.ext'

    '-n 4' 是并行使用的连接数。

  • 然后有许多“下载加速器”工具,但它们通常只支持 HTTP 或 FTP,您可能不想在远程服务器上设置它们。一些例子是Axelaria2ProZilla


小智 8

如果您使用的文件很少而且很大lftp -e 'mirror --parallel=2 --use-pget-n=10 <remote_dir> <local_dir>' <ftp_server>:您将下载 2 个文件,每个文件分为 10 个段,总共有 20 个 ftp 连接<ftp_server>

如果您有大量小文件,则使用lftp -e 'mirror --parallel=100 <remote_dir> <local_dir>' <ftp_server>:您将并行下载 100 个文件而无需分段,然后。总共将打开 100 个连接。这可能会耗尽服务器上的可用客户端,或者可能导致您在某些服务器上被禁止。

您可以使用--continue来恢复作业 :) 和-R上传而不是下载的选项(然后将参数顺序切换为<local_dir> <remote_dir>)。

  • 参数中的拼写错误:--use-pget-n 而不是 --use-pget-m。尝试编辑,但我的编辑太短了。 (2认同)

Geo*_*itz 1

您的数据是如何构建的?几个大文件?几个大目录?您可以在目录树的特定分支上生成多个 rsync 实例。

这完全取决于源数据的结构。有大量的 UNIX 工具可用于对文件进行切片、切块和重组。