¿Cuántas veces has tenido que abrir el man de rsync para acordarte de la diferencia entre -a, -avz, -r y -rlptgoD? Yo he perdido la cuenta. Y no te cuento el escalofrío que recorre la espalda cada vez que escribes --delete y pulsas enter, con esa sensación de que igual te has equivocado con la barra final y estás a punto de cargarte la carpeta equivocada. Porque sí, rsync es la herramienta definitiva para backups y sincronizaciones, pero sus flags son un infierno. Un error, una barra mal puesta, y puedes despedirte de tus datos. Así, después de darle muchas vueltas, me topé con lazyrsync, una TUI para rsync escrita en Rust que sigue la misma filosofía de lazygit. Paneles, teclas, perfiles reutilizables, y lo más importante: un dry-run que te muestra exactamente qué va a pasar antes de que pase nada. Menudo descubrimiento.
El problema eterno de rsync
Llevo años usando rsync para todo. Backups locales a discos externos, sincronización remota con servidores, copias de seguridad de proyectos. Es una herramienta sólida, fiable, que lleva décadas funcionando. El problema no es rsync, el problema soy yo. O mejor dicho, el problema es la cantidad de flags que tengo que recordar.
rsync -avz --delete --progress --exclude='node_modules' --exclude='.git' ~/proyectos/ usuario@servidor:/backup/
Esta línea parece inocente, pero cada elemento es una oportunidad para equivocarse. ¿Lleva barra final el origen? ¿Y el destino? Porque si pones la barra en el origen copias el contenido de la carpeta, y si no la pones copias la carpeta entera. Un detalle que marca la diferencia entre tener ~/backup/mis-datos/ o ~/backup/proyectos/mis-datos/.
Y luego está el miedo a --delete. Ese flag que le dice a rsync: “borra en el destino todo lo que no esté en el origen”. Útil para mantener espejos exactos, pero mortal si te equivocas de camino. He visto a más de uno borrar backups históricos por una barra mal colocada. Qué le vamos a hacer.
Te pongo un ejemplo real. Hace unos meses tenía que migrar un servidor web. Mi comando rsync favorito de toda la vida, el que uso para sincronizar proyectos, es este:
rsync -avz --delete ~/www/mi-proyecto/ usuario@nuevo-servidor:/var/www/mi-proyecto/
Todo correcto. Pero resulta que en el nuevo servidor, la ruta era /var/www/html/mi-proyecto/. Me confié, no hice dry-run, y lancé el rsync. El resultado fue que los archivos se copiaron a la ruta incorrecta y, como llevaba --delete, se cargó lo que había en /var/www/mi-proyecto/ que no era exactamente lo que yo pensaba. Menudo fenómeno estoy hecho.
Desde entonces, tengo una norma: antes de cualquier rsync con --delete, hago un dry-run. Y si puedo evitarlo, lo hago con una herramienta que me muestre claramente qué va a pasar.
El caso es que siempre había soñado con una interfaz que me permitiera:
- Guardar configuraciones de rsync para no tener que acordarme de los flags
- Ver qué iba a pasar antes de que pasara
- Poder cancelar una operación a medio camino
- Tener todo esto en la terminal, sin necesidad de entorno gráfico
Y resulta que alguien ya lo había hecho.
Qué es lazyrsync
lazyrsync es una interfaz TUI para rsync escrita en Rust con la librería ratatui. La ha desarrollado Westpoint (Luis Ortiz) y está en su versión 0.1.1 (julio de 2026). En pocas semanas ha conseguido 325 estrellas en GitHub, lo que dice mucho de lo necesario que era algo así.
| Característica | Detalle |
|---|---|
| Lenguaje | Rust (98.7%) |
| TUI | ratatui |
| Licencia | MIT |
| Inspiración | lazygit (paneles + teclado) |
| Repositorio | github.com/westpoint-io/lazyrsync |
| Docs | lazyrsync.westpoint.io |
| Versión actual | v0.1.1 |
La idea es sencilla: si lazygit puso orden en el caos de los comandos de git con una interfaz de paneles y atajos de teclado, lazyrsync hace lo mismo con rsync. La misma filosofía de no sacarte de la terminal, la misma navegación con j/k, los mismos paneles laterales, el mismo concepto de perfiles reutilizables.
La diferencia con otras soluciones es que no estamos ante un script con menús ni ante una interfaz gráfica. Estamos ante una TUI que funciona igual en tu portátil que en un servidor remoto al que solo accedes por SSH. Ahí es donde una GUI no llega. He probado herramientas como grsync que son interfaces GTK para rsync, pero si estás en un servidor sin X11, no te sirven de nada. Y los scripts de bash, por muy bien que los escribas, siempre acaban siendo un archivo más que gestionar.
Y esto no va de sustituir rsync. Va de hacerlo más seguro y más cómodo. rsync sigue siendo el motor, lazyrsync es el cuadro de mandos. Una forma de pensar en lo que quieres sincronizar, no en los flags que necesitas para hacerlo.
Otra cosa que me gusta es el enfoque en la reutilización. No es una herramienta que uses una vez y olvides. Es un gestor de configuraciones de rsync. Creas tus perfiles, los ajustas, y los tienes siempre disponibles. Como tener una biblioteca de comandos rsync perfectos, cada uno con sus flags, sus filtros, su configuración SSH, listos para ejecutar con una tecla.
Instalación
Lo primero que necesitas es tener rsync instalado en el sistema. En cualquier distribución Linux viene por defecto, pero si usas macOS o una distro mínima, asegúrate de tenerlo.
which rsync
Si no aparece nada, instálalo con el gestor de paquetes de tu distribución.
A partir de ahí, tienes varias opciones para instalar lazyrsync.
Desde crates.io
Si tienes el entorno de Rust instalado, es lo más directo. El binario se compila desde el código fuente y se instala en ~/.cargo/bin/.
cargo install lazyrsync
La compilación puede tardar un par de minutos, pero una vez terminada, ya tienes el comando lazyrsync disponible. Si no tienes Rust instalado, puedes instalarlo con rustup desde rustup.rs.
Con cargo-binstall
Si no quieres compilar desde fuente (y quién te culpa), puedes usar cargo-binstall para bajarte el binario precompilado del release de GitHub. Esto es mucho más rápido, porque descarga el binario ya compilado para tu arquitectura.
cargo binstall lazyrsync
cargo-binstall no viene con Rust por defecto, pero instalarlo es tan sencillo como:
cargo install cargo-binstall
cargo binstall lazyrsync
Con Homebrew
En macOS o Linux con brew:
brew install westpoint-io/lazyrsync/lazyrsync
En Arch Linux
Desde AUR:
yay -S lazyrsync
Desde fuente
Si te gusta el olor a cargo build por la mañana:
git clone https://github.com/westpoint-io/lazyrsync cd lazyrsync cargo install --path .
En cualquiera de los casos, el binario se instala en ~/.cargo/bin/. Asegúrate de que ese directorio está en tu $PATH, o ya sabes lo que pasa.
export PATH="$HOME/.cargo/bin:$PATH"
Y para lanzarlo, simplemente:
lazyrsync
Primeros pasos y configuración
Nada más arrancar lazyrsync te encuentras cuatro paneles a la izquierda, numerados del 1 al 4, y un panel grande a la derecha marcado como [0] que muestra la información detallada de lo que tengas seleccionado.
Los paneles son:
- [1] Runs — las ejecuciones en curso y las terminadas
- [2] Tasks · Profiles — tus tareas y perfiles guardados
- [3] Flags — las opciones de rsync como checkboxes
- [4] Filters — reglas de inclusión y exclusión
La navegación es idéntica a lazygit. Puedes cambiar de panel con las teclas 1 a 4 o con Tab, y moverte por los elementos con j/k o las flechas.
Crear tu primer perfil
Antes de crear una tarea, necesitas un perfil donde agruparla. Pulsa ] para cambiar al sub-tab de Profiles, y luego a para añadir uno. Le pones un nombre, algo descriptivo como backups-personales o servidor-web, y ya tienes tu contenedor.
Vuelve a pulsar ] para volver al sub-tab de Tasks. Ahora pulsa a para añadir una tarea. Se abre un formulario con los siguientes campos:
- ID — un identificador único. Si lo dejas en blanco, se genera automáticamente a partir del nombre del origen y un hash.
- Action —
SyncoSnapshot. Se cambia con las flechas←/→. - Source — la ruta de origen. Puede ser local (
~/fotos/) o remota (usuario@servidor:/fotos/). - Destination — la ruta de destino. Igual que el origen.
Para las rutas locales, puedes usar Ctrl+n para autocompletar rutas del sistema de archivos, que es un detalle muy agradecido. No sabes cuánto hasta que tienes que escribir una ruta larga a mano.
Una vez tienes la tarea creada, aparece en la lista. Selecciónala con Enter o space y verás cómo el panel [0] se actualiza con la información de la tarea: el origen, el destino, los flags activos, los filtros. Todo de un vistazo.
Configuración de flags desde la interfaz
En el panel [3] Flags puedes activar las opciones de rsync. Cada flag es un checkbox que activas con la barra espaciadora. Las opciones disponibles cubren lo esencial:
- archive, compress, verbose, human-readable
- partial, checksum, update, delete
- times, owner, group, perms, links, devices, specials
Lo interesante es que los flags se guardan por tarea. Puedes tener una tarea con compresión activada para transferencias lentas, y otra sin compresión para redes rápidas. Cada tarea recuerda su configuración.
Filtros de inclusión y exclusión
El panel [4] Filters te permite gestionar las reglas de inclusión y exclusión de archivos. Es el equivalente a los flags --include, --exclude, --include-from, --exclude-from, --filter y --files-from de rsync.
Tienes campos separados para:
- Includes — patrones separados por comas que se convierten en
--include - Include-from — un archivo con patrones de inclusión
- Excludes — patrones separados por comas que se convierten en
--exclude - Exclude-from — un archivo con patrones de exclusión
- Filter — reglas completas con su prefijo (
+,-,P, etc.) - Files-from — un archivo con la lista exacta de archivos a transferir
Si tienes experiencia con rsync, sabes que el orden de los filtros importa. lazyrsync lo respeta: los includes se procesan antes que los excludes, y el campo Filter te da control total sobre el orden.
Un truco útil: después de aplicar filtros, pulsa p para hacer un dry-run y ver cómo afectan a la lista de archivos a transferir. Así ajustas los patrones hasta dejar exactamente lo que quieres sincronizar.
Archivos de configuración
Todo lo que configures desde la TUI se guarda automáticamente en ~/.config/lazyrsync/. Ahí encontrarás dos archivos:
profiles.toml— tus perfiles y tareas. Lo gestiona la aplicación, pero puedes editarlo a mano si sabes lo que haces.settings.toml— preferencias generales, como el tema de colores o si quieres saltarte la confirmación de--delete.
El settings.toml tiene una pinta como esta:
skip_delete_warning = false hints = true [theme] accent = "lightblue" on_accent = "black" secondary = "lightcyan" border = "gray" muted = "darkgray" added = "green" modified = "yellow" deleted = "red" warn = "yellow" bytes = "blue"
Los valores de color pueden ser nombres ANSI estándar o códigos hexadecimales como "#5fafff". Puedes tunearlo a tu gusto.
Funcionalidades clave
Esto es lo que hace que lazyrsync merezca la pena.
Dry-run preview con tecla p
Esta es, sin duda, la funcionalidad matadora. Seleccionas una tarea y pulsas p. lazyrsync ejecuta rsync con el flag --dry-run y te muestra, en el panel [0], un diff estructurado con tres tipos de cambios:
+(verde) — archivos nuevos que se van a crear~(amarillo) — archivos que se van a modificar-(rojo) — archivos que se van a eliminar
Además, al final te muestra estadísticas: cuántos archivos se van a transferir, cuánto ocupan, y si hay algún conflicto.
Lo mejor de todo es que no se escribe ni un solo byte. El dry-run es seguro al cien por cien. Puedes usarlo tantas veces como quieras para asegurarte de que la tarea hace exactamente lo que esperas.
💡 Recomendación: pulsa
psiempre antes de ejecutar una tarea nueva. Solo te llevará un par de segundos y te ahorrará disgustos.
Live run con progreso
Cuando estás seguro de lo que va a pasar, pulsas r y arranca la ejecución real. El panel [1] Runs se activa y muestra una barra de progreso con el número de bytes y archivos transferidos.
Y aquí viene lo bueno: si ves que algo va mal, pulsas c y la operación se cancela al instante. Sí, como en rsync normal con Ctrl+C, pero aquí tienes una tecla dedicada que termina el proceso limpiamente y te muestra qué se había transferido hasta ese momento.
Si tienes varias tareas en un perfil, puedes pulsar R mayúscula para ejecutarlas todas en secuencia. La aplicación te pide confirmación antes de arrancar, y puedes ir viendo el progreso de cada una.
Perfiles y tareas reutilizables
La gracia de lazyrsync es que configuras una vez y ejecutas siempre. Creas un perfil servidor-web con una tarea que sincroniza ~/www/ con usuario@vps:/var/www/, con los flags que quieras, y a partir de ahí solo tienes que seleccionar la tarea y pulsar r.
¿Que necesitas hacer un backup completo a un disco externo los viernes? Creas un perfil backups-semanales con las tareas que quieras, y cada viernes abres lazyrsync, seleccionas el perfil y pulsas R. Todo desde la terminal.
Los perfiles se guardan en profiles.toml, así que si cambias de equipo, te llevas el archivo y tienes toda tu configuración disponible.
Flags como checkboxes y –delete gating
En el panel [3] Flags tienes todas las opciones de rsync representadas como checkboxes que puedes activar o desactivar con la barra espaciadora. Nada de recordar si el flag de compresión es -z o --compress, nada de buscar en el manual.
Las opciones disponibles incluyen:
archive(-a)compress(-z)verbose(-v)human-readable(-h)partial(--partial)checksum(--checksum)update(--update)delete(--delete)- Y varias más.
Pero la estrella es --delete. Cuando activas este flag, lazyrsync te muestra un aviso en rojo pidiéndote confirmación. No puedes saltártelo por accidente. Tienes que confirmar explícitamente que quieres activar la eliminación de archivos en el destino.
Y si quieres evitar esa confirmación porque ya sabes lo que haces, puedes desactivarla en settings.toml:
skip_delete_warning = true
Pero hazlo bajo tu responsabilidad.
SSH remoto
Una de las grandes ventajas de rsync sobre otras herramientas de sincronización es que funciona de maravilla sobre SSH. lazyrsync lo aprovecha al máximo.
Para usar una ruta remota, simplemente escribes usuario@servidor:/ruta/completa en el campo Source o Destination. No necesitas configurar nada más. La aplicación detecta que es una ruta remota y usa SSH automáticamente.
Si necesitas opciones SSH específicas, pulsas s sobre la tarea y se abre un formulario con:
- SSH key file — la ruta a tu clave privada (
-i) - SSH port — el puerto personalizado (
-p) - SSH extra — opciones adicionales, como
-o ConnectTimeout=5
lazyrsync usa -o BatchMode=yes para todas las conexiones SSH, lo que significa que si el servidor requiere contraseña, la conexión falla rápido en lugar de quedarse colgada esperando un input que no va a llegar.
Snapshots
Esta es una funcionalidad que me ha conquistado. Cuando creas una tarea, puedes elegir entre Sync y Snapshot.
- Sync hace una copia normal. El destino acaba siendo un espejo del origen.
- Snapshot usa
--link-destpara crear versiones numeradas. Cada vez que ejecutas la tarea, se crea un nuevo directorio con el número siguiente:1/,2/,3/…
La magia está en los hardlinks. Si un archivo no ha cambiado entre dos snapshots, el segundo snapshot no ocupa espacio extra. Es literalmente la misma copia física del archivo referenciada desde dos directorios distintos. Solo los archivos modificados o nuevos ocupan espacio adicional.
Esto es perfecto para backups rotativos donde quieres tener un histórico sin gastar todo el disco duro.
Eso sí, los snapshots solo funcionan con rutas locales. No hay snapshots remotos, al menos de momento.
Operaciones masivas con V
Si necesitas ejecutar o eliminar varias tareas a la vez, lazyrsync tiene un modo de selección visual heredado de lazygit (y por tanto de Vim). Pulsas V mayúscula para iniciar la selección, extiendes con j/k, y luego pulsas la tecla de acción (r para ejecutar, d para eliminar). La aplicación te pide confirmación antes de procesar el lote.
Modo headless: inspeccionar sin abrir la TUI
Una característica que no esperaba y que me ha resultado muy útil es el modo headless. Puedes usar lazyrsync desde la línea de comandos para inspeccionar tus perfiles sin abrir la interfaz.
lazyrsync list
Este comando lista todos tus perfiles y las tareas que contienen, mostrando el comando rsync completo al que se resuelven. Es perfecto para revisar rápidamente qué tienes configurado.
Y si quieres ver el comando exacto que ejecutaría una tarea concreta:
lazyrsync run backups-personales
Esto imprime el comando rsync completo, con todos los flags, filtros y opciones SSH. Puedes copiarlo y ejecutarlo manualmente si quieres, o simplemente revisar que es correcto.
Si añades -n, te muestra la versión con --dry-run:
lazyrsync run backups-personales -n
De momento, el modo headless solo permite inspeccionar, no ejecutar. Para lanzar una transferencia tienes que usar la TUI. Pero poder ver el comando rsync que se va a ejecutar es muy útil para depurar o para integrar en scripts.
Casos de uso reales
Vale, toda la teoría está muy bien, pero ¿cómo se usa esto en el día a día? Te cuento algunos casos que he estado probando.
Backup local a disco externo
Tengo un disco externo que conecto de vez en cuando para hacer backup de mi directorio personal. Con lazyrsync tengo un perfil backup-externo con una tarea:
- Source:
/home/lorenzo/ - Destination:
/media/disco-backup/lorenzo/ - Flags: archive, compress, verbose, human-readable
- Excludes:
node_modules,.cache,.local/share/Trash
Conecto el disco, abro lazyrsync, y pulso r. La barra de progreso me dice cuánto falta. Cuando termina, sé que tengo una copia exacta de mis datos. Antes hacia esto con un script de bash que tenía que editar cada vez que cambiaba algo. Ahora solo abro la TUI, selecciono la tarea y ejecuto.
Sincronización remota vía SSH
Tengo un VPS donde alojo mis proyectos. Con lazyrsync me he creado un perfil vps con la tarea:
- Source:
/home/lorenzo/www/mi-proyecto/ - Destination:
lorenzo@vps:/var/www/mi-proyecto/ - Flags: archive, compress, delete
- SSH: puerto 2222, clave SSH
Antes de desplegar, pulso p para ver el dry-run. Compruebo que los archivos que se van a subir son los correctos, que no se va a borrar nada importante, y luego pulso r. Tranquilidad absoluta.
Lo mejor es que la configuración SSH se guarda con la tarea. No tengo que acordarme de qué puerto usa cada servidor ni qué clave tengo que usar. Una vez configurado, todo queda registrado.
Snapshots incrementales
Para los datos realmente importantes, como fotos familiares o documentos, uso el modo snapshot. Tengo un perfil fotos-snapshots:
- Source:
/home/lorenzo/fotos/ - Destination:
/media/disco-backup/fotos-snapshots/ - Action: Snapshot
Cada vez que ejecuto la tarea, se crea un nuevo directorio numerado. Si no he modificado nada desde el último snapshot, el nuevo directorio apenas ocupa unos pocos kilobytes (los metadatos del directorio en sí). Si he añadido fotos nuevas, solo ocupan esas. Y si he eliminado alguna, puedo recuperarla de snapshots anteriores.
Para que te hagas una idea, tengo unos 50 GB de fotos. Con snapshots diarios de la última semana, el espacio total ocupado es de unos 55 GB. Sin snapshots, si hiciera copias completas cada día, serían 350 GB. El ahorro es considerable.
Múltiples tareas en un perfil
En mi perfil servidor tengo varias tareas que se ejecutan en secuencia:
- Sincronizar la base de datos (dump + rsync)
- Sincronizar los archivos estáticos
- Sincronizar las configuraciones
Con R mayúscula ejecuto todas de golpe. La aplicación las procesa una tras otra y puedo ver el estado de cada una en el panel Runs.
Sincronización bidireccional con dos tareas
Aunque rsync no es una herramienta de sincronización bidireccional (para eso está Syncthing), puedes simularlo con dos tareas inversas en el mismo perfil. Una tarea que sincroniza de local a remoto y otra que sincroniza de remoto a local. Eso sí, ten cuidado con los conflictos. En mi caso lo uso para mantener sincronizados archivos de configuración entre mi portátil y mi servidor, donde sé que no voy a modificar el mismo archivo en ambos sitios a la vez.
Pros y contras
Ninguna herramienta es perfecta. Te cuento lo que me gusta y lo que no tanto.
Lo bueno
Dry-run preview. Esto por sí solo justifica la herramienta. Ver el diff antes de ejecutar es una tranquilidad enorme. Puedes comprobar que los filtros funcionan, que no se te ha escapado ningún archivo, que el --delete no va a cargarse nada importante. Y todo sin tocar un solo byte.
Perfiles reutilizables. Configuras una vez y olvidas. No más scripts de bash esparcidos por el sistema, no más historiales de comandos, no más tener que acordarte de qué flags usaste la última vez.
–delete gated. Activar la eliminación requiere confirmación explícita. No más sustos. Y si quieres saltarte la confirmación, puedes hacerlo, pero es una decisión consciente.
SSH nativo. Funciona igual con rutas locales que remotas. No hay que configurar nada especial. Y el editor SSH con validación de puertos es un detalle que se agradece.
Inspirado en lazygit. Si usas lazygit, te sientes en casa desde el primer momento. La misma navegación, los mismos atajos, la misma filosofía de paneles. La curva de aprendizaje es prácticamente cero.
Rust. Rápido, seguro, un solo binario sin dependencias. Se instala en segundos y ocupa muy poco.
Modo headless para inspección. Poder ver el comando rsync exacto desde la línea de comandos es muy útil para depurar o para documentar lo que hace cada perfil.
Lo mejorable
Muy nuevo. Estamos en v0.1.1. La herramienta funciona, pero es de esperar que haya bugs o cambios en la interfaz.
No headless run. El comando lazyrsync run NOMBRE solo imprime el comando rsync que se ejecutaría. No ejecuta realmente la transferencia. Para eso tienes que usar la TUI.
Depende de rsync. Obviamente, pero en macOS a veces no viene instalado y en sistemas muy minimalistas puede faltar.
Snapshots solo locales. Las tareas snapshot solo funcionan con rutas locales. Nada de snapshots remotos.
Comunidad pequeña. 325 estrellas y 7 forks. El proyecto es prometedor, pero no tiene la masa crítica de lazygit.
Conclusión
lazyrsync resuelve un problema que llevaba años arrastrando. El mismo problema que resolvió lazygit para git, lo resuelve lazyrsync para rsync. No es que rsync esté mal, es que tener una interfaz que te permita ver lo que va a pasar antes de que pase, guardar configuraciones reutilizables, y ejecutar todo con atajos de teclado, es un salto de calidad enorme.
Claro, hay alternativas. Puedes seguir usando rsync a pelo con scripts de bash, que es lo que hemos hecho toda la vida. Puedes usar rclone si trabajas con servicios en la nube, que es una herramienta magnífica para Google Drive, Dropbox, S3 y compañía. Puedes usar Syncthing si necesitas sincronización bidireccional entre varios dispositivos. Incluso puedes usar grsync si prefieres una interfaz gráfica GTK.
Pero hay un nicho que ninguna de esas herramientas cubre bien: la gestión de configuraciones complejas de rsync desde la terminal. Ahí es donde lazyrsync marca la diferencia. No es una herramienta para el que hace un rsync de vez en cuando. Es para el que tiene múltiples destinos, múltiples perfiles, configuraciones SSH diferentes, y quiere tenerlo todo organizado sin tener que acordarse de los flags.
Eso sí, es una herramienta muy joven. Versión 0.1.1, 325 estrellas, un desarrollador principal. Todavía le queda camino por recorrer. Pero el enfoque es el correcto, la implementación es sólida, y el desarrollo parece activo. Le voy a seguir la pista de cerca.
Si eres de los que usa rsync a diario, pruébala. Dedica diez minutos a configurar tus perfiles y te cambiará la forma de trabajar. Y si encima vienes de lazygit, te sentirás como en casa. Al fin y al cabo, ambas herramientas comparten la misma filosofía: la terminal es el lugar adecuado para estas tareas, pero no tiene por qué ser incómoda.
Y tú, ¿usas rsync en tu día a día? ¿Te animas a probar lazyrsync? Cuéntame en los comentarios.
Más información,
- Repositorio de lazyrsync en GitHub
- Documentación oficial de lazyrsync
- lazygit — inspiración de lazyrsync
- ratatui — librería TUI para Rust
- crates.io — lazyrsync
- rsync man page oficial
- rclone — alternativa para sincronización cloud
- Syncthing — sincronización bidireccional P2P
- Homebrew formula de lazyrsync
- rustup — instalador del toolchain Rust
- cargo-binstall — binarios precompilados desde GitHub Releases
- Arch AUR — lazyrsync