Comando rsync en Linux

De vuelta de nuevo por Indaga…

El comando rsync (que significa remote synchronization o sincronización remota) es una herramienta poderosa y versátil para sincronizar archivos y directorios entre dos ubicaciones. rsync se puede usar para replicar datos, realizar copias de seguridad incrementales, copiar archivos entre sistemas y como reemplazo de los comandos scp, sftp y cp.

rsync emplea un algoritmo que reduce la cantidad de datos transferidos al copiar únicamente las partes de los archivos que han sido modificadas. También puede reanudar transferencias interrumpidas y ofrece opciones para excluir archivos, comprimir datos durante la transferencia y mucho más…

Veamos las opciones más comunes y algunos ejemplos de uso. Al final, dejo un pequeño script que estoy utilizando para hacer copias de seguridad recursivas de mi usuario a 2 discos duros externos, excluyendo la caché de Firefox y Edge. Pero ahora, veamos las opciones más comunes de rsync y algunos pequeños ejemplos:

Opciones Comunes

-a, –archive: Modo de archivo, que es equivalente a -rlptgoD. Esto le dice a rsync que sincronice directorios recursivamente, transfiera dispositivos especiales y de bloque, y preserve enlaces simbólicos, tiempos de modificación, grupos, propiedad y permisos
-z, –compress: Comprime los datos mientras se envían a la máquina de destino. Útil si la conexión es lenta
-P: Equivalente a –partial –progress. Muestra una barra de progreso durante la transferencia y mantiene los archivos parcialmente transferidos
–delete: Elimina archivos extraños de la ubicación de destino. Útil para espejar datos
-q, –quiet: Suprime mensajes que no sean de error
-e: Permite elegir un shell remoto diferente. Por defecto, rsync está configurado para usar ssh

Más Opciones

-r, –recursive: Sincroniza directorios de forma recursiva
-b, –backup: Realiza una copia de seguridad durante la sincronización
-h, –human-readable: Muestra los números en un formato legible para humanos
-n, –dry-run: Realiza una prueba sin hacer cambios reales. Útil para verificar qué se va a sincronizar
-v, –verbose: Muestra detalles de la transferencia
–exclude: Excluye archivos o directorios específicos de la sincronización
–include: Incluye archivos o directorios específicos en la sincronización
–max-size: Establece un tamaño máximo para los archivos a transferir
–min-size: Establece un tamaño mínimo para los archivos a transferir
–bwlimit: Limita el ancho de banda utilizado durante la transferencia
-u, –update: Omite los archivos que ya existen en el destino y son más nuevos que los archivos de origen. Esto es útil para evitar sobrescribir archivos más recientes en el destino

Ejemplos de Uso

1. Copiar un archivo de una ubicación local a otra:

rsync -a /opt/archivo.zip /tmp/

2. Sincronizar directorios con exclusión de un subdirectorio:

rsync -avz --exclude 'temp/' /origen/ /destino/

3. Sincronizar directorios y omitir archivos más nuevos en el destino:

rsync -avu /origen/ /destino/

Ejemplo de script en bash para realizar una copia de seguridad de la carpeta de tu usuario a 2 discos duros externos, excluyendo la caché de Edge y Firefox:

#!/bin/bash
echo "Se va a realizar una copia de seguridad de tu usuario a todas las unidades externas."
# Eliminar la caché de Microsoft Edge
# rm -rf ~/.config/microman rsyncqsoft-edge/Default/Cache/*
# Eliminar la caché de Firefox
# rm -rf ~/.cache/mozilla/firefox/*.default-release/cache2/*
# Ahora las copias de todo el usuario
rsync -avu --exclude='/home/tu_usuario/.cache/microsoft-edge/*' --exclude='/home/tu_usuario/.cache/mozilla/firefox/*' /home/tu_usuario /media/tu_usuario/DISCO_EXTERNO/BACKUP
rsync -av --exclude='/home/tu_usuario/.cache/microsoft-edge/*' --exclude='/home/tu_usuario/.cache/mozilla/firefox/*' /home/tu_usuario /media/tu_usuario/DISCO_EXTERNO2/BACKUP

+ recursos

rsync (Wikipedia): https://es.wikipedia.org/wiki/Rsync
rsync – Manual de uso: https://www.linuxtotal.com.mx/index.php?cont=rsync-manual-de-uso
Cómo usar Rsync para sincronizar directorios locales y remotos: https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories-es
rsync (SS64): https://ss64.com/bash/rsync.html