nc传输目录必须结合tar流式压缩,因nc仅处理字节流而不理解文件系统结构;发送端用tar czvf - /path/to/dir | nc,接收端用nc -l -p 端口 | tar xzvf -,且需显式指定监听ip、校验完整性。

nc传输目录必须用tar流式压缩
直接用nc传整个目录会失败——它只收发字节流,不理解文件系统结构。真正可行的方案是把目录打包成流,边压边传、边收边解。tar是唯一靠谱的搭档,不用落地临时文件,内存和IO都省。
- 接收端命令必须带
| tar xzvf -,否则收到的是乱码二进制流,不是目录 - 发送端必须用
tar czvf - /path/to/dir,末尾的-表示输出到stdout,才能喂给nc - 别用
zip或7z:它们不支持标准流输出,nc接不住
新版nc(OpenBSD/ncat)监听必须加-p参数
Ubuntu 22.04+、Debian 12、CentOS Stream 9 默认装的是OpenBSD版nc或ncat,nc -l 8000会静默退出或报错nc: missing port argument。
- 正确写法是
nc -l -p 8000 | tar xzvf -(监听端口8000) - 如果
nc -h 2>&1 | head -n1输出含netcat-openbsd,就属于这类版本 - 嫌麻烦?直接用
ncat -l -p 8000 | tar xzvf -,行为更一致,Ubuntu默认自带
内网传目录时最容易卡在防火墙和绑定地址
两台机器都在192.168.x.x网段,不代表nc能通——它默认只监听127.0.0.1,且云主机/容器环境常默认拦截非标准端口。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 接收端启动前先跑
ss -tlnp | grep :8000,没输出说明监听没起来或被拒绝 - 要用
nc -l -s 192.168.1.100 -p 8000 | tar xzvf -显式指定监听IP,别依赖默认行为 - 发送端执行前务必先测连通:
nc -zv 192.168.1.100 8000,返回succeeded!再传,否则tar流卡住无提示
大目录传输后必须校验完整性
nc不保证传输可靠:网络抖动、缓冲区溢出、中途中断都会导致目录残缺,但tar解包时可能只报“unexpected end of file”而不告诉你缺了哪几个子目录。
- 发送端提前算好校验值:
tar czf - /var/log/nginx/ | tee >(md5sum > checksum.md5) | nc 192.168.1.100 8000 - 接收端解完立刻验证:
md5sum -c checksum.md5(需把checksum.md5单独传过去) - 别信
nc退出码:它传一半断开也返回0,完全不可靠
实际操作中,最常被忽略的是监听地址绑定和校验环节——看着tar解完没报错,就以为目录完整,结果发现某个子目录里少了一半日志文件。










