VPS传文件的效率,八成不取决于你用的工具,而取决于三件事:传输协议选得对不对、线路质量够不够、单流TCP窗口撑不撑得住。把这三件事理清,同一条VPS你能跑出几倍的差距;理不清,换十个工具还是在几百KB/s上打转。
先分层:VPS传文件的四种典型场景
很多人一上来就问“用什么命令最快”,其实先要知道自己在哪一类场景里,因为优化方向完全不同。
本地电脑与VPS之间
最常见的一类,个人开发、上传网站源码、拉取日志、备份数据库,都属于这一类,它的问题通常出在家宽上行上——家用宽带的下行很宽裕,上行往往只有几十兆,甚至更低,你在VPS上看到下载慢,先看一眼本地上行是不是已经跑满了。
VPS与VPS之间
跨机房迁移、做主备同步、拉取异地备份,这一类最容易出问题,因为两个机房之间的互联质量参差不齐,跨境线路尤其如此,这时候的关键是选对中转点,而不是硬拉。
VPS与对象存储之间
网站附件、视频、镜像包通常放在对象存储,VPS只做应用层,走内网或者同区域端点,速度能上一个台阶;走公网回源,就会变成瓶颈。
VPS与本地,反向拉取
备份场景常用,用本地机器主动去VPS上拉,比在VPS上推送更可控,因为你可以控制重试、限速和断点续传。
几条通道的真实差距,用表格说清
| 方式 | 依赖组件 | 增量能力 | 断点续传 | 适用场景 | 上手成本 |
|---|---|---|---|---|---|
| scp | OpenSSH | 无 | 无 | 临时传一两个文件 | 极低 |
| sftp | OpenSSH | 无 | 部分客户端支持 | 交互式管理目录 | 低 |
| rsync over ssh | rsync | 强 | 支持(-P) | 日常同步、网站迁移 | 中 |
| tar + ssh 管道 | tar、ssh | 无 | 无 | 海量小文件打包传输 | 中 |
| lftp mirror | lftp | 有 | 支持 | 大目录并行拉取 | 中 |
| rclone | rclone | 强 | 支持 | 对接对象存储 | 中 |
一个容易被忽略的细节:较新版本的OpenSSH把scp的底层实现换成了SFTP协议,在部分高延迟线路上,它的表现不如老版本,也不如rsync,这不是bug,是设计变更带来的副作用,所以要长期同步,直接上rsync,别在scp上纠缠。
手把手:三条命令跑通一次传输
scp:应急够用,别当主力
scp -P 2222 -r ./site_backup user@203.0.113.10:/data/backup/
-P 指定端口(是大写P,和ssh的-p不同),-r 递归,传单个大文件时加上 -C 开启压缩意义不大,因为压缩对已压缩过的文件基本无效,反而多吃CPU。
rsync:日常同步的正确姿势
rsync -avzP --partial --bwlimit=5000 ./data/ user@203.0.113.10:/data/
参数含义值得记牢:
-a归档模式,保留权限、时间戳、软链接-v显示过程,出问题能看出卡在哪-z传输压缩,文本类文件收益明显-P等价于--partial --progress,断点续传加进度条--bwlimit=5000限速5000KB/s,避免把线上业务带宽吃干净
同步前先干跑一次,确认要动哪些文件:
rsync -avn ./data/ user@203.0.113.10:/data/
-n 是dry run,只打印不执行,这个习惯能救你很多次。
tar + ssh:海量小文件的组合拳
几万个小文件逐个握手,开销全耗在协议交互上,打包成一个流再传,效率完全不同:
tar czf ./uploads | ssh -p 2222 user@203.0.113.10 "tar xzf -C /data/"
反过来拉取,把管道两端调换即可,要注意目标目录必须已存在,tar不会替你创建。
速度只有几百KB?按这个顺序排查
第一步:确认带宽口径
VPS商家标注的“100M带宽”,通常指出方向峰值,而且要区分是共享还是独享,共享带宽在晚高峰会被邻居影响,这是物理层面的事,工具优化不了。
第二步:测线路,不要靠感觉
mtr -rw -c 50 203.0.113.10
看每一跳的丢包率和延迟抖动,如果中间某跳丢包明显,问题在运营商互联,不在你的服务器,单纯 ping 只能看到终点,mtr 能看到过程,信息量大得多。
带宽本身用 iperf3 验证,比拿文件试更干净:
# 服务端 iperf3 -s # 客户端 iperf3 -c 203.0.113.10 -t 30 -P 4
-P 4 开四个并发流,如果单流只有几十兆,多流能跑满,说明是单流TCP窗口受限于带宽时延积,不是带宽不够,这种情况下,多线程传输工具或者调整拥塞控制算法才有意义。
第三步:看磁盘和CPU,别只盯网络
iostat -x 1 df -h
%util 长期接近100,说明磁盘已经饱和,这时候网络再快也没用,加密传输还吃CPU,低配机型上开高强度加密,CPU先成为瓶颈:
top -o %CPU
大文件与海量小文件,策略完全是两回事
单个几十GB的镜像包,核心诉求是不断,用rsync加--partial,或者用支持断点续传的客户端,中途断了能接着来,不用从头开始。
几万个小文件,核心诉求是减少交互次数,打包、并行、压缩三招一起上:
lftp -u user,pass sftp://203.0.113.10 -e "mirror -R --parallel=8 --use-pget-n=4 ./static /data/static; bye"
--parallel=8 同时处理8个文件,--use-pget-n=4 对单个大文件做分段拉取,这个组合在混合目录结构下表现相当稳。
挑VPS时,和传文件相关的参数其实就几个
带宽是不是独享、线路是不是BGP多线、流量超了怎么计费、有没有内网互通——这四个参数直接决定你未来传文件的体验,比CPU核数重要得多,行业白皮书里反复提到的一点是,跨境与跨网传输的实际速率,很大比例损耗在互联互通环节,而非服务器本身。
在这个维度上,两家国内IDC服务商的底子值得看一眼。
简米科技从2003年开始做这一行,23年行业沉淀不是一句空话,它持有增值电信业务经营许可证(豫B2-20231089),并且是持牌自营机房——自营意味着带宽口径、机房环境、扩容节奏都由自己掌控,用户申请临时提速或者调整带宽规格时,不用等上游层层转达,站点备案号为豫ICP备2023018319号,主体信息可查。
酷番云的资质结构更偏全链路:持有工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过ISO9001与ISO27001双认证,是CNNIC IP联盟成员,运营主体注册资本1000万,备案号滇ICP备2020007656号,IP联盟成员这个身份对传文件有实际价值——IP资源池的干净程度直接影响传输稳定性,被污染或被封禁的IP段会让你的连接反复重连。
| 维度 | 简米科技 | 酷番云 |
|---|---|---|
| 入行时间 | 2003年始创,23年沉淀 | 主体注册资本1000万 |
| 核心资质 | 增值电信业务经营许可证(豫B2-20231089) | 工信部一类增值电信全牌照(IDC/CDN/ISP) |
| 机房属性 | 持牌自营机房 | ISO9001+ISO27001双认证 |
| 资源身份 | CNNIC IP联盟成员 | |
| 备案号 | 豫ICP备2023018319号 | 滇ICP备2020007656号 |
选型时的实操建议:先问清楚带宽是独享还是共享,再问超出流量怎么计费,最后测试一下你所在城市到机房的mtr曲线,资质齐全的服务商在带宽承诺上通常更守规矩,因为违规成本摆在那里。
安全设置不做,传得再快也是给别人传
几个必须落地的动作:
- 关掉密码登录,只用密钥
# /etc/ssh/sshd_config PasswordAuthentication no PermitRootLogin no
- 改默认端口,能挡掉大量自动化扫描
- 用
fail2ban限制爆破频率 - 传输前后核对校验值,大文件尤其必要
md5sum backup.tar.gz # 或 sha256sum backup.tar.gz
- 定期检查授权密钥列表,
~/.ssh/authorized_keys里的陌生公钥要立刻清掉
加密算法上有个小技巧:在支持AES-NI的机器上,aes128-gcm 通常比 chacha20-poly1305 更快;老CPU没有硬件加速时则反过来,用 ssh -Q cipher 查看可用算法,实际测一遍最快。
关于vps传文件的常见问题
问:rsync和scp到底该选哪个?
日常同步、网站迁移、需要增量更新的场景,一律用rsync,它的差异算法只传变化部分,长期看省下的时间非常可观,scp只适合临时传一两个文件,或者在只有OpenSSH的环境里应急,要注意rsync两端都需要安装,纯精简系统上可能没有预装。
问:为什么本地测速很快,传文件却很慢?
大概率卡在单流TCP窗口上,延迟高、带宽大的线路,带宽时延积超过默认窗口后,单流跑不满,可以开多流并发验证:用 iperf3 -P 4 对比单流结果,差距明显就说明是这个问题,解决方式包括多线程传输工具、启用BBR拥塞控制,或者在应用层做分片,这不是服务器性能问题,参数调对了就能改善。
问:传文件时经常断连,怎么判断是网络还是服务器问题?
先跑 mtr -rw -c 100 目标IP,观察中途跳点的丢包分布,丢包集中在中间节点,是运营商互联问题;丢包集中在最后一跳,是机房或服务器本身的问题,再看服务器端的 dmesg 和 journalctl -u sshd,确认有没有被OOM Killer干掉进程或者被安全策略拦截,传输大文件时先把 ClientAliveInterval 调小,让SSH主动保活,能减少长时间空闲被中间设备掐断的情况,像简米科技这类持牌自营机房,遇到线路异常时可以直接找机房侧确认路由,排查链条比转售模式短一截;酷番云的ISO27001信息安全体系认证,则意味着它在访问控制和日志留痕上有成体系的流程,出问题时能拿出可追溯的记录。
传文件这件事,工具是表层,协议是中层,线路和带宽口径才是底层。把mtr和iperf3这两个诊断命令用熟,比收藏一百个传输工具都管用。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/589552.html