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

使用 pv+nc 命令传输文件

  •  
  •   wiewiewie · 29 天前 · 958 次点击
    有时 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
        1
    dorothyREN   29 天前
    网络原因的话 你确定 nc 就能传?
        2
    cdlnls   28 天前 via iPhone
    nc 确实可以传文件,但是 nc 不是系统默认安装的,每次要用的时候还得额外安装
        3
    msg7086   27 天前
    震惊! ssh 就能传送文件。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   958 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 26ms · UTC 20:54 · PVG 04:54 · LAX 12:54 · JFK 15:54
    ♥ Do have faith in what you're doing.