Linux 传输文件:nc + pv 实践
在局域网大文件传输场景下,scp 的加密开销和 rsync 的校验逻辑有时会成为瓶颈。利用 nc (netcat) 直连配合 pv (Pipe Viewer) 监控进度,可以实现接近物理带宽的裸传速度。
快速上手
接收端 (IP: 172.25.1.54)
# 开启监听,解包流
nc -l -p 9999 | pv | tar -xf -
发送端
# 读取文件,压入 nc
pv minio_backup.tar | nc 172.25.1.54 9999
常用进阶场景
1. 裸传大文件 (不打包)
适用于 ISO 或单体压缩包。
- 接收端:
nc -l 12345 > largefile.iso - 发送端:
pv largefile.iso | nc 192.168.1.102 12345
2. 目录实时归档传输
通过管道将 tar 的 stdout 直接对接到 nc 的 stdin。
- 接收端:
nc -l 9999 | tar -xzf - - 发送端:
tar -czf - /path/to/dir | pv | nc 192.168.1.102 9999
选型对比
| 工具 | 核心特性 | 适用场景 |
|---|---|---|
| scp | SSH 加密、单文件 | 跨公网、安全性优先 |
| rsync | 差异同步、断点续传 | 频繁同步、目录镜像 |
| nc + pv | 零加密开销、管道流 | 局域网大文件一锤子买卖 |
注意事项
nc 传输是不加密且无完整性校验的。对于关键生产数据,建议传输完成后手动执行 md5sum 或 sha256sum 进行比对。