Aloje su propio agente de IA con OpenClaw: instalación gratuita en un solo clic!

Comando rsync en Linux: Opciones, Ejemplos, SSH

Comando rsync en Linux: Opciones, Ejemplos, SSH

Copiar archivos con cp o scp está bien hasta que tienes que trabajar con directorios de miles de archivos, conexiones lentas o copias de seguridad incrementales. rsync soluciona todo eso en un solo comando.

¿Qué es rsync y cómo funciona?

rsync es una herramienta de sincronización y transferencia de archivos para Linux. A diferencia de cp, que copia todo cada vez, rsync analiza el origen y el destino y transfiere solo lo que ha cambiado. Esto lo hace mucho más rápido en transferencias repetidas.

El Algoritmo de Transferencia Delta

rsync divide los archivos en bloques de tamaño fijo y calcula sumas de verificación para cada uno. Compara las sumas de verificación entre el origen y el destino y luego transfiere solo los bloques que difieren. En un archivo de 1GB donde cambiaste 10KB, rsync transfiere aproximadamente 10KB. scp transfiere 1GB. La diferencia importa en enlaces lentos o conjuntos de copias de seguridad grandes.

Instalando rsync

En Debian/Ubuntu:

sudo apt install rsync

En RHEL/CentOS:

sudo yum install rsync

Verifica tu versión:

rsync --version

Sintaxis de rsync y Opciones Clave

Sintaxis básica:

rsync [OPTIONS] SOURCE DESTINATION

Explicación de las Opciones Principales

Las opciones que usarás en cada comando rsync:

  • -a (–archive): Modo de archivo. Copia directorios de forma recursiva y preserva permisos, marcas de tiempo, enlaces simbólicos y archivos de dispositivo. Usa esto casi siempre.
  • -v (–verbose): Muestra cada archivo que se está transfiriendo. Agrega -vv para aún más detalle.
  • -z (–compress): Comprime datos durante la transferencia. Ahorra ancho de banda en conexiones lentas, añade carga de CPU en las rápidas.
  • -P: Combina –progress y –partial. Muestra el progreso de la transferencia y mantiene archivos parciales si se interrumpe.
  • –delete: Elimina archivos en el destino que ya no existen en la fuente. Mantiene el destino como un espejo exacto.

Usando -n para Pruebas en Seco

La opción de prueba en seco de rsync (-n o –dry-run) simula la transferencia sin mover nada:

rsync -avn source/ destination/

Siempre ejecuta una prueba en seco primero al usar –delete. Muestra exactamente qué archivos se eliminarían antes de que lo ejecutes de forma definitiva.

Monitorear el Progreso con –progress

Para transferencias grandes, –progress muestra la velocidad de transferencia por archivo y la finalización estimada:

rsync -av --progress source/ destination/

La salida de progreso de rsync muestra los bytes transferidos, la velocidad de transferencia y el tiempo estimado restante.

Cómo Usar rsync: Ejemplos Prácticos

Sincronizar Archivos Localmente

Copia un directorio local a otra ubicación:

rsync -av /home/user/documents/ /backup/documents/

Fíjate en la barra final en el origen. Con un slash final, rsync copia el contenido del directorio. Sin él, rsync copia el propio directorio en el destino.

Copiar Archivos a un Servidor Remoto a través de SSH

rsync sobre SSH utiliza la misma sintaxis que scp pero con la eficiencia de rsync:

rsync -avz -e ssh /local/path/ user@remote-server:/remote/path/

La opción -e ssh le indica a rsync que use SSH para la capa de transporte. Agrega un puerto personalizado si es necesario:

rsync -avz -e "ssh -p 2222" /local/path/ user@remote:/remote/path/

Sincroniza desde el Servidor Remoto a Local

Extrae archivos de un servidor remoto:

rsync -avz user@remote-server:/remote/path/ /local/destination/

La misma sintaxis, solo que fuente y destino están invertidos.

Copia de Seguridad de un Directorio con rsync

Un comando completo de rsync para hacer una copia de seguridad que refleje un directorio de origen y elimine los archivos borrados:

rsync -av --delete /source/directory/ /backup/directory/

Ejecuta esto en un cron para realizar copias de seguridad incrementales automáticas.

Filtrado: Patrones de Exclusión e Inclusión

Excluyendo Archivos y Directorios

La opción de exclusión de rsync mantiene ciertos archivos o directorios fuera de la transferencia:

rsync -av --exclude='*.log' source/ destination/

Excluye múltiples patrones:

rsync -av --exclude='*.log' --exclude='tmp/' source/ destination/

Para reglas de filtro complejas, usa un archivo:

rsync -av --exclude-from='exclude-list.txt' source/ destination/

Usando –delete para Espejar Directorios

La opción –delete de rsync elimina del destino los archivos que ya no existen en el origen:

rsync -av --delete source/ destination/

Esto convierte rsync en una herramienta de espejado real. Ten cuidado: los archivos eliminados en el origen también se eliminarán en el destino. Siempre ejecuta una prueba en seco primero.

Automatizar rsync con Cron

Ejecuta una copia de seguridad nocturna a las 2 AM:

0 2 * * * rsync -az --delete /data/ /backup/data/ >> /var/log/rsync-backup.log 2>&1

Redirige tanto stdout como stderr a un archivo de registro para poder comprobar si la copia de seguridad se ejecutó correctamente.

FAQ: Comando rsync

¿Qué hace rsync -avz?

Ejecuta rsync en modo archivo (-a, que preserva permisos y recorre directorios), modo detallado (-v, muestra los archivos que se transfieren) y modo comprimido (-z, comprime los datos en tránsito). Es el punto de partida estándar para la mayoría de los comandos rsync.

¿Cómo sincronizo archivos a través de SSH con rsync?

Usa: rsync -avz -e ssh /ruta/local/ usuario@servidor:/ruta/remota/ La opción -e ssh dirige la transferencia a través de una conexión SSH. Para puertos no estándar: rsync -avz -e «ssh -p 2222» source/ user@host:/dest/

¿Cómo hago una simulación con rsync?

Agrega la opción -n: rsync -avn fuente/ destino/ Esto muestra todo lo que rsync haría sin transferir ni eliminar nada. Esencial antes de usar –delete.

¿Cómo excluyo archivos de rsync?

Usa –exclude=’patrón’: rsync -av –exclude=’*.tmp’ fuente/ destino/ Para múltiples exclusiones, agrega múltiples banderas –exclude o usa –exclude-from con un archivo que contenga un patrón por línea.

Scroll al inicio