要让文件上传到 Linux 服务器更快,核心思路是:减少传输的数据量 和使用并行/高效的传输协议。
针对不同的使用场景,以下是几种主流且高效的上传方法,按推荐顺序排列:
1. 使用rsync + 压缩 (最通用、最推荐)
rsync 不仅支持增量传输(只传变化的部分),还能在传输过程中实时压缩,对于单文件或目录,这是最佳选择。
基本命令:
rsync -avzP --progress /本地/文件路径 user@服务器IP:/远程/目标路径-a:归档模式(保留权限、时间戳等)。
-v:显示详情。
-z:传输时压缩(关键提速项,适合文本、代码、未压缩的图片等)。
-P:断点续传 + 显示进度。
进阶提速:
如果你的服务器 CPU 够强,可以尝试更强的压缩算法(但会增加服务器 CPU 负担):
rsync -avzP --compress-level=9 --rsh="ssh -T -c aes128-ctr" /本地/文件 user@IP:/远程/路径 *这里用了更快的加密算法aes128-ctr 来减少 SSH 的加密延迟。
2. 使用lrzsz (sz /rz) + Zmodem (如果走终端)
如果你是通过 SSH 客户端(如 Xshell、SecureCRT、Termius)连接,并且文件较小(<1GB),可以用lrzsz 配合Zmodem 协议。
优点:无需额外端口或配置,直接在 SSH 会话里传。
操作:
1. 服务器安装:apt install lrzsz 或yum install lrzsz
2. 本地 SSH 客户端必须支持 Zmodem(Xshell、SecureCRT 默认支持)。
3. 在服务器终端输入:rz -b (回车后,客户端会弹出文件选择窗口)。
4. 上传:sz 文件名 (将服务器文件下载到本地)。
注意:rz 是单线程串行的,大型文件速度不如rsync,但胜在方便,适合几十 MB 的小文件。
3. 使用scp + 多线程工具 (parallel-scp 或pscp)
scp 本身是单线程的,对于非常大的单个文件,可以分割后并行上传。
手动分割并行上传:
# 1. 本地分割文件(每个50M)
split -b 50M bigfile.tar.gz bigfile.part.
# 2. 并行上传(使用 xargs 或 parallel)
ls bigfile.part.* | xargs -P 8 -I {} scp {} user@server:/tmp/
# 3. 服务器端合并
cat bigfile.part.* > bigfile.tar.gz-P 8 表示开启 8 个并发进程,对网络和 CPU 有一定压力。
专用工具:pscp (Parallel SCP) 或go-pscp(Go语言版)。
可以自动化分割、并行传输、合并,但需要额外安装。
4. 使用lftp (针对 FTP/SFTP 协议)
如果必须用 FTP 或 SFTP,lftp 支持多线程下载/上传。
安装:apt install lftp
上传:
lftp -c "open -u user,password sftp://服务器IP; mirror -R --parallel=10 /本地/目录 /远程/目录"-R:反向镜像(上传本地到远程)。
--parallel=10:开启 10 个并行连接(SFTP 默认单线程,此选项可以明显提速)。
5. 使用aria2 或axel (针对 HTTP/HTTPS)
如果你的服务器运行着一个 Web 服务(如 Nginx 提供文件下载),或者你要上传到云盘。
对于上传:aria2 支持多连接上传到支持分块上传的服务(如 Google Drive、阿里云 OSS),对于普通 VPS 间的传输,通常用wget 或curl 下载,但aria2 也可以做上传客户端。
常用场景:先在本地建一个 HTTP 服务器,然后在服务器上用aria2 分段下载。
# 本地(提供文件)
python3 -m http.server 8000
# 服务器(分段下载)
aria2c -x 16 -s 16 http://你本地IP:8000/file.zip6. 终极方案:bbcp 或asppy (专业大文件传输)
这是高性能计算中常用的工具,专为高延迟、高带宽的网络设计,能自动调整窗口大小和并行度。
bbcp:UG 开发的并行拷贝工具。
asppy:自适应压缩和并行。
使用方式(以 bbcp 为例):
服务器需运行 bbcp 守护进程(bbcp 会自行启动) bbcp -s 16 -w 4m -V /本地/文件 user@服务器IP:/远程/路径
-s 16:16 个并行流。
-w 4m:TCP 窗口大小(4MB),对高延迟网络至关重要。
| 场景 | 推荐工具 | 关键操作 |
| 日常文件/代码 | rsync | 加上-z 参数压缩 |
| 超大单文件 (>1G) | bbcp 或 分割pscp | 增加并行流数 |
| 终端环境 | lrzsz (rz) | 直接拖拽文件到终端 |
| 网络差/高延迟 | rsync +Parallel | 开启断点续传-P |
| FTP/SFTP 协议 | lftp | 开启--parallel |
最快的方案通常是:
1、压缩:把文件打包成.tar.gz 或.zip (尤其是很多小文件时)。
2、传输:使用rsync -avzP 或pscp /bbcp。
3、解压:在服务器上解压。
一个特别提示:如果你的服务器和本地之间的物理距离很远(比如跨国),或者带宽非常窄,那么先压缩再传,效果可能比增加并行度更好,因为 CPU 压缩的速度通常比网络传输要快得多。
文章摘自:https://idc.huochengrm.cn/fwq/25378.html
评论
耿恺歌
回复优化Linux服务器配置,合理分配带宽,使用Nginx等高效服务器软件,可显著提升上传速度。