局域网内Linux机器间如何快速传文件? ssh过于繁琐, 转而采用 nc
(netcat)
TL;DR:
先在接收端监听端口: nc -l 12345 > filename
在发送端写入文件: nc -w 3 <ip> 12345 < sourcefile
其中-w 3
的含义是输入数据到达末尾三秒后, 关闭socket. 针对openbsd.nc实现也可以改用 nc -N <ip> 12345 < sourcefile
. 不加这个参数会导致接收端一直等待数据而无法退出.
注意 nc
是 netcat. Ubuntu上预装的是openbsd实现. 和nmap套件中的 ncat
要区分开.
传输完成后可通过hash校验判断文件是否完整传输:
sha256sum filname
sha256sum sourcefile
需要注意的是, nc是基于明文传输的, 因此只适用于受信任的局域网环境. 公网环境下还是老实用ssh/scp/sftp吧.