两台机器间单文件传输加速方案咨询:如何通过多连接提升传输速率
嗨,针对你遇到的单文件从服务器A传到B,scp/rsync速率只有1Mb/s的问题,我给你整理几个实用的多连接加速方案,都是业内常用的:
用Parallel SCP直接并行传输
这个工具专门支持多连接并行传文件,安装后直接指定并行连接数就行。比如你想同时开5个连接传输,命令大概是:pscp -h server_b_ip -p 5 /path/to/your/large_file /remote/directory/
连接数可以根据你的网络情况调整,一般3-10之间试,别开太多,不然可能触发服务器的连接限制。手动拆分文件+并行传输+合并(无额外工具)
如果不想装新工具,用系统自带命令就能搞定:- 先在服务器A上把大文件拆成小分块,比如每块100MB:
split -b 100M /path/to/large_file file_chunk_
执行后会生成file_chunk_aa、file_chunk_ab这类分块文件。 - 用xargs并行scp这些分块到服务器B:
ls file_chunk_* | xargs -n 1 -P 5 scp {} server_b:/tmp/transfer/
这里-P 5表示同时开5个并行进程。 - 传输完成后,在服务器B上合并分块得到原文件:
cat file_chunk_* > /path/to/final_large_file
最后删掉临时分块文件就好。
- 先在服务器A上把大文件拆成小分块,比如每块100MB:
用多进程版Rsync(mprsync/rsync-parallel)
很多人喜欢rsync的增量同步特性,那可以用它的多进程变种:
比如mprsync,安装后指定并行进程数即可:mprsync -n 5 /path/to/your/large_file server_b:/remote/directory/
它会自动把文件分成多个块,用多个rsync进程并行传输,传输完成后自动合并,不用手动拆分,很省心。用Aspera进行高带宽优化传输
Aspera在大文件跨网传输上表现很出色,支持多连接和智能带宽调度,不过需要在两端都安装Aspera客户端/服务器。命令示例:ascp -l 100M -Q /path/to/your/large_file server_b:/remote/directory/
这里-l是设置总带宽上限,它会自动用多连接来尽量跑满这个带宽。
最后给你提几个小注意点:
- 并行连接数别设太高,不然可能被服务器的SSH连接限制(比如sshd配置里的
MaxSessions)拦住,或者导致网络拥堵反而变慢; - 如果是跨公网传输,先确认两端的带宽上限,有时候不是工具的问题,是运营商的带宽限制;
- 传输前最好先在小文件上测试下连接数,找到最适合你网络的数值。
备注:内容来源于stack exchange,提问作者Toodarday




