Rsync para Linux: sincroniza, copia y realiza copias de seguridad de archivos
9 min de lectura - 24 de mayo de 2025

Cómo utilizar rsync en Linux para transferencias incrementales, sincronizaciones remotas a través de SSH, copias de seguridad programadas con cron y cómo evitar la trampa de la barra diagonal.
Rsync para Linux: cómo sincronizar, copiar y hacer copias de seguridad de archivos como un profesional
Rsync es la herramienta estándar para copiar archivos entre sistemas Linux. Es más rápido que cp o scp para cualquier cosa que se ejecute más de una vez, se recupera de las caídas de red y solo transfiere lo que realmente ha cambiado. Esta entrada explica qué hace rsync, las opciones que conviene conocer, los ejemplos a los que recurrirás con más frecuencia y cómo programarlo con cron.
¿Qué es rsync?
Rsync es una utilidad de línea de comandos para copiar y sincronizar archivos entre ubicaciones. Funciona de forma local, a través de SSH con un host remoto o con un demonio rsync. La diferencia clave con respecto a cp o scp: rsync compara primero el origen y el destino, y luego transfiere solo las diferencias. En un directorio de 100 GB en el que han cambiado 200 MB, rsync mueve 200 MB. cp y scp mueve todo.
Se incluye en todas las distribuciones modernas de Linux. Si no está: apt install rsync o dnf install rsync.
¿Por qué usar rsync en lugar de cp o scp?
Tres razones por las que rsync es mejor para cualquier copia que no sea trivial:
- Es incremental. Las ejecuciones posteriores transfieren solo los bytes modificados, no los archivos completos. Para copias de seguridad y réplicas, esto convierte un trabajo que duraba toda la noche en unos pocos minutos.
- Resiste las interrupciones. Con
--partial, un archivo de 50 GB a medio transferir se reanuda desde donde se detuvo, en lugar de empezar de nuevo. - Conserva los metadatos. El modo de archivo (
-a) conserva los permisos, la propiedad, los enlaces simbólicos y las marcas de tiempo. Es fundamental para los archivos del sistema, los árboles de código fuente y cualquier cosa en la que los atributos sean importantes.
Para copias puntuales de archivos pequeños, scp está bien. Para cualquier cosa que se repita, que consuma mucho ancho de banda o que puedas necesitar reanudar, utiliza rsync.
Opciones comunes de rsync
Las opciones que realmente utilizarás:
| Opción | Qué hace |
|---|---|
-a | Modo de archivo. Conserva los permisos, la propiedad, los enlaces simbólicos y las marcas de tiempo. Equivalente a -rlptgoD. |
-v | Verbose. Muestra una lista de los archivos que se están transfiriendo. |
-z | Comprimir en tránsito. Útil en conexiones lentas o costosas, menos útil en LAN o para contenido ya comprimido. |
-P | Combina --partial y --progress. Reanuda transferencias interrumpidas, muestra el progreso en tiempo real. |
--delete | Elimina los archivos del destino que no existen en el origen. Requerido para un espejo verdadero. |
--exclude | Omite los archivos que coincidan con un patrón. |
--exclude-from=FILE | Lee los patrones de exclusión de un archivo. Más limpio que encadenar muchas --exclude opciones. |
--dry-run | Mostrar lo que pasaría sin transferir nada. |
--bwlimit=KBPS | Limitar el uso de ancho de banda en kilobytes por segundo. Útil para copias de seguridad que se ejecutan durante el horario laboral. |
--checksum | Comparar archivos por suma de comprobación en lugar de por tamaño y fecha de modificación. Es más lento, pero detecta casos extremos. |
-e ssh | Utiliza SSH para la transferencia. Implícito en la mayoría de las instalaciones modernas. |
El comportamiento predeterminado compara el tamaño del archivo y la fecha de modificación, lo cual es rápido y casi siempre correcto. Cambia a --checksum si un proceso de implementación reescribe las marcas de tiempo sin cambiar el contenido, o si sospechas de corrupción a nivel de bits.
Ejemplos de rsync
Copiar un directorio localmente:
rsync -av /source/path/ /destination/path/Sincronizar con un servidor remoto a través de SSH:
rsync -avz /local/dir/ user@remote:/remote/dir/Simulación antes de realizar cualquier acción destructiva:
rsync -avz --dry-run /local/dir/ user@remote:/dir/Duplicar dos directorios, incluyendo las eliminaciones en el destino:
rsync -av --delete /source/ /destination/Excluir los registros y un directorio temporal:
rsync -av --exclude='*.log' --exclude='tmp/' /src/ /dest/Reanudar una transferencia grande que podría interrumpirse:
rsync -avP user@remote:/backups/big.img /local/Si se cae la sesión SSH, vuelve a ejecutar el mismo comando. Con -P, rsync retoma la transferencia donde se detuvo en lugar de empezar desde cero.
Limita el ancho de banda a 50 MB/s para una copia de seguridad fuera de las horas punta, de modo que no sature el enlace ascendente:
rsync -avz --bwlimit=50000 /local/dir/ user@remote:/dir/La trampa de la barra al final
El error más común con rsync:
rsync -av /source /destination/ # copies the 'source' directory INTO /destination
rsync -av /source/ /destination/ # copies the CONTENTS of /source into /destinationUna barra al final en el origen significa «todo lo que hay dentro de este directorio». Si no hay barra al final, significa «este directorio en sí». Ejecútalo con --dry-run primero si no estás seguro, especialmente cuando se combina con --delete.
Automatización de rsync con cron
Para las copias de seguridad programadas, necesitas tres cosas:
Acceso SSH sin contraseña al destino. Las tareas de cron no pueden introducir contraseñas. Genera una clave y cópiala al host de copia de seguridad:
ssh-keygen -t ed25519 ssh-copy-id user@backup-hostUn script, no una línea de comando en crontab. Más fácil de probar, más fácil de registrar:
#!/bin/bash LOG=/var/log/rsync-backup.log rsync -az --delete /etc/ user@backup:/backups/$(hostname)/etc/ >> "$LOG" 2>&1Hazlo ejecutable con
chmod +x.Una entrada de cron para ejecutarlo. Edítalo con
crontab -e:0 2 * * * /usr/local/bin/rsync-backup.shEso ejecuta el script todas las noches a las 02:00.
Dos mejoras que vale la pena hacer en producción: envuelve el script en flock para que un trabajo de larga duración no se solape con la ejecución de la noche siguiente, y canaliza la salida a través de logger para que los fallos queden registrados en el diario del sistema, donde el sistema de monitorización pueda detectarlos.
Reflexiones finales
Rsync es una de las pocas herramientas de Linux en las que el tiempo dedicado a aprender los parámetros se amortiza casi de inmediato. Los puntos principales:
- Las transferencias incrementales y la compatibilidad con la reanudación hacen de rsync la elección adecuada para cualquier tarea que se ejecute más de una vez
-apara el modo de archivo,-zpara la compresión,-Ppara la reanudación y el progreso,--deletepara réplicas verdaderas- Presta atención a la barra al final de la ruta de origen, especialmente con
--delete - Combínalo con cron y claves SSH para realizar copias de seguridad programadas sin intervención
Para trabajos de copia de seguridad de gran volumen que transfieren datos entre instalaciones, ejecutar rsync en un VPS con ancho de banda ilimitado significa que las ventanas de copia de seguridad no se ven limitadas por restricciones de transferencia.
Por qué es importante tener un VPS potente y sin contador
Un VPS sin contador proporciona un ancho de banda fijo a una velocidad de puerto fija. En qué se diferencia de los planes con contador, cuándo compensa y qué hay que comprobar antes de comprarlo.
7 min de lectura - 9 de mayo de 2025
Gestión de memoria en Linux: Swap, OOM Killer y Cgroups
12 min de lectura - 31 de mayo de 2026