在Linux环境下传输超大文件时,许多用户第一时间想到的是rsync或scp。这些经典工具虽然功能强大,但都有一个共同的短板——传输速度较慢。这是因为它们默认采用加密传输,发送端加密、接收端解密,整个过程虽然保障了安全,但对于非敏感文件来说,这层加密显得有些“杀鸡用牛刀”。那么,能否不加密直接在网络上裸传呢?当然可以,而且速度会快得超乎想象。
接下来直接实战:传输一个2077MB的ISO文件,看看真实效果。
使用nc发送和接收数据
接收端:
nc -l 45.55.0.86 9999 > jieshou.iso
参数说明:-l 表示监听指定端口以等待数据传入;-u 则可以切换到UDP协议(理论上速度更快,但稳定性有待验证,此处未使用)。整条命令的含义是:在本机开启9999端口,将接收到的数据写入 jieshou.iso 文件。
发送端:
time nc 45.55.0.86 9999 < CentOS-6.9-x86_64-bin-DVD2.iso
命令前的 time 用于记录传输耗时,便于后续性能评估。

结果非常直观:仅用24秒便在公网上完成了2077MB文件的传输,平均速度高达87MB/s。传输完成后,两端进行MD5校验,文件完全一致,没有任何损坏。
使用nc传输具有两个显著特点:
- 速度快:省去加密开销,直接充分利用网络带宽。
- 操作简单:无需登录目标服务器或验证身份,开箱即用。
nc传输进度显示
如果文件体积过大,希望查看实时传输进度,可以使用 pv 工具与nc配合。
yum install epel-release -y yum install pv -y cat CentOS-6.9-x86_64-bin-DVD2.iso | pv -b | nc 45.55.0.86 9999
这样在传输过程中即可实时显示已传输的字节数,让用户对进度更有把握。
使用nc传输目录
如果需要传输整个目录,可以结合tar打包工具。接收端先监听并写入一个压缩包文件:
nc -l 45.55.0.86 9999 | pv -b > home.tar.gz
发送端将 /home/ 目录压缩后通过管道传递给nc:
tar -czf - /home/ | nc 45.55.0.86 9999
这样就实现了目录的快速无损传输。
通过nc实现文件中转
实际生产环境中还会遇到更复杂的网络拓扑:假设有三台主机——A位于美国,C位于昌南,C只能访问B,而B与A、C均互通。那么C该如何获取A上的文件呢?
思路是让B充当“二传手”的角色。
在C上执行:
nc -l 9999 > google_file.txt
在B上执行:
nc -l 9999 | nc (C的外网IP) 9999
在A上执行:
nc (B的外网IP) 9999 < google_file.txt
这样数据流就变为 A → B → C,成功绕过了网络限制,且全程无加密,速度依旧可观。
以上几种方法均基于nc这一轻量级文件传输工具,特别适用于在内网或公网中传输非敏感的大文件。需要提醒的是,由于缺乏加密和认证机制,请务必在安全的网络环境中使用,或在传输完成后进行MD5校验,以确保数据完整性。
