V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
wiewiewie
V2EX  ›  分享创造

使用 pv+nc 命令传输文件

  •  
  •   wiewiewie · 2019-11-12 16:02:38 +08:00 · 3561 次点击
    这是一个创建于 1598 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有时 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 -
    3 条回复    2019-11-14 07:06:25 +08:00
    dorothyREN
        1
    dorothyREN  
       2019-11-12 21:44:12 +08:00
    网络原因的话 你确定 nc 就能传?
    cdlnls
        2
    cdlnls  
       2019-11-13 13:15:00 +08:00 via iPhone
    nc 确实可以传文件,但是 nc 不是系统默认安装的,每次要用的时候还得额外安装
    msg7086
        3
    msg7086  
       2019-11-14 07:06:25 +08:00
    震惊! ssh 就能传送文件。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   999 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:17 · PVG 06:17 · LAX 15:17 · JFK 18:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.