Cómo transferir archivos entre dos computadoras usando los comandos nc y pv


Hola, compañeros lectores de Linux, les traigo otro gran artículo de nuestra serie de consejos y trucos de Linux, esta vez usaremos dos utilidades de Linux menos conocidas que debe conocer.

Este artículo explicará cómo transferir archivos entre dos computadoras Linux usando los comandos nc (utilidad de red) y pv (visor de tuberías). Antes de continuar, déjeme explicar cuáles son estos dos comandos.

nc significa Netcat y a menudo se señala como "Swiss Army Knife" es una herramienta de red utilizada para la depuración e investigación de redes y también se utiliza para crear conexiones de red usando TCP o UDP, escaneo de puertos, transferencia de archivos y más. Está creado para ser un back-end confiable y se usa especialmente en programas y scripts, ya que puede generar casi cualquier tipo de conexión de red y tiene una serie de funciones integradas.

pv en resumen Pipe Viewer es una herramienta basada en terminal para monitorear el progreso del envío de datos a través de una tubería, le permite al usuario ver el progreso de los datos con una barra de progreso, muestra el tiempo transcurrido, el porcentaje completado, la tasa de rendimiento actual, el total de datos transferidos y Tiempo estimado para completar el proceso.

Avancemos ahora más y veamos cómo podemos combinar ambos comandos para transferir archivos entre dos computadoras Linux, para el propósito de este artículo usaremos dos máquinas Linux de la siguiente manera:

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

Situaciones en las que la seguridad de los datos es más importante, utilice siempre rsync sobre SSH o scp sobre SSH.

Ahora comencemos con un ejemplo realmente sencillo de los comandos nc y pv, pero antes de hacerlo, ambas utilidades deben estar instaladas en el sistema, si no, instálelas usando su respectiva herramienta de administración de paquetes de distribución como se sugiere:

# 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]

¿Cómo transferir archivos entre dos máquinas Linux?

Supongamos que desea enviar un archivo grande llamado CentOS-7-x86_64-DVD-1503.iso de la computadora A a la B a través de la red, la forma más rápida de lograrlo usando nc, una utilidad de red utilizada para envíe archivos a través de la red TCP, pv para monitorear el progreso de los datos y la utilidad tar para comprimir los datos y mejorar la velocidad de transferencia.

Primero inicie sesión en la máquina "A" con la dirección IP 192.168.0.4 y ejecute el siguiente comando.

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

Déjame explicarte las opciones utilizadas en el comando anterior:

  1. tar -zcf = tar is a tape archive utility used to compress/uncompress archive files and arguments -c creates a new .tar archive file, -f specify type of the archive file and -z filter archive through gzip.
  2. CentOS-7-x86_64-DVD-1503.iso = Specify the file name to send over network, it can be file or path to a directory.
  3. pv = Pipe Viewer to monitor progress of data.
  4. nc -l -p 5555 -q 5 = Networking tool used for send and receive data over tcp and arguments -l used to listen for an incoming connection, -p 555 specifies the source port to use and -q 5 waits the number of seconds and then quit.

Ahora inicie sesión en la máquina "B" con la dirección IP 192.168.0.7 y ejecute el siguiente comando.

# nc 192.168.1.4 5555 | pv | tar -zxf -

Eso es todo, el archivo se transfiere a la computadora B, y podrá ver qué tan rápido se estaba realizando la operación. Hay muchos otros usos excelentes de los comandos nc (aún no cubiertos, pero escribiremos sobre ellos pronto) y pv (ya cubrimos un artículo detallado sobre esto aquí).