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 传输是不加密且无完整性校验的。对于关键生产数据,建议传输完成后手动执行 md5sumsha256sum 进行比对。