GNU/Linux >> Tutoriales Linux >  >> Linux

Comando rsync de Linux con ejemplos prácticos

Rsync es una herramienta de copia de archivos rápida y extraordinariamente versátil. Puede copiar localmente, hacia/desde otro host a través de cualquier shell remoto, o hacia/desde un demonio rsync remoto. Ofrece una gran cantidad de opciones que controlan todos los aspectos de su comportamiento y permiten especificaciones muy flexibles 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 enviando 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.

Rsync encuentra archivos que deben transferirse mediante un algoritmo de "comprobación rápida" (de forma predeterminada) que busca archivos que han cambiado de tamaño o en la última hora de modificación. Cualquier cambio en los demás atributos conservados (según lo soliciten las opciones) se realiza directamente en el archivo de destino cuando la verificación rápida indica que no es necesario actualizar los datos del archivo.

Algunas de las funciones adicionales de rsync son

  • soporte para copiar enlaces, dispositivos, propietarios, grupos y permisos
  • excluir y excluir de opciones similares a GNU tar
  • un modo de exclusión de CVS para ignorar los mismos archivos que CVS ignoraría
  • puede usar cualquier shell remoto transparente, incluidos ssh o rsh
  • no requiere privilegios de superusuario
  • canalización de transferencias de archivos para minimizar los costos de latencia
  • soporte para demonios rsync anónimos o autenticados (ideal para duplicación)

Sintaxis

La sintaxis básica del comando rsync es:

# rsync options source destination

Algunas de las opciones comúnmente utilizadas:

  • –eliminar :elimina archivos que no existen en el remitente (sistema).
  • -v :Salida detallada
  • -e "opciones ssh" :especifique el ssh como shell remoto
  • -a :modo de archivo
  • -r :recurse a directorios
  • -z :comprimir datos de archivos

Ejemplos de comandos rsync en Linux

sincronizar archivos y directorios en el sistema local

# rsync -zvr /usr/  /root/sync-data/

El comando anterior copiará o sincronizará todos los archivos y directorios de la carpeta /usr a la carpeta /root/sync-data.

sincronizar archivos localmente preservando los permisos

-a Las opciones hacen lo siguiente:proporciona funciones recursivas y conserva permisos, enlaces simbólicos, usuarios e información de grupos.

# rsync -azv /usr/ /root/sync-data/

sincronizar/copiar archivos de la máquina local al servidor remoto

# rsync -avz /root/sync-data/ [email protected]:/tmp

El comando anterior copiará los datos de la carpeta /root/syc-data a la máquina remota con las credenciales de usuario root en la carpeta /tmp.

sincronizar/copiar archivos del servidor remoto a la máquina local

# rsync -avz [email protected]:/tmp/src /opt 
[email protected]'s password: 
receiving file list ... done 
src/ 
src/debug/ 
src/kernels/
sent 38 bytes  received 99 bytes  10.96 bytes/sec 
total size is 0  speedup is 0.00

El comando anterior copiará la carpeta /tmp/src del servidor remoto a la carpeta /opt de la máquina local.

Sincronización remota sobre ssh

rsync nos permite sincronizar archivos con una máquina remota y viceversa a través de ssh, es decir, comunicación segura. Use "rsync -e ssh" para especificar qué shell remoto usar. En nuestro caso, rsync usará ssh.

# rsync -avz -e ssh [email protected]:/var/lib/rpm  /opt 
The authenticity of host '192.168.2.149 (192.168.2.149)' can't be established. 
RSA key fingerprint is 45:fc:99:57:34:ba:6a:bb:e3:6f:00:bb:ca:15:3d:c3. 
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.149' (RSA) to the list of known hosts.
[email protected]'s password: 
receiving file list ... done 
rpm/ 
rpm/.rpm.lock 
rpm/Basenames 
rpm/Conflictname 
............
rpm/Triggername
sent 422 bytes  received 12521670 bytes  115410.99 bytes/sec 
total size is 35467264  speedup is 2.83

