使用 pv+nc 命令传输文件

2019-11-12 16:02:38 +08:00
 wiewiewie
有时 Linux 服务器可能网络等等其它原因没法通过 rsync 或者 scp 的方式传输文件,那有没有更简洁的方式来进行文件传输呢?
nc 是 netcat 的简写,有着网络界的瑞士军刀美誉,,是一款功能强大的网络调试和探测工具,之前有介绍命名 nc 进行端口探测如何探测 UDP 端口是否开放,除了进行端口探测之外,nc 还有一个很强大的功能就是文件传输

下面介绍 nc 命令进行文件传送

1)如上所示

ServerA:10.20.10.60

ServerB:10.20.10.62

ServerA 上生成一个测试文件 CentOS6.iso 大小 1000M=1G

然后 nc -l 1234 < CentOS6.iso

ServerA 监听在 1234 端口上,作为发送端.
ServerB 上进行接收 nc 10.20.10.60 1234 > CentOS6.iso
接收完成后可以使用 md5sum 比较文件的 md5 值确认收到的文件是否与发送端一致
=====================================================
2)为了更直观的显示传输进度与速度,可以配合 PV 命令

ServerA 上

rpm -ivh pv-1.6.6-1.x86_64.rpm

dd if=/dev/zero of=CentOS6_20190825.iso bs=1024M count=1

md5sum CentOS6_20190825.iso

pv CentOS6_20190825.iso | nc -l 2345

ServerB 上

rpm -ivh pv-1.6.6-1.x86_64.rpm

nc 10.20.10.60 2345 | pv > CentOS6-20190825.iso

这样文件就传输到了 ServerB 上,你可以看到传输的进度

如果传输目录的话

例如:/usr/local/mysql/data 目录

发送端

cd /usr/local/mysql/data

tar -zcf - * | pv | nc -l 3456
接收端

nc 10.20.10.62 3456 | pv | tar -zxf -
3582 次点击
所在节点    分享创造
3 条回复
dorothyREN
2019-11-12 21:44:12 +08:00
网络原因的话 你确定 nc 就能传?
cdlnls
2019-11-13 13:15:00 +08:00
nc 确实可以传文件,但是 nc 不是系统默认安装的,每次要用的时候还得额外安装
msg7086
2019-11-14 07:06:25 +08:00
震惊! ssh 就能传送文件。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/618840

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX