mrsaynothing.dev
rsync command generator — primero dry-run, borrar con red

> rsync command generator — primero dry-run, borrar con red▋

La mayoría de los generadores de rsync arman tus flags y te desean suerte. Este hace dry-run por defecto y se niega a un --delete desnudo: la red de backup hace reversible cada espejo.

mrsaynothing· 16 de octubre de 2026· 5 min de lectura

¿Qué separa una sync de un wipe? Normalmente un solo flag. Escribe rsync -a --delete /mnt/empty-usb/ /home/you/ y rsync haré fielmente que tu destino coincida con tu origen — todo, incluida la parte donde tu directorio personal queda vacío. Todos los generadores que encontré en la primera página cablean ese flag felizmente detrás de un checkbox; uno hasta etiqueta su salida como «generado por IA y aún sin verificar», cosa valiente de imprimir encima de un comando de borrado. Esa es la mentira que esta herramienta rechaza: que armar la sintaxis de rsync y entender la semántica de rsync son el mismo trabajo. El rsync command generator está en línea — construye el comando, nombra las trampas en palabras claras y trata a --delete como lo que es: un arma cargada.

¿Por qué --delete merece una advertencia?

Porque el contrato de rsync es hacer que el destino coincida con el origen, y --delete extiende ese contrato a los borrados. La página man es directa: el flag significa «delete extraneous files from the destination dir». Extraneous es cualquier cosa que el origen no tiene — incluido lo que falta solo porque apuntaste al origen equivocado, montaste el USB equivocado o escribiste mal una ruta. El trabajo del generador es hacer visible esa consecuencia antes de que corra el comando, no después:

Flag Qué hace Qué hace cuando te equivocas
--delete Los archivos del destino que faltan en el origen se eliminan Ruta de origen equivocada → archivos del destino «extraneous» → desaparecen
src/ vs src El slash final copia el contenido; sin slash copia el directorio mismo Un carácter, y un layout de destino completamente distinto
-a Archivo: recursivo + permisos, tiempos, dueños, symlinks Si lo saltas → un «backup» que en silencio no lo es
--partial Conserva los archivos a medio transferir si hay interrupción Enlace inestable → reiniciar toda la transferencia desde cero

La fila del slash final es el clásico. La propia documentación de rsync dice que un slash final en el origen «changes this behavior to avoid creating an extra directory at the destination» — que en idioma documentación significa: src/ vierte el contenido en el destino, src crea dest/src y lo vierte ahí. Dos caracteres. El generador muestra qué frase aplica mientras escribes, porque el slash final también es el único flag de rsync que se ha comido más directorios personales que rm -rf en toda su historia.

¿Cómo armas un borrado sin riesgo?

No quitas el seguro — agregas una red. El flujo de armado del generador tiene dos pasos: el comando sale con --dry-run y lees qué pasaría; solo entonces activas el interruptor de armado para la corrida real. Y en el momento en que --delete entra en escena, la herramienta se niega a emitir un borrado desnudo. Le agrega la red:

rsync -a --delete \
  --backup --backup-dir=/mnt/backup/_rsync_backup_$(date +%F) \
  /mnt/usb/ /mnt/backup/

Con --backup --backup-dir activos, rsync no destruye los archivos que elimina o sobrescribe — los aparta primero en la carpeta fechada. El espejo queda exacto igual. El día que descubras que montaste el origen equivocado, tus archivos están en _rsync_backup_2026-10-16/ en vez de ser una lección. La reversibilidad es la diferencia entre un espejo y un recuerdo.

Sí: rsync -a --delete --backup --backup-dir=DEST/_rsync_backup_$(date +%F) SRC/ DEST/. Los dos flags de la red mueven cada archivo borrado o sobrescrito a una carpeta fechada en vez de borrarlo, así el espejo queda exacto y los borrados siguen siendo reversibles. Primero dry-run con -n, lee la lista, y después arma.

verificar: man rsync → --backup dice «make a backup of every file installed» · las filas de --backup-dir aterrizan en DEST/_rsync_backup_<date>/, no en el vacío

¿Qué flags cablea el generador?

El conjunto que cubre casi toda transferencia real, agrupado según cómo realmente decides sobre ellos:

  • Rutas — local o remoto de cualquier lado (user@host:/path), con el puerto SSH cableado vía -e "ssh -p 2222" cuando no es 22.
  • Dirección — el toggle del slash final, con la frase contenido-vs-directorio impresa en vivo.
  • Filtros — patrones --exclude con presets para los sospechosos de siempre: .git, node_modules, cachés, logs.
  • Modales — compresión -z, --bwlimit para que el backup de las 3 a.m. deje de saturar la casa, -P para progreso y reanudación, -c cuando el mtime miente.
  • El carril de armado — dry-run por defecto, paso de armado explícito, red autoadjunta a cualquier --delete.

La salida es una línea lista para pegar (o un multilínea con backslashes, según prefiera tu terminal), más un snippet embebible si quieres el builder en tu propia página. Como la calculadora GGUF VRAM, es un solo archivo HTML haciendo aritmética en tu navegador — nada de lo que escribes sale de la página, porque una herramienta sobre copias seguras no tiene por qué llamar a casa.

Dónde queda esto en la caja de herramientas

El generador compone el comando; los posts hermanos guardan la teoría. Rsync vs scp cubre por qué la transferencia delta de rsync le gana a una copia tonta y cuándo scp sigue siendo suficiente. Cron vs timers de systemd es la mitad de programación — un comando rsync salida del generador cae directo en un timer, y la parte del journal para saber si corrió está en la chuleta de journalctl.

Un dry-run que te saltas es un borrado que no querías hacer.

La herramienta está en github.com/mrsaynothing/rsync-builder — MIT, un archivo, sin paso de build. Si el flujo de armado alguna vez se siente regañón, es la funcionalidad funcionando; y si puedes nombrar una combinación de flags que la red no cubre, abre un issue — las esquinas peligrosas son justo las que vale la pena mapear.

$ Compartir este artículo

$ Recibe el próximo build log por email

Un email por post. Con pruebas y errores incluidos.

self-hosted · sin terceros · baja con un clic

Un correo, resumen semanal. Cero píxeles.

¿qué es esto?