Ver progreso con sincronización

Podemos usar la opción “–progress” para ver el progreso de la sincronización.

# rsync -avz  --progress [email protected]:/usr   /opt 
[email protected]'s password: 
receiving file list ... 
44609 files to consider 
usr/ 
usr/tmp -> ../var/tmp 
usr/bin/ 
usr/bin/.fipscheck.hmac 
65 100%   63.48kB/s    0:00:00 (xfer#1, to-check=44605/44609) 
usr/bin/.ssh.hmac 
65 100%   63.48kB/s    0:00:00 (xfer#2, to-check=44604/44609) 
usr/bin/GET 
14519 100%  248.75kB/s    0:00:00 (xfer#3, to-check=44603/44609) 
usr/bin/HEAD 
14519 100%  232.44kB/s    0:00:00 (xfer#4, to-check=44602/44609)
............

Incluir y excluir opciones en rsync

rsync nos permite especificar el patrón que queremos incluir y excluir archivos o directorios mientras realizamos la sincronización.

# rsync -avz --include 'P*' --exclude '*' [email protected]:/var/lib/rpm/  /opt 
[email protected]'s password: 
receiving file list ... done 
./ 
Packages 
Providename 
Provideversion 
Pubkeys
sent 129 bytes  received 9395561 bytes  695977.04 bytes/sec 
total size is 28999680  speedup is 3.09

El ejemplo anterior incluye solo los archivos o directorios que comienzan con 'P' y excluye todos los demás archivos. (usando rsync excluir '*')

Eliminar archivos en el destino si los archivos no están presentes en el origen

Con la ayuda de la opción “–delete” en rsync, podemos eliminar los archivos creados en el destino si los mismos archivos no están presentes en el origen.

# rsync -avz --delete [email protected]:/var/lib/rpm/  /opt

EJEMPLO:9 VER LOS CAMBIOS ENTRE FUENTE Y OBJETIVO UTILIZANDO LA OPCIÓN "-I"

Ver los cambios entre origen y destino

Puede ver los cambios entre los archivos de origen y de destino utilizando la opción "-i". Por ejemplo:

# rsync -avzi [email protected]:/var/lib/rpm/ /opt
 [email protected]'s password:
 receiving file list ... done
 >f+++++++ .rpm.lock
 >f+++++++ Basenames
 >f+++++++ Conflictname
 >f+++++++ Dirnames
 >f+++++++ Filedigests
 >f+++++++ Group
 >f+++++++ Installtid
 >f+++++++ Name
 >f+++++++ Obsoletename
 >f+++++++ Requirename
 >f+++++++ Requireversion
 >f+++++++ Sha1header
 >f+++++++ Sigmd5
 >f+++++++ Triggername
sent 328 bytes  received 3126214 bytes  297765.90 bytes/sec
total size is 35467264  speedup is 11.34

Limitar el tamaño del archivo de transferencia

Puede obligar a rsync a no transferir archivos que superen un tamaño específico utilizando la opción "–max-size".

# rsync -avz --max-size='200k' [email protected]:/var/lib/rpm/ /opt

El comando anterior hace que rsync transfiera solo los archivos que son menores o iguales a 200K. Podemos indicar M para megas y G para gigas.


Linux
  1. Comando wc Linux con ejemplos

  2. 25 ejemplos prácticos útiles del comando find en Linux

  3. Comando JQ en Linux con ejemplos

  4. Ejemplos prácticos del comando rsync en Linux

  5. Ejemplos prácticos del comando Descomprimir en Linux

12 ejemplos prácticos de In Command en Linux

Comando de espera en Linux explicado con ejemplos prácticos

15 ejemplos prácticos del comando Rsync en Linux

Tutorial de comando de búsqueda de Linux (con ejemplos)

Comando lsof en Linux con ejemplos

Comando Linux comm con ejemplos