file - Sincronización bidireccional con rsync
two-way (8)
Ahora estoy usando SparkleShare https://www.sparkleshare.org/
funciona en mac, linux y windows.
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 música de sincronización, primero obtiene todas las diferencias de servidor a local y luego lo opuesto, enviando todas las diferencias de local a servidor.
Esto funciona muy bien solo si solo hay actualizaciones o nuevos archivos 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 de servidor en una sincronización, cuando los archivos locales se han eliminado, funciona, pero si, por alguna razón (explicada después), tengo algunos archivos que no están en el servidor pero existen localmente y se eliminaron, Quiero eliminarlos localmente y no servidor copiado (como sucede).
La cosa es que tengo 3 máquinas en contexto:
- escritorio
- cuaderno
- servidor doméstico
Por lo tanto, a veces, el servidor tendrá archivos que se eliminaron con una sincronización de notebook, por ejemplo y luego, cuando ejecuto una sincronización con mi escritorio (donde aún existen los archivos de servidor eliminados), quiero que estos archivos se eliminen y no se eliminen. copiado nuevamente al servidor.
Supongo que esto solo es posible con una base de datos y un seguimiento de las operaciones: P
¿Alguna solución más simple? Gracias.
Dado que la pregunta original también involucra un escritorio y computadora portátil y un ejemplo que involucra archivos de música (de ahí que probablemente esté usando una GUI), también mencionaría uno de los mejores programas bidireccionales, multiplataforma, gratuitos y de código abierto hasta la fecha: FreeFileSync .
Está basado en GUI, es muy rápido e intuitivo, viene con filtrado y muchas otras opciones, incluida la capacidad de conectarse de forma remota, para ver y gestionar de forma interactiva las "colisiones" (por ejemplo, archivos con marcas de tiempo similares) y para alternar entre transferencia bidireccional, duplicación y pronto.
No estoy seguro de si funciona con dos sincronizaciones, pero para que el comando "delete "también necesite agregar el parámetro" recursivo ".
Prueba esto,
get-music:
rsync -avzru --delete-excluded server:/media/10001/music/ /media/Incoming/music/
put-music:
rsync -avzru --delete-excluded /media/Incoming/music/ server:/media/10001/music/
sync-music: get-music put-music
Solo compruebo esto y funcionó para mí. Estoy haciendo una sincronización bidireccional entre Windows7 (usando cygwin con el paquete rsync instalado) y FreeNAS fileserver (FreeNAS se ejecuta en FreeBSD con el paquete rsync preinstalado).
Pruebe Unison: http://www.cis.upenn.edu/~bcpierce/unison/
Sintaxis: unison dirA/ dirB/
Unison pregunta qué hacer cuando los archivos son diferentes, pero puede automatizar el proceso utilizando lo siguiente que acepta opciones predeterminadas (sin conflictos):
unison -auto dirA/ dirB/
unison -batch dirA/ dirB/
no hace preguntas en absoluto, y escribe para mostrar cuántos archivos se ignoraron (porque entraron en conflicto).
Puede usar Osync: http://www.netpower.fr/osync , que está basado en rsync con propagación inteligente de borrado. también tiene múltiples opciones como reanudar una ejecución detenida, eliminación suave y control de tiempo.
También puedes probar bitpocket: https://github.com/sickill/bitpocket