Si administras servidores Linux o simplemente no quieres jugarte tus datos, tarde o temprano necesitas un sistema de copias de seguridad que funcione solo y no dependa de que te acuerdes de lanzarlo a mano. En este contexto, rsync más cron es una combinación brutalmente eficaz: flexible, rápida, segura y disponible prácticamente en cualquier distro.
En esta guÃa vamos a ver cómo montar un sistema de backups automatizados con rsync en Linux paso a paso: desde qué es rsync y cómo funciona, pasando por ejemplos prácticos (locales y remotos), hasta la creación de scripts, su programación con cron, buenas prácticas, errores tÃpicos y escenarios avanzados como copias incrementales con --link-dest o uso del servicio rsyncd.
¿Qué aprenderás en esta guÃa?
- Conceptos clave de rsync, sus ventajas frente a otros comandos y sus opciones más útiles.
- Cómo hacer copias de seguridad manuales y automatizadas con rsync y cron, tanto en local como a través de SSH.
- Distintos tipos de backup (completo, diferencial, incremental) aplicados a rsync con ejemplos claros.
- Buenas prácticas, checklist y errores frecuentes al usar rsync para que no pierdas datos por un despiste.
¿Qué es rsync y por qué es tan usado para backups?
El comando rsync es una herramienta de lÃnea de comandos pensada para sincronizar archivos y directorios entre dos ubicaciones, ya sea dentro del mismo equipo o entre máquinas distintas a través de la red. A diferencia de un simple cp o de scp, rsync no copia todo otra vez: detecta qué ha cambiado y transfiere solo las diferencias.
Ese comportamiento incremental se consigue gracias a un algoritmo que compara origen y destino y decide qué bloques de datos hace falta enviar. Esto se traduce en un ahorro brutal de tiempo y ancho de banda, sobre todo cuando trabajas con árboles de directorios grandes donde solo cambian unos cuantos ficheros cada dÃa.
CaracterÃsticas principales de rsync
Rsync destaca por una serie de funciones que lo hacen ideal para copias de seguridad y sincronización de sistemas completos. Entre las más útiles están las siguientes:
- Sincronización diferencial e incremental: solo se transfieren los bloques modificados de cada archivo, lo que permite hacer backups frecuentes sin saturar la red.
- Operación local o remota: puedes usar rsync entre directorios del mismo equipo, o entre servidores a través de SSH o del demonio propio de rsync (
rsyncd). - Compresión en tránsito: con la opción
-z, los datos se envÃan comprimidos, algo muy útil si el enlace es lento. - Conservación de metadatos: mantiene permisos, propietarios, grupos, marcas de tiempo, enlaces simbólicos y archivos especiales, algo crÃtico en entornos de servidor.
- Modo de ejecución en seco: con
--dry-runpuedes ver exactamente qué harÃa rsync sin tocar nada, perfecto para evitar desastres. - Reanudación y robustez: si una transferencia se corta, rsync reanuda sin volver a empezar desde cero, y salta los archivos ya sincronizados.
- Soporte de exclusiones y filtros: permite excluir archivos por patrones, tamaños, rutas concretas, etc.
- Integración con SSH: usando
-e ssho especificando un destino remoto, tienes cifrado y autenticación seguros sin inventar nada raro.
Sintaxis básica y opciones más usadas
La forma general del comando es bastante directa: primero las opciones, luego origen y por último destino. A partir de esa base se construye casi todo.
La estructura tÃpica es:
rsync origen destino
Para copias remotas, la sintaxis más habitual es:
rsync /ruta/local usuario@servidor:/ruta/remota
Algunas opciones que conviene memorizar porque las usarás una y otra vez son especialmente importantes para cualquier administrador:
-a: modo «archivo». Agrupa varias opciones (-r,-l,-p,-t,-g,-o,-D) para preservar recursividad, permisos, propietarios, grupos, tiempos y archivos especiales.-v: salida «verbose». Muestra qué está pasando durante la transferencia.-z: activa la compresión de datos en la transmisión para reducir el ancho de banda consumido.--delete: hace que el destino se convierta en una réplica exacta del origen, borrando del destino lo que ya no exista en el origen.--exclude: permite omitir archivos o directorios concretos usando patrones (--exclude='*.log', por ejemplo).--dry-run: simula la ejecución. No copia ni borra nada, solo enseña qué acciones harÃa.--progress: muestra el progreso de los archivos grandes en tiempo real, algo muy cómodo para supervisar.-e ssh: fuerza a usar SSH como transporte cuando no se infiere automáticamente.--log-file: guarda la salida detallada en un log, útil para auditorÃa y diagnóstico, sobre todo si llamas a rsync desde cron.
Instalación y comprobación de rsync en Linux
En la mayorÃa de distribuciones modernas, rsync viene instalado por defecto, pero conviene verificarlo antes de ponerte a montar tu sistema de copias. Comprobar la versión es tan simple como lanzar un comando desde la terminal con permisos de usuario normal:
rsync --version
Si el sistema responde con un número de versión, ya lo tienes listo. Cuando no esté instalado, la forma de añadirlo cambia ligeramente según la distro, aunque el proceso es muy sencillo:
- En Debian, Ubuntu y derivadas puedes usar APT para instalar el paquete:
sudo apt install rsync. - En Red Hat, CentOS, Rocky Linux o AlmaLinux lo habitual es tirar de DNF:
sudo dnf install rsync.
En algunas guÃas más avanzadas se muestra también cómo habilitar el servicio rsyncd con systemd, copiando y ajustando la unidad /lib/systemd/system/rsync.service a /etc/systemd/system/rsync.service y reiniciando el servicio; esto se utiliza cuando quieres que otros equipos se conecten a tu servidor de backups usando el demonio de rsync en lugar de SSH.
Copias de seguridad locales con rsync
El caso más básico consiste en crear un backup de un directorio a otro dentro de la misma máquina. Es una forma sencilla y rápida de empezar a trabajar con rsync sin complicarse con claves SSH ni firewalls.
Imagina que quieres proteger tus documentos de usuario copiando /home/usuario/Documentos a un disco montado en /mnt/backup. El comando serÃa tan directo como este:
rsync -av /home/usuario/Documentos/ /mnt/backup/Documentos/
En este ejemplo, rsync recorre todo el contenido de Documentos y lo replica en la unidad de backup, manteniendo permisos, estructura de directorios y marcas de tiempo. La próxima vez que lo ejecutes, solo transferirá los cambios, lo que convierte esta aproximación en un «semi-incremental» muy económico.

Tipos de copias de seguridad con rsync
Con rsync puedes implementar las tres estrategias de backup clásicas sin necesidad de herramientas externas demasiado complejas. Cada enfoque tiene su utilidad y conviene entender bien qué hace cada uno antes de integrarlo en tu polÃtica de copias.
Copia completa
Una copia completa implica replicar todos los archivos del origen al destino, incluyendo subdirectorios. Para ello basta con usar el modo archivo:
rsync -a /ruta/al/directorio/fuente/ /ruta/al/directorio/destino/
Con esta variante obtienes un espejo completo del directorio de origen. Es ideal como primera copia de seguridad o cuando quieres un snapshot autónomo que no dependa de copias anteriores.
Copia diferencial
Cuando hablamos de copia diferencial con rsync, normalmente nos referimos a mantener una copia que refleje el estado actual del origen, incluyendo eliminaciones, sin tener que transferirlo todo cada vez.
Para eso se combina la opción archivo con --delete:
rsync -a --delete /ruta/al/directorio/fuente/ /ruta/al/directorio/destino/
Con esta configuración rsync copiará solo los archivos nuevos o modificados y borrará en el destino aquello que ya no existe en el origen. Es muy potente para mantener un espejo, pero hay que usarla con cabeza porque puedes perder archivos si te equivocas en las rutas.
Copia incremental con enlaces duros
Para obtener un sistema de copias incrementales «de verdad», donde cada dÃa tengas un directorio distinto que parezca una copia completa pero sin duplicar archivos, se utiliza la opción --link-dest. Esta técnica se apoya en enlaces duros hacia una copia anterior.
La llamada tÃpica serÃa algo asÃ:
rsync -a --link-dest=/ruta/a/la/copiaprevia /ruta/al/directorio/fuente/ /ruta/al/directorio/destino_nuevo/
En este escenario, los archivos que no han cambiado se vinculan desde la copia previa en lugar de volver a copiarse, de forma que ahorras espacio en disco y sigues teniendo copias «completas» por fecha. Es una solución muy usada en servidores para mantener históricos de varios dÃas o semanas.
Backups remotos con rsync y SSH
Hacer copias en el mismo equipo está bien, pero si el disco muere, de poco te sirve. Lo más sensato es que las copias vivan en otra máquina o incluso en otro CPD. Aquà es donde rsync luce de verdad combinándose con SSH.
Supón que guardas tus datos crÃticos en /var/backups y quieres enviarlos a un servidor de respaldo con IP 192.168.1.50 y usuario backup. Un comando tÃpico serÃa:
rsync -avz /var/backups/ backup@192.168.1.50:/mnt/servidor_backups/
En esta invocación rsync establece una sesión SSH con el servidor remoto y transfiere la información comprimida (si prefieres otras opciones de transporte seguro como SFTP, consulta transferencias FTP/SFTP seguras con FileZilla). La combinación de -a y -z te garantiza copias fieles con un uso de red razonable.
Si lo que quieres es traer archivos desde el servidor remoto al equipo local, simplemente inviertes el orden de las rutas:
rsync -avz backup@192.168.1.50:/mnt/servidor_backups/ /var/backups/
Configurar acceso sin contraseña con claves SSH
Para que rsync se pueda automatizar sin intervención humana, es imprescindible que la autenticación hacia el servidor remoto no pida contraseña. La manera estándar de conseguirlo es configurando claves SSH.
En lÃneas generales, el proceso es este:
- En la máquina origen, generas un par de claves (si no lo tienes ya):
ssh-keygen -t ed25519 - Copias la clave pública al servidor de backups:
ssh-copy-id backup@192.168.1.50 - Compruebas que puedes entrar sin contraseña:
ssh backup@192.168.1.50
A partir de ese momento, rsync podrá usar SSH con autenticación por clave pública y ejecutarse desde cron sin bloquearse esperando que escribas nada por teclado.
Uso de rsync con el demonio rsyncd
Aunque la inmensa mayorÃa de escenarios se resuelven perfectamente con SSH, rsync también dispone de un modo demonio, que escucha en un puerto propio y ofrece «módulos» configurados en un archivo de configuración dedicado.
En un servidor tÃpico, el fichero /etc/rsyncd.conf podrÃa tener una estructura parecida a esta:
pid file = /var/run/rsyncd.pid
uid = backup-user
gid = backup-user
read only = yes
path = /path/to/backup
list = yes
auth users = backup-user
secrets file = /etc/rsyncd.passwd
Además, se define un archivo de contraseñas en /etc/rsyncd.passwd con contenido del estilo:
backup-user:tu-pass
y se protegen los permisos con:
chmod 0600 /etc/rsyncd.passwd
Con esa configuración, desde la máquina que realiza el backup podrÃas lanzar un comando del tipo:
rsync -a --password-file=/etc/rsyncd.passwd backup-user@ip-servidor::data /ruta/destino/$(date +%Y-%m-%d)/
Esta técnica es especialmente útil cuando quieres centralizar copias desde muchos equipos hacia un servidor dedicado de backups sin exponer SSH o cuando necesitas un control muy fino sobre lo que se puede leer o modificar.
Programar backups automáticos con cron
Una vez que tienes claro el comando rsync que quieres usar, el siguiente paso es automatizarlo para que se ejecute de forma periódica sin que tengas que preocuparte. Cron es el sistema estándar en Linux para este tipo de tareas.
Para editar las tareas de cron del usuario actual se usa:
crontab -e
Dentro del archivo, cada lÃnea define un trabajo con un formato de tiempo concreto y el comando a ejecutar. Por ejemplo, para lanzar un rsync todos los dÃas a las 2 de la madrugada podrÃas incluir:
0 2 * * * rsync -avz /var/backups/ backup@192.168.1.50:/mnt/servidor_backups/
Los campos significan minuto, hora, dÃa del mes, mes y dÃa de la semana, en ese orden. En este caso, el comando se hará a las 02:00 de cada dÃa. Es importante que el comando que pones en cron funcione bien si lo ejecutas primero a mano, y que la autenticación por clave SSH esté ya resuelta.
En otros escenarios, en lugar de llamar a rsync directamente desde cron, se prefiere encapsular la lógica en un script, por ejemplo /usr/local/sbin/rsync_dirs, hacerlo ejecutable con chmod +x y llamar al script desde cron:
00 23 * * * /usr/local/sbin/rsync_dirs
Este enfoque te permite sincronizar varios directorios, registrar logs y manejar errores de manera más ordenada dentro del propio script.
Excluir archivos, limitar tamaños y otras opciones útiles
En muchos casos no tiene sentido volcar absolutamente todo; a menudo querrás ignorar ficheros temporales, logs rotativos o caches que solo ocupan espacio y ralentizan las copias.
Para excluir archivos o carpetas por nombre o patrón se usa la opción --exclude. Un ejemplo muy tÃpico serÃa:
rsync -av --exclude='*.tmp' /proyecto/ /backup/proyecto/
Si lo que buscas es filtrar por tamaño, rsync dispone de --max-size y --min-size, con los que puedes indicar que solo se copien archivos por encima o por debajo de cierto umbral, por ejemplo:
rsync -av --min-size=10M --max-size=100M /origen/ /destino/
También existe la posibilidad de realizar conversiones de codificación de caracteres durante la copia con la opción --iconv, útil cuando sincronizas entre sistemas con configuraciones distintas (como un Mac con UTF8-MAC y un Linux con UTF-8 estándar) y no quieres liarla con acentos o caracteres especiales.
Buenas prácticas al usar rsync para copias de seguridad
Rsync es un bisturÃ: muy preciso, pero si lo usas mal puedes hacer un destrozo serio. Por eso conviene seguir algunas recomendaciones para evitar sorpresas desagradables cuando automatices tus copias.
- Antes de cualquier cambio gordo, usa siempre
--dry-runpara validar que las rutas y las opciones hacen lo que esperas. - Comprueba permisos y propietarios en origen y destino. Si faltan permisos de lectura o escritura, rsync fallará en silencio en ciertos ficheros si no revisas la salida.
- Cuando uses
--delete, asegúrate de que el destino es realmente un backup y no una carpeta con datos únicos; si te equivocas de ruta, los borrarás. - Registra la salida de tus trabajos con
--log-filey revisa periódicamente los logs para detectar errores recurrentes o ficheros que nunca se copian bien. - Siempre que puedas, dispón de varias copias en lugares distintos (disco local, servidor remoto, nube) y rota los backups antiguos.
- Para datos especialmente sensibles, añade cifrado adicional (por ejemplo con GPG) sobre los ficheros de backup, además del cifrado en tránsito que proporciona SSH.
Checklist rápida para configuración y mantenimiento
Para no perderte en los detalles, resulta muy práctico disponer de una pequeña lista de comprobación que te ayude a validar tu sistema de copias tanto al implantarlo como periódicamente.
- Usuario y permisos verificados en origen y destino, incluyendo acceso de lectura a todos los datos y escritura en la ubicación de la copia.
- Prueba manual reciente del comando rsync o del script de backup, revisando que no aparezcan errores en la salida.
- Espacio libre suficiente en el dispositivo o volumen de destino, con monitorización básica para anticipar llenados.
- Crontab comprobado y tareas activas, sin errores de sintaxis ni rutas relativas dudosas.
- Logs de rsync revisados de forma regular, buscando fallos de conexión, permisos denegados o rutas inaccesibles.
- Pruebas de restauración realizadas alguna vez, no solo ver que se copian los datos sino que puedes devolverlos a producción.
Errores habituales y cómo evitarlos
Por muy sencillo que parezca el comando, hay una serie de tropiezos tÃpicos que se repiten una y otra vez cuando la gente empieza a usar rsync para copias de seguridad automáticas.
Permisos denegados
Uno de los problemas más comunes es que el usuario que ejecuta rsync no puede leer o escribir en alguna de las rutas. Esto se manifiesta con mensajes de «Permission denied» o directamente con archivos que no terminan de copiarse.
La solución pasa por revisar propietarios y permisos con ls -l, ajustar si hace falta con chown y chmod, y, en caso necesario, invocar rsync con sudo cuando se trata de rutas del sistema que solo el administrador puede manejar.
Confusión entre rutas absolutas y relativas
Otro fallo tÃpico es liarse con rutas relativas frente a rutas absolutas y terminar copiando cosas donde no tocan. Una buena práctica es utilizar rutas absolutas (que empiezan por /) en los scripts y en cron, para evitar depender del directorio actual.
También es muy importante prestar atención a las barras finales en origen y destino: /origen y /origen/ no significan exactamente lo mismo para rsync, y eso puede marcar si el contenido va dentro o si se crea un directorio adicional en el destino.
Uso imprudente de –delete
La opción --delete es uno de los grandes atractivos de rsync, pero también una de sus mayores trampas. Mal combinada, puede borrar datos valiosos del destino que no tenÃas intención de tocar.
La recomendación es probar siempre con --dry-run antes de introducir --delete en un entorno de producción y, si es posible, empezar aplicándolo sobre copias de prueba para ver exactamente qué va a eliminar.
Elegir mal entre –ignore-existing y –update
Cuando trabajas con directorios que cambian tanto en origen como en destino, hay que decidir cómo debe comportarse rsync ante conflictos. Las opciones --ignore-existing y --update tienen matices importantes:
--ignore-existinghace que rsync nunca toque los archivos ya presentes en el destino, aunque el origen sea más nuevo.--updatesolo copia si el archivo de origen no existe en el destino o es más reciente que el que hay allÃ.
Elegir una u otra sin pensarlo puede provocar que no se actualicen archivos crÃticos o, al contrario, que se sobrescriban cambios que querÃas conservar.
Alternativas y herramientas complementarias
Aunque rsync cubre la mayorÃa de escenarios de copias y sincronización, hay situaciones concretas en las que otras herramientas pueden encajar mejor o complementar su funcionamiento.
- scp: el clásico para transferencias por SSH. Es más simple pero no hace sincronización inteligente ni copias incrementales, por lo que se queda corto para backups frecuentes.
- rclone: pensado para trabajar con almacenamiento en la nube (S3, Google Drive, Dropbox, etc.). Ofrece funcionalidades de sincronización al estilo rsync, pero adaptadas a estos servicios.
- Unison: orientado a sincronización bidireccional, útil cuando los cambios pueden producirse tanto en origen como en destino y quieres mantenerlos coherentes.
- rsnapshot o lsyncd: proyectos que se apoyan en rsync para ofrecer, respectivamente, gestión avanzada de snapshots e actualización casi en tiempo real de directorios.
Con todo esto en la mano, rsync se convierte en una especie de navaja suiza para tus copias de seguridad: te permite desde hacer un backup sencillo de tu carpeta de usuario hasta montar un sistema incremental con histórico diario en un servidor remoto, pasando por sincronización de servidores web, copias filtradas por tamaño o exclusión de temporales; si lo combinas con cron, claves SSH y buenas prácticas de verificación y restauración, tienes una solución sólida que te ahorrará tiempo, ancho de banda y más de un susto cuando algo falle. Comparte la guÃa y más usuarios sabrán automatizar sus copias de seguridad en Linux usando comandos RSTNC