Mantener dos carpetas iguales es una necesidad muy habitual: copias de seguridad de documentos a un disco externo, un proyecto que trabajas en dos discos o una carpeta que quieres replicar en un NAS. Hay apps para esto, pero rsync viene con macOS, es rápido porque solo copia lo que ha cambiado y se puede meter en un script.
Antes de empezar
rsync de macOS u openrsync
Desde macOS Sequoia 15.4, el comando rsync del sistema usa openrsync, una reimplementación con licencia BSD, en lugar del antiguo rsync 2.6.9 de Samba que Apple llevaba años sin actualizar. Para el uso de este artículo funciona igual, pero no admite todas las opciones del rsync moderno.
Comprueba cuál tienes:
rsync --version
Si necesitas el rsync actual (opciones como --info=progress2 o scripts que fallan con openrsync), instálalo con Homebrew:
brew install rsync
Queda en /opt/homebrew/bin/rsync en Mac con chip de Apple y en /usr/local/bin/rsync en Mac con Intel. Abre una ventana nueva de Terminal y comprueba con which rsync que se usa esa ruta.
Permisos de disco
Si sincronizas carpetas protegidas (Documentos, Escritorio, discos externos) y ves errores «Operation not permitted», da acceso a Terminal en Ajustes del Sistema > Privacidad y seguridad > Acceso total al disco.
Paso 1: la sincronización básica
rsync -avh --progress ~/Documentos/proyecto/ /Volumes/BACKUP/proyecto/
| Opción | Qué hace |
|---|---|
-a | Modo archivo: copia recursiva conservando permisos, fechas y enlaces simbólicos |
-v | Muestra los archivos que copia |
-h | Tamaños legibles (KB, MB, GB) |
--progress | Progreso de cada archivo |
-P | Equivale a --progress más --partial (reanuda archivos a medias) |
La barra final importa
Es el error más común con rsync:
origen/(con barra) copia el contenido de la carpeta dentro del destino.origen(sin barra) copia la carpeta dentro del destino, creandodestino/origen/.

Usa siempre la barra en ambos lados si quieres que las dos carpetas queden idénticas.
Paso 2: simular antes de ejecutar
Antes de cualquier sincronización importante, añade -n (--dry-run). Muestra lo que haría sin tocar nada:

rsync -avhn ~/Documentos/proyecto/ /Volumes/BACKUP/proyecto/
Paso 3: espejo exacto con –delete
Por defecto rsync no borra nada en el destino. Si quieres un espejo exacto (lo que borres en el origen se borra en el destino), añade --delete:

rsync -avhn --delete ~/Documentos/proyecto/ /Volumes/BACKUP/proyecto/
Cuidado: con
--delete, si te equivocas de orden entre origen y destino o te falta una barra, puedes borrar archivos que solo estaban en el destino. Ejecuta siempre primero con-n, revisa las líneasdeleting …y, si todo cuadra, quita lan.
Variantes: --delete-before borra antes de copiar (libera espacio primero) y --delete-after borra al final (más seguro si la copia se interrumpe).
Paso 4: excluir archivos y carpetas
rsync -avh --delete \
--exclude '.DS_Store' \
--exclude 'node_modules/' \
--exclude '*.tmp' \
~/Documentos/proyecto/ /Volumes/BACKUP/proyecto/
Fíjate en que las opciones largas llevan dos guiones (--exclude, --delete). Con muchos patrones, ponlos en un archivo, uno por línea, y usa --exclude-from=excluir.txt.
Paso 5: sincronizar con otro equipo por SSH
rsync -avhz ~/Documentos/proyecto/ usuario@192.168.1.50:/home/usuario/proyecto/
-z comprime los datos al transmitirlos: útil por red, inútil entre dos discos locales. El otro equipo necesita tener rsync instalado y SSH activo.
Paso 6: automatizarlo en un script
#!/bin/bash
ORIGEN="$HOME/Documentos/proyecto/"
DESTINO="/Volumes/BACKUP/proyecto/"
if [ ! -d "/Volumes/BACKUP" ]; then
echo "El disco BACKUP no está conectado"
exit 1
fi
rsync -ah --delete --exclude '.DS_Store' "$ORIGEN" "$DESTINO"
Guárdalo como sync.sh, dale permisos con chmod +x sync.sh y ejecútalo con ./sync.sh. La comprobación del volumen evita que rsync copie al disco interno si el externo no está montado.
Comprobar que funciona
Lanza la simulación otra vez después de sincronizar:
rsync -avhn --delete ~/Documentos/proyecto/ /Volumes/BACKUP/proyecto/
Si no lista ningún archivo, las dos carpetas son idénticas. Para comparar tamaños rápidamente: du -sh ~/Documentos/proyecto /Volumes/BACKUP/proyecto.
Problemas habituales
Todo se copia cada vez, aunque no haya cambios. Pasa con discos en exFAT o FAT32, que guardan las fechas con menos precisión. Añade --modify-window=2 o formatea el destino en APFS.
«Operation not permitted». Falta el permiso de Acceso total al disco para Terminal (ver Antes de empezar).
Aparece una carpeta dentro de otra (destino/proyecto/proyecto). Te faltó la barra final en el origen.
Una opción da «unknown option» o el script falla tras actualizar macOS. Es openrsync, que no admite esa opción. Instala rsync con Homebrew y llama a su ruta completa en el script.
Los permisos no se copian en discos externos. Si el disco tiene activado «Ignorar propietarios en este volumen» (Obtener información en el Finder), macOS no conserva propietarios. Desactívalo si los necesitas.



