反向复用加速文件传输

反向复用加速文件传输

我从一台机器向另一台机器发送了大量数据。如果我使用 rsync(或任何其他方法)发送,速度将稳定在 320kb/秒。如果我同时发起两到三次传输,每次传输速度将达到 320kb/秒,如果我同时发起四次传输,它们将使链路达到最大速度。

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

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

答案1

证明这一切都是有意义的 - 我展示了远程镜像命令的“圣杯”。感谢 davr 的建议lftp

lftp -c "mirror --use-pget-n=10 --verbose sftp://username:[email protected]/directory" 

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

答案2

有几个工具也许能起到作用。

  • 低速FTP- 支持 FTP、HTTP 和 SFTP。支持使用多个连接下载单个文件。假设您要将文件从远程服务器传输到本地服务器,请在本地服务器上安装 LFTP,然后运行:

    lftp -e 'pget -n 4 sftp://[email protected]/some/dir/file.ext'

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

  • 然后还有许多“下载加速器”工具,但它们通常只支持 HTTP 或 FTP,你可能不想在远程服务器上设置它们。以下是一些示例阿克塞尔aria2, 和普利扎

答案3

如果您有少量但很大的文件,请使用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>)。

答案4

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

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

相关内容