Si alguna vez has perdido archivos por no tener una copia de seguridad, o has tenido que transferir carpetas enormes a un servidor remoto con una conexión lenta, sabes lo valioso que es tener una herramienta fiable. En Linux existe una que lleva décadas siendo el estándar de oro para copias de seguridad y sincronización de archivos: rsync.
En esta guía práctica vas a aprender qué es rsync, cómo funciona y cómo usarlo para proteger tus datos, sincronizar carpetas entre equipos y automatizar copias de seguridad sin complicarte la vida.
¿Qué es rsync y por qué deberías usarlo?
rsync (remote sync) es una herramienta de línea de comandos que sincroniza archivos y directorios entre dos ubicaciones. Puede ser local (de una carpeta a otra en el mismo disco) o remota (entre tu máquina y un servidor).
Su gran ventaja frente a herramientas como cp o scp es que solo transfiere las diferencias. Si ya copiaste una carpeta de 10 GB y solo cambiaste un archivo, rsync detecta qué cambió y solo envía ese archivo. La primera vez puede tardar lo mismo que una copia completa, pero las siguientes son prácticamente instantáneas.
Además, rsync comprime los datos durante la transferencia, lo que acelera las copias por red, y verifica la integridad de los archivos usando sumas de comprobación.
Instalación
rsync viene preinstalado en la mayoría de distribuciones Linux. Si no lo tienes, se instala fácilmente:
# Debian / Ubuntu / derivadas
sudo apt install rsync
# Fedora / RHEL / CentOS
sudo dnf install rsync
# Arch Linux
sudo pacman -S rsync
# macOS (ya viene instalado)
brew install rsync
En Windows puedes usar rsync a través de WSL (Windows Subsystem for Linux), que es la forma más limpia de tenerlo funcionando.
Sintaxis básica
La estructura general de un comando rsync es:
rsync [opciones] origen/ destino/
El detalle importante es la barra inclinada al final del origen. Cambia el comportamiento:
rsync -a carpeta/ destino/→ copia el contenido de la carpetarsync -a carpeta destino/→ copia la carpeta en sí dentro del destino
Para transferencias remotas, usas usuario@servidor:ruta:
rsync -a /home/usuario/documentos/ usuario@servidor:/backups/documentos/
Las opciones que más vas a usar
rsync tiene decenas de opciones, pero con estas cinco cubres el 90% de los casos de uso:
| Opción | Significado | Qué hace |
|---|---|---|
-a |
archive | Modo archivo: preserva permisos, propietario, timestamps, y copia recursivamente |
-v |
verbose | Muestra qué archivos se están transfiriendo |
-z |
compress | Comprime los datos durante la transferencia (ideal para redes lentas) |
-h |
human-readable | Muestra tamaños en formato legible (MB, GB) |
--progress |
— | Muestra el progreso de la transferencia archivo por archivo |
La combinación más común es:
rsync -avzh --progress origen/ destino/
Ejemplos prácticos
1. Copia de seguridad local
Hacer una copia de seguridad de tu carpeta de Documentos a un disco externo montado en /mnt/backup:
rsync -avh --delete ~/Documentos/ /mnt/backup/Documentos/
La opción --delete es importante: elimina del destino los archivos que ya no existen en el origen. Así el backup es un espejo exacto. Úsala con cuidado.
2. Sincronizar con un servidor remoto
Subir los archivos de tu proyecto a un servidor de producción:
rsync -avz --progress ./mi-proyecto/ [email protected]:~/www/mi-proyecto/
3. Excluir archivos
No quieres copiar la carpeta node_modules ni los archivos .git:
rsync -avh --exclude="node_modules" --exclude=".git" ~/proyecto/ /mnt/backup/proyecto/
Puedes usar un archivo de exclusión:
rsync -avh --exclude-from=excluir.txt ~/proyecto/ /mnt/backup/proyecto/
4. Copia de seguridad por SSH con puerto personalizado
Si tu servidor SSH no usa el puerto 22:
rsync -avz -e "ssh -p 2222" ~/datos/ [email protected]:~/backups/
5. Simular antes de ejecutar (modo dry-run)
Siempre que tengas dudas, usa --dry-run para ver qué haría rsync sin ejecutarlo realmente:
rsync -avh --dry-run ~/Documentos/ /mnt/backup/
Esto te muestra qué archivos se copiarían. Si todo está bien, quitas --dry-run y lo ejecutas de verdad.
Automatizar copias de seguridad con cron
La verdadera potencia de rsync se despliega cuando lo combinas con cron para hacer copias automáticas.
Copia diaria a las 2 de la madrugada
Abre el crontab de tu usuario:
crontab -e
Y añade esta línea:
0 2 * * * rsync -avh --delete ~/Documentos/ /mnt/backup/Documentos/ > ~/logs/backup.log 2>&1
Copia semanal los domingos
0 3 * * 0 rsync -avz --delete ~/proyectos/ [email protected]:~/backups/proyectos/
Script de backup con rsync + fecha
Para tener backups con marca de tiempo, puedes crear un pequeño script:
#!/bin/bash
FECHA=$(date +%Y-%m-%d_%H-%M-%S)
rsync -avh ~/Documentos/ /mnt/backup/Documentos_$FECHA/
Guárdalo como backup.sh, dale permisos de ejecución (chmod +x backup.sh) y prográmalo con cron.
Errores comunes y cómo evitarlos
Error: la barra inclinada
El error más frecuente con rsync es confundir carpeta/ con carpeta:
# Copia el contenido de 'fotos/' dentro de 'backup/'
rsync -avh fotos/ backup/
# Copia la carpeta 'fotos' dentro de 'backup/' → backup/fotos/
rsync -avh fotos backup/
Error: olvidar --delete
Si no usas --delete, los archivos que borres del origen se quedarán en el destino para siempre. El backup crecerá sin control. Añádelo siempre que quieras un espejo exacto.
Error: permisos SSH
Al usar rsync remoto, asegúrate de haber configurado las claves SSH:
ssh-keygen -t ed25519
ssh-copy-id [email protected]
Sin claves SSH, rsync te pedirá la contraseña cada vez, lo que hace imposible automatizarlo con cron.
Error: rutas con espacios
Si tu ruta tiene espacios (ej: /mnt/backup/Mis archivos/), escápala con comillas:
rsync -avh ~/Documentos/ "/mnt/backup/Mis archivos/"
Alternativas a rsync
Aunque rsync es el rey indiscutible de la sincronización, existen alternativas según el caso:
| Herramienta | Cuándo usarla |
|---|---|
scp |
Transferencias simples de un solo archivo |
rclone |
Sincronizar con la nube (Google Drive, Dropbox, S3) |
syncthing |
Sincronización continua entre dispositivos propios |
duplicati |
Backups cifrados con interfaz gráfica |
borgbackup |
Backups con deduplicación y compresión avanzada |
Si trabajas con servicios en la nube como Google Drive o Amazon S3, rclone es la mejor opción. Si necesitas sincronización en tiempo real entre varios dispositivos, Syncthing hace eso de forma automática y segura.
Conclusión
rsync es una de esas herramientas que, una vez que aprendes a usarla, no entiendes cómo vivías sin ella. Es rápida, fiable, ligera y está disponible en prácticamente cualquier sistema Unix o Linux.
Con solo unos pocos comandos puedes tener un sistema de copias de seguridad automatizado, sincronizar proyectos entre equipos y dormir tranquilo sabiendo que tus datos están a salvo.
Mi recomendación: empieza con el modo --dry-run para familiarizarte, añade --delete cuando tengas claro lo que hace, y cuando te sientas cómodo, programa una tarea cron y olvídate. Tus archivos se lo agradecerán.