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 nuestras utilidades de Linux menos conocidas que deben conocer.

Este artículo explicará cómo se transfieren 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 características integradas.

pv en breve 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 la 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 scp sobre SSH.

Ahora comencemos con un ejemplo realmente fácil de los comandos nc y pv, pero antes de hacer eso, 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

Permítanme explicar las opciones utilizadas en el comando anterior:

  1. tar -zcf u003d tar es una utilidad de archivo de cinta que se utiliza para comprimir/descomprimir archivos de almacenamiento y argumentos -c crea un nuevo archivo de almacenamiento .tar, -f especifica el tipo de archivo de almacenamiento y -z filtra el archivo a través de gzip.
  2. CentOS-7-x86_64-DVD-1503.iso u003d Especifique el nombre del archivo para enviar a través de la red, puede ser un archivo o una ruta a un directorio.
  3. pv u003d Pipe Viewer para monitorear el progreso de los datos.
  4. nc -l -p 5555 -q 5 u003d Herramienta de red usada para enviar y recibir datos sobre tcp y argumentos -l usado para escuchar una conexión entrante, -p 555 especifica el puerto de origen a usar y -q 5 espera el número de segundos y luego salga.

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 pronto lo escribiremos) y pv (ya cubrimos un artículo detallado sobre esto aquí), si conoce algún ejemplo, ¡háganoslo saber a través de los comentarios!