网站搜索

如何使用 nc 和 pv 命令在两台计算机之间传输文件


Linux 读者朋友们大家好,我为您带来了 Linux 提示和技巧系列中的另一篇精彩文章,这次我们将使用两个您必须了解的鲜为人知的 Linux 实用程序。

本文将解释如何使用nc网络实用程序)和pv管道查看器)在两台Linux计算机之间传输文件strong>) 命令,在进一步讨论之前,让我解释一下这两个命令是什么。

nc代表Netcat,常被称为“瑞士军刀”,是一种用于网络调试和调查的网络工具,也被用来用于使用 TCP 或 UDP 创建网络连接、端口扫描、文件传输等。它被创建为一个可靠的后端,专门用于程序和脚本,因为它可以生成几乎任何类型的网络连接,并具有许多内置功能。

pv 简而言之 Pipe Viewer 是一个基于终端的工具,用于监视通过管道发送的数据的进度,它允许用户通过进度条查看数据的进度,显示经过的时间、完成的百分比、当前吞吐量速率、传输的总数据量以及完成该过程的预计时间。

如何使用 pv(管道查看器)命令监控数据进度

现在让我们进一步了解如何组合这两个命令在两台 Linux 计算机之间传输文件,出于本文的目的,我们将使用两台 Linux 计算机,如下所示:

Machine A with IP : 192.168.0.4
Machine B with IP : 192.168.0.7

注意:我强烈建议不要使用netcat通过公共网络发送和接收数据,因为它不使用任何登录或身份验证,唯一的要求是客户端 IP 和侦听端口号,并且通过网络发送的数据不安全,因此,它始终保留给高级 Linux 用户,并优先在受保护的本地网络上使用。

在数据安全性更重要的情况下,请始终使用基于 SSH 的 rsync 或基于 SSH 的 scp。

现在让我们从 ncpv 命令的一些真正简单的示例开始,但在此之前,这两个实用程序都必须安装在系统上,如果没有使用各自的发行包管理器安装它们建议的工具:

yum install netcat pv        [On RedHat based systems]
dnf install netcat pv        [On Fedora 22+ versions]
apt-get install netcat pv    [On Debian and its derivatives]

如何在两台Linux机器之间传输文件?

假设您要通过网络从计算机 AB 发送一个名为 CentOS-7-x86_64-DVD-1503.iso 的大文件,实现此目的的最快方法是使用 nc(用于通过 TCP 网络发送文件的网络实用程序)、pv 监控数据进度和 tar压缩数据以提高传输速度的实用程序。

在 Linux 机器 A 上

首先登录 IP 地址为 192.168.0.4 的计算机“A”并运行以下命令。

tar -zcf - CentOS-7-x86_64-DVD-1503.iso | pv | nc -l -p 5555 -q 5

让我解释一下上面命令中使用的选项:

  1. tar -zcf=tar 是一个磁带存档实用程序,用于压缩/解压缩存档文件和参数 -c 创建新的 .tar 存档文件,-f 指定存档文件的类型,-z 通过 gzip 过滤存档。
  2. CentOS-7-x86_64-DVD-1503.iso=指定通过网络发送的文件名,可以是文件或目录路径。
  3. pv=管道查看器,用于监控数据进度。
  4. nc -l -p 5555 -q 5=用于通过 TCP 发送和接收数据的网络工具,以及用于侦听传入连接的参数 -l- p 555 指定要使用的源端口,-q 5 等待秒数然后退出。

在 Linux 机器 B 上

现在使用 IP 地址 192.168.0.7 登录计算机“B”并运行以下命令。

nc 192.168.1.4 5555 | pv | tar -zxf -

就这样,文件被传输到计算机B,您将能够看到操作执行的速度。 nc (尚未介绍,但很快会写)和 pv (我们已经在此处介绍了有关此内容的详细文章)命令还有大量其他出色用法,如果您知道任何示例,请通过评论告诉我们!