GNU/Linux >> Tutoriales Linux >  >> Linux

Reanudar archivos parcialmente transferidos a través de SSH usando Rsync

Imagina este escenario. Estás copiando algunos archivos grandes de un sistema a otro a través de SSH usando scp dominio. De repente, se va la energía, por lo que se interrumpe la conexión de red y el proceso de copia se termina a mitad de camino. ¿Qué harías? ¿Simplemente reiniciar el proceso de copia una vez que la energía vuelva a estar en línea? Sí, funciona. Sin embargo, el scp El comando no tiene la opción de reanudar, por lo que simplemente comenzará a copiar los archivos desde el principio y sobrescribirá los archivos existentes. Esta es una tarea un poco molesta y que consume mucho tiempo. Aquí es donde Rsync ¡La utilidad viene en ayuda! Podemos reanudar fácilmente archivos transferidos parcialmente a través de SSH usando Rsync. Le ayuda a reanudar el proceso de copia o descarga interrumpido donde lo dejó.

¿Qué es Rsync?

Para aquellos que se preguntan, Rsync es una utilidad de copia de archivos rápida y versátil que se puede usar para copiar y transferir archivos o carpetas hacia y desde sistemas remotos y locales. Ofrece una gran cantidad de opciones que controlan todos los aspectos de su comportamiento y permiten una especificación muy flexible del conjunto de archivos a copiar. Es famoso por su algoritmo de transferencia delta , que reduce la cantidad de datos enviados a través de la red al enviar solo las diferencias entre los archivos de origen y los archivos existentes en el destino. Rsync se usa ampliamente para copias de seguridad y duplicación y como un comando de copia mejorado para el uso diario.

Al igual que scp , rsync también puede copiar archivos a través de SSH. En caso de que desee descargar o transferir archivos y carpetas de gran tamaño a través de SSH, le recomiendo que utilice la utilidad rsync como se describe a continuación.

Instalar Rsync en Linux

Por favor, que la utilidad rsync debe instalarse en ambos lados (es decir, sistemas remotos y locales) para reanudar los archivos transferidos parcialmente. Rsync está disponible en los repositorios oficiales de la mayoría de las distribuciones de Linux, por lo que puede instalarlo usando el administrador de paquetes predeterminado de la distribución.

En Alpine Linux , podemos instalar Rsync como se muestra a continuación:

$ sudo apk add rsync

En Arch Linux y sus variantes, instale Rsync usando el comando:

$ sudo pacman -S rsync

En Debian , Ubuntu , Linux Mint :

$ sudo apt-get install rsync

En Fedora , RHEL , Cent OS , AlmaLinux y Rocky Linux :

$ sudo dnf install rsync

En SUSE/openSUSE :

$ sudo zypper install rsync

Reanudar archivos parcialmente transferidos usando Rsync

Ahora veamos un ejemplo. Voy a copiar el archivo ISO de Ubuntu desde mi sistema local a un sistema remoto usando el siguiente comando:

$ scp ubuntu.iso [email protected]:/home/sk/

Aquí,

  • sk es el nombre de usuario de mi sistema remoto
  • 192.168.225.22 es la dirección IP de la máquina remota.
  • /home/sk/ es el destino remoto.

Ahora, terminé el proceso de copia a la fuerza presionando CTRL+C .

Salida de muestra:

[email protected]'s password: 
ubuntu-16.04-desktop-amd64.iso 26% 372MB 26.2MB/s 00:39 ETA^c

Como puede ver en el resultado anterior, terminé el proceso de copia cuando alcanzó el 33 %.

Si vuelvo a ejecutar el comando anterior, simplemente sobrescribirá el archivo existente. En otras palabras, el proceso de copia no se reanudará donde lo dejé.

Para reanudar el proceso de copia para copiar el archivo ISO parcialmente transferido, use rsync comando como se muestra a continuación.

$ rsync -P -rsh=ssh ubuntu.iso [email protected]:/home/sk/

Salida de muestra:

[email protected]'s password: 
sending incremental file list
ubuntu.iso
834.00M 100% 14.81MB/s 0:00:56 (xfr#1, to-chk=0/1)

¿Ver? Ahora, el proceso de copia se reanuda donde lo dejamos antes.

También puede usar "--partial " en lugar del parámetro "-P " como abajo.

$ rsync --partial -rsh=ssh ubuntu.iso [email protected]:/home/sk/

Aquí, los parámetros "--partial " o "-P " le dice al comando rsync que conserve el archivo parcialmente descargado y reanude el proceso.

Verifique si el archivo realmente se copió o no en el sistema remoto usando el comando:

$ ssh [email protected] ls -lh
[email protected]'s password: 
total 835M
-rw-rw-r-- 1 sk sk 834M Jul 26 2019 ubuntu.iso

Como puede ver en el resultado anterior, el archivo Ubuntu.iso se copia en el sistema remoto y su tamaño es de 835 MB.

Alternativamente, también podemos usar los siguientes comandos para reanudar archivos parcialmente transferidos a través de SSH.

$ rsync -avP ubuntu.iso [email protected]:/home/sk/

O,

$ rsync -av --partial ubuntu.iso [email protected]:/home/sk/

Eso es todo. Ahora sabe cómo reanudar los archivos cancelados, interrumpidos y parcialmente descargados usando el comando rsync. Como puedes ver, no es tan difícil. Si rsync está instalado en ambos sistemas, podemos reanudar fácilmente el proceso de copia de archivos a través de SSH como se describe anteriormente.

Lectura sugerida:

  • Ejemplos de comandos Rsync de Linux para principiantes
  • Cómo reanudar un archivo descargado parcialmente usando Wget
  • Ejecutar comandos en sistemas Linux remotos a través de SSH

Linux
  1. Guía de Ansible:Administrar archivos usando Ansible

  2. Reanudar el archivo descargado parcialmente usando Wget en Linux

  3. ¿Registrar solo archivos transferidos con Rsync?

  4. ¿Cómo copiar archivos de forma remota a través de SSH sin ingresar su contraseña?

  5. Cómo copiar directorios recursivamente usando rsync mientras se excluyen archivos específicos

Cómo transferir archivos con Rsync a través de SSH

Cómo transferir archivos con Rsync a través de SSH

Cómo hacer una copia de seguridad de archivos y directorios usando Rsync en Linux

Cómo usar el comando rsync para copiar datos localmente y a través de SSH

Cómo copiar archivos de forma remota a través de SSH sin ingresar una contraseña

Rsync sobre SSH no recibe tty presente