Tengo una carpeta a / y una carpeta remota A /. Ahora ejecuto algo como esto en un Makefile:
get-music:
rsync -avzru server:/media/10001/music/ /media/Incoming/music/
put-music:
rsync -avzru /media/Incoming/music/ server:/media/10001/music/
sync-music: get-music put-music
cuando hago sync-music, primero obtiene todos los diffs del servidor al local y luego al contrario, enviando todos los diffs del local al servidor.
Esto funciona muy bien solo si solo hay actualizaciones o archivos nuevos en el futuro. Si hay eliminaciones, no hace nada.
En rsync hay opciones --delete y --delete-after para ayudar a lograr lo que quiero, pero la cosa es que no funciona en una sincronización bidireccional.
Si quiero eliminar archivos del servidor en una sincronización, cuando los archivos locales se han eliminado, funciona, pero si, por alguna razón (explicada más adelante) tengo algunos archivos que no están en el servidor pero existen localmente y fueron eliminados, Quiero eliminarlos localmente y no copiarlos en el servidor (como sucede).
La cosa es que tengo 3 máquinas en contexto:
- escritorio
- cuaderno
- servidor doméstico
Entonces, a veces, el servidor tendrá archivos que se eliminaron con una sincronización de cuaderno, por ejemplo, y luego, cuando ejecuto una sincronización con mi escritorio (donde los archivos del servidor eliminados aún existen), quiero que estos archivos se eliminen y no copiado de nuevo en el servidor.
Supongo que esto solo es posible con una base de datos y un seguimiento de operaciones: P
¿Alguna solución más sencilla? Gracias.