Sincronización de archivos con rsync, una de las herramientas más útiles para copiar, sincronizar y respaldar archivos en Linux. A primera vista parece un comando de copia más, parecido a cp o scp, pero su gran ventaja está en cómo trabaja: compara origen y destino, detecta qué cambió y transfiere solo lo necesario.
En esta guía vas a aprender todo sobre la sincronización de archivos con rsync desde lo esencial hasta usos prácticos para 2026, con ejemplos claros y explicaciones de los detalles que suelen causar errores, como la barra final (/), la opción –delete, los filtros –exclude e –include, los permisos, los backups y la seguridad.
👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis
👉 También te dejo por aquí una guía de comandos Linux por categorías
Qué es rsync y por qué usarlo
rsync es una herramienta de sincronización de archivos. Puede copiar datos:
- De una carpeta local a otra carpeta local.
- De tu equipo a un servidor remoto.
- De un servidor remoto a tu equipo.
- Entre dos rutas remotas, si lo configuras adecuadamente.
Su punto fuerte es que no copia todo cada vez. Si ya existe una versión previa en el destino, rsync calcula diferencias y transfiere solo los archivos nuevos o modificados. En archivos grandes, esto puede ahorrar mucho tiempo y ancho de banda.
También permite preservar permisos, propietarios, grupos, enlaces simbólicos, marcas de tiempo y estructura de directorios. Por eso se usa tanto en administración de sistemas, despliegues, copias de seguridad y sincronización diaria de datos.
Instalación de rsync en Linux
En muchas distribuciones rsync ya viene instalado. Puedes comprobarlo con:
rsync --versionSi no está disponible, instálalo con el gestor de paquetes de tu distribución.
En Debian, Ubuntu y derivadas:
sudo apt update
sudo apt install rsyncEn Fedora:
sudo dnf install rsyncEn Arch Linux:
sudo pacman -S rsyncEn openSUSE:
sudo zypper install rsyncPara la sincronización de archivos con rsync remota por SSH, asegúrate también de tener instalado y funcionando openssh-client en el equipo local y openssh-server en el equipo remoto si vas a conectarte a él.
Sintaxis básica de rsync
La forma general del comando es:
rsync [opciones] origen destinoEjemplo mínimo:
rsync archivo.txt /home/usuario/copias/Este comando copia archivo.txt dentro de /home/usuario/copias/.
Para copiar una carpeta, normalmente se usa:
rsync -av carpeta/ /home/usuario/copias/carpeta/Las opciones más habituales son:
- -a: modo archivo. Preserva permisos, marcas de tiempo, enlaces simbólicos y copia de forma recursiva.
- -v: salida detallada.
- -h: tamaños legibles para humanos.
- -z: compresión durante la transferencia, útil en conexiones lentas.
- -P: combina –partial y –progress; muestra progreso y permite reanudar archivos parcialmente transferidos.
- –delete: borra en destino lo que ya no existe en origen.
- –dry-run: simula la operación sin cambiar nada.
Un comando base muy usado es:
rsync -avh --progress origen/ destino/La barra final en rsync: el detalle más importante
Uno de los puntos más importantes de rsync es entender la diferencia entre usar o no usar una barra final en el origen.
Con barra final:
rsync -av documentos/ backup/documentos/Esto copia el contenido de documentos/ dentro de backup/documentos/.
Sin barra final:
rsync -av documentos backup/Esto copia la carpeta documentos completa dentro de backup/, creando o actualizando backup/documentos.
La diferencia parece pequeña, pero cambia el resultado:
- documentos/ significa «copia lo que hay dentro de esta carpeta».
- documentos significa «copia esta carpeta como elemento».
Cuando algo aparece duplicado, como backup/documentos/documentos, casi siempre el problema está en la barra final.
Sincronización local de archivos
Para sincronizar una carpeta local con otra:
rsync -avh /home/usuario/documentos/ /mnt/backup/documentos/Este comando copia el contenido de /home/usuario/documentos/ en /mnt/backup/documentos/.
Si lo ejecutas por segunda vez, rsync solo transferirá los cambios.
Para ver progreso:
rsync -avh --progress /home/usuario/documentos/ /mnt/backup/documentos/Para conservar transferencias parciales si se interrumpe:
rsync -avhP /home/usuario/documentos/ /mnt/backup/documentos/-P es muy práctico cuando copias archivos grandes, como imágenes de disco, vídeos, máquinas virtuales o backups comprimidos.
Sincronización remota por SSH
rsync se usa muchísimo con SSH porque permite sincronizar archivos entre máquinas de forma segura.
Para copiar una carpeta local a un servidor:
rsync -avhP /home/usuario/proyecto/ usuario@servidor:/var/www/proyecto/Para copiar desde un servidor hacia tu equipo:
rsync -avhP usuario@servidor:/var/www/proyecto/ /home/usuario/proyecto/Si el SSH usa un puerto distinto al 22:
rsync -avhP -e "ssh -p 2222" /home/usuario/proyecto/ usuario@servidor:/var/www/proyecto/Si quieres usar una clave específica:
rsync -avhP -e "ssh -i ~/.ssh/id_ed25519" /home/usuario/proyecto/ usuario@servidor:/var/www/proyecto/Para automatizaciones, lo normal es configurar autenticación por clave SSH y evitar contraseñas interactivas.
Usar –delete para reflejar exactamente el origen
Por defecto, rsync copia archivos nuevos o modificados, pero no borra en destino los archivos que ya no existen en origen.
Ejemplo:
rsync -avh origen/ destino/Si borras origen/archivo-antiguo.txt, ese archivo seguirá existiendo en destino/ después de sincronizar.
Para que el destino sea un espejo del origen, usa:
rsync -avh --delete origen/ destino/Esto borra del destino los archivos que no estén en el origen.
Usa –delete con cuidado. Antes de ejecutarlo en serio, simula:
rsync -avhn --delete origen/ destino/–delete es excelente para espejos exactos, despliegues controlados y copias donde el destino debe representar el estado actual del origen. No es ideal si el destino también contiene archivos únicos que quieres conservar.
Excluir archivos y carpetas
Puedes excluir archivos o directorios con –exclude.
Ejemplo para excluir cachés:
rsync -avh --exclude "cache/" origen/ destino/Excluir archivos temporales:
rsync -avh --exclude "*.tmp" origen/ destino/Excluir varias rutas:
rsync -avh \
--exclude "node_modules/" \
--exclude ".git/" \
--exclude "*.log" \
origen/ destino/También puedes guardar patrones en un archivo:
rsync -avh --exclude-from=".rsync-exclude" origen/ destino/Ejemplo de .rsync-exclude:
.git/
node_modules/
cache/
*.log
*.tmpEsto es muy útil para proyectos de desarrollo, sitios web, carpetas de usuario y backups donde no quieres copiar archivos generados.
Include y exclude: copiar solo ciertos archivos
–include y –exclude permiten crear filtros más específicos. El orden importa: rsync evalúa las reglas de arriba abajo.
Ejemplo: copiar solo archivos .jpg manteniendo estructura de carpetas:
rsync -avh \
--include "*/" \
--include "*.jpg" \
--exclude "*" \
fotos/ destino/La regla –include «*/» permite entrar en subdirectorios. Luego se incluyen los .jpg. Finalmente se excluye todo lo demás.
Ejemplo: copiar solo archivos Markdown:
rsync -avh \
--include "*/" \
--include "*.md" \
--exclude "*" \
notas/ backup-notas/Si no incluyes los directorios con –include «*/», rsync puede excluir carpetas antes de llegar a los archivos que sí querías copiar.
Ver progreso y estadísticas
Para ver el progreso por archivo:
rsync -avh --progress origen/ destino/Para ver progreso global en versiones modernas de rsync:
rsync -avh --info=progress2 origen/ destino/Para obtener estadísticas finales:
rsync -avh --stats origen/ destino/Puedes combinarlo:
rsync -avh --info=progress2 --stats origen/ destino/En copias grandes, –info=progress2 suele ser más cómodo que –progress porque muestra una idea global del avance total.
Backups con rsync
Un backup simple a un disco externo:
rsync -avh --delete /home/usuario/documentos/ /mnt/backup/documentos/Este comando mantiene el destino igual que el origen. Es simple, rápido y eficiente.
Pero si quieres conservar versiones antiguas de archivos modificados o borrados, puedes usar –backup y –backup-dir.
Ejemplo:
rsync -avh --delete \
--backup \
--backup-dir="/mnt/backup/versiones/$(date +%Y-%m-%d_%H-%M-%S)" \
/home/usuario/documentos/ \
/mnt/backup/documentos/Así, cuando rsync tenga que sobrescribir o borrar algo en el destino, guardará la versión anterior en una carpeta separada.
Para backups diarios, puedes usar una estructura como:
/mnt/backup/documentos/
/mnt/backup/versiones/2026-07-02_20-00-00/
/mnt/backup/versiones/2026-07-03_20-00-00/Otra técnica avanzada es usar –link-dest para crear backups incrementales con enlaces duros. Permite tener carpetas que parecen backups completos, pero ocupan espacio solo para los cambios.
Ejemplo conceptual:
rsync -avh --link-dest="/backups/ultimo" /home/usuario/documentos/ /backups/2026-07-02/–link-dest requiere planificar bien rutas y rotación, pero es una de las formas más eficientes de construir backups incrementales con rsync.
Preservar permisos, propietarios y atributos
La opción -a activa el modo archivo y suele ser suficiente para la mayoría de casos:
rsync -a origen/ destino/Preserva:
- Permisos.
- Tiempos de modificación.
- Enlaces simbólicos.
- Estructura recursiva.
- Grupos y propietarios cuando el usuario tiene permisos para hacerlo.
Si necesitas preservar ACLs:
rsync -aA origen/ destino/Si necesitas preservar atributos extendidos:
rsync -aX origen/ destino/Para ambos:
rsync -aAX origen/ destino/La opción -H preserva enlaces duros, aunque puede aumentar el uso de memoria en árboles de archivos grandes.
En cambio, para copiar archivos normales de usuario, evita usar sudo si no hace falta. Copiar como root puede dejar archivos en destino con propietarios incómodos para el uso diario.
Buenas prácticas para rsync en 2026
Para uso diario, estas recomendaciones de sincronización de archivos con rsync te evitarán la mayoría de errores:
- Empieza siempre con –dry-run cuando el destino tenga datos importantes.
- Entiende la barra final antes de ejecutar comandos grandes.
- Usa -a como base para preservar estructura y metadatos.
- Añade -h para leer mejor los tamaños.
- Usa -P en transferencias largas o inestables.
- Usa –delete solo cuando quieras un espejo exacto.
- Mantén exclusiones en un archivo cuando el comando crezca demasiado.
- Registra logs en automatizaciones.
- Prueba scripts manualmente antes de llevarlos a cron o systemd.
- No ejecutes como root si no es necesario.
- Revisa permisos y propietarios después de la primera sincronización.
- Documenta tus comandos de backup para poder recuperarlos bajo presión.
Conclusión
La sincronización de archivos con rsync una herramienta imprescindible para cualquier usuario de Linux que quiera copiar, sincronizar o respaldar archivos de forma eficiente. Su sintaxis básica es sencilla, pero su verdadero poder está en opciones como –dry-run, –delete, –exclude, –include, -P, –backup, –chmod y la integración con SSH.
La clave para usarlo bien es trabajar con método: entender origen y destino, revisar la barra final, simular antes de borrar, preservar permisos cuando corresponda y automatizar solo después de haber probado el comando manualmente.

