GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo transferir rápidamente archivos grandes a través de la red en Linux y Unix

Hoy tuve que reinstalar mi servidor Ubuntu que uso a menudo para probar diferentes aplicaciones. Mi servidor Ubuntu tiene más de 200 GB de datos y no quiero perderlos. Puedo transferir esos datos a través de scp, o configurar NFS, FTP para copiar archivos, pero estoy bastante seguro de que llevaría horas transferir archivos tan grandes. Mientras buscaba un método alternativo, encontré el siguiente método. Podemos transferir rápidamente archivos grandes entre dos sistemas a través de la red usando netcatalquitrán , y pv comandos en cualquier sistema operativo GNU/Linux y tipo Unix. A diferencia de otros métodos, lo encuentro muy rápido y rápido. Para los que no lo saben, Netcat es una sencilla utilidad de Unix que lee y escribe datos a través de conexiones de red utilizando el protocolo TCP o UDP. alquitrán es una herramienta de archivo de línea de comandos y pv , significa visor de tuberías, se usa para monitorear el progreso de los datos. Ahora, permítame mostrarle cómo transferir archivos grandes rápidamente entre dos sistemas Linux. No es tan difícil como crees. Sigue leyendo.

Descargar - Libro electrónico gratuito:"6 herramientas útiles de línea de comandos de Linux para administradores de sistemas"

Transfiera rápidamente archivos grandes a través de la red entre dos sistemas en GNU/Linux

Asegúrese de haber instalado las utilidades "netcat" y "pv" en sus sistemas. Si aún no están instalados, puede instalarlos como se muestra a continuación. El paquete "tar" está disponible de forma predeterminada en la mayoría de los sistemas Linux, por lo que no es necesario que lo instale.

Sobre Arch Linux y sus derivados:

$ sudo pacman -S netcat pv

En RHEL, CentOS, Fedora:

$ sudo yum install epel-release
$ sudo yum install nc pv

O,

$ sudo dnf install nc pv

En Debian, Ubuntu, Linux Mint:

$ sudo apt-get install netcat pv

Ahora veamos cómo copiar rápidamente archivos grandes entre dos sistemas.

Para hacerlo, ejecute el siguiente comando como root usuario en el nodo receptor (sistema de destino):

# netcat -l -p 7000 | pv | tar x

En el nodo de envío (sistema de origen), ejecute este comando como root usuario:

# tar cf - * | pv | netcat 192.168.1.105 7000

Aquí, 192.168.1.105 es mi sistema de destino. tar cf - * copiará todo en el directorio de trabajo actual al sistema de destino y los archivos se extraerán en el otro extremo.

Nota: En RHEL, sistemas CentOS, use "nc" en lugar de "netcat" como se muestra a continuación. Y debe agregar el puerto "7000" a iptables/firewall-cmd en el sistema de destino.

Después de agregar el puerto en el sistema de destino, puede transferir los archivos más grandes como se muestra a continuación.

En el sistema de destino:

# nc -l -p 7000 | pv | tar x

En el sistema de origen:

# tar cf - * | pv | nc 192.168.1.105 7000

Además, puede especificar un archivo en particular como el siguiente.

# tar cf - /home/sk/test.file | pv | netcat 192.168.1.105 7000

Tenga en cuenta que ambos sistemas deben tener netcat instalado . Ahora, toma una taza de café. Verá que los archivos se copiarán más rápido que los métodos tradicionales como scp.

Además, no verá ninguna señal de finalización de la transferencia de archivos en ambos lados. Estos comandos seguirán ejecutándose hasta que los detenga manualmente. Debe verificar manualmente los tamaños de archivo en ambos sistemas usando "du -h " dominio. Si el tamaño del archivo en el sistema de destino es el mismo que en el sistema de origen, puede asumir que el proceso de transferencia de archivos se completó y salir del comando presionando CTRL+C .

Transfiere rápidamente archivos grandes entre dos sistemas en Unix

En los sistemas operativos Unix, netcat se llama como nc. Entonces, para copiar archivos grandes entre sistemas a través de la red, el comando sería:

En el sistema de destino:

# nc -l 7000 | pv | tar -xpf -

En el sistema de origen:

# tar -cf - * | pv | nc 192.168.1.105 7000

Nuevamente, estos comandos deben ejecutarse como root usuario. Y, tanto el sistema de origen como el de destino deben tener netcat y pv instalados. La transferencia de archivos grandes a través de LAN usando netcat y tar puede ahorrarle mucho tiempo.

Descargo de responsabilidad: Tenga en cuenta que no hay seguridad en este método . Porque, como ves en los ejemplos anteriores, no hay autenticación en ninguno de los dos lados. Todo lo que necesita saber es la dirección IP del sistema de destino. Se recomienda transferir archivos usando netcat solo dentro de redes protegidas . Si está paranoico con la seguridad, le sugiero que use scp comando.

Si tu seguridad es tan importante para ti, puedes usar Rsync para transferir archivos de forma segura.

$ rsync -ravz /path/to/source/files/ destination-ip:/path/on/destiny

Gracias:Ppnman

Eso es todo. ¿Conoces alguna otra forma de copiar archivos grandes rápidamente? Compártalo en la sección de comentarios a continuación.


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

  2. Cómo configurar el servidor SAMBA y transferir archivos entre Linux y Windows

  3. Cómo encontrar archivos grandes de Linux con los comandos find y du

  4. Cómo archivar y comprimir archivos en Linux

  5. ¿Cómo copiar archivos en Linux y Unix? Ejemplos de comandos de 10 cp

Cómo instalar Rclone en Linux y Unix

Cómo configurar la dirección IP estática en Linux y Unix

Cómo servir rápidamente archivos y carpetas a través de HTTP en Linux

Cómo transferir archivos entre Dropbox y Google Drive con Rclone en Linux

Cómo mover una gran cantidad de archivos en Linux

Cómo copiar una gran cantidad de archivos en Linux