Estoy usando Unison para sincronizar algunos archivos entre la computadora de mi casa y la computadora de mi trabajo. Sin embargo, las dos computadoras no pueden conectarse entre sí directamente a través de ssh, por lo que sincronizo mediante una memoria USB (formateada con ext4 para mantener los permisos).
El problema que tengo es que Unison almacena la configuración del perfil de sincronización localmente (en el directorio .unison) en lugar de en la carpeta misma. Esto significa que cierta información, como los archivos ignorados, debe duplicarse en los dos perfiles que mantengo.
¿Existe alguna manera de mantener el perfil de sincronización automáticamente sincronizado entre las dos computadoras?
Respuesta1
Mantengo el perfil dentro del directorio para sincronizarlo. Dentro ~/.unison
, puse un enlace simbólico al perfil real. Esto ha funcionado bien para mí. También me permite "arrancar" rápidamente una nueva máquina: simplemente copie el perfil de la unidad USB a una nueva computadora y comience de nuevo.
Hay un problema. Si agregas unignorarlínea al perfil (en una computadora) que coincide con un archivo que ya existe en la unidad USB, ese archivo se transferirá desde la unidad USB a la otra computadora en la siguiente sincronización Unison, a pesar de laignorarlínea. La razón es que el perfil está programado para ser transferido, pero no es efectivo (en la otra computadora) hasta quepróximosincronización. Aparte de eso, todavía no he encontrado ningún problema.
Respuesta2
La alternativa con la que terminé es hacer una sincronización de dos pasos. Tengo un perfil unísono para sincronizar mi(s) perfil(es) unísono
#.unison/sneakernet-init.prof
label = Unison profiles
root = /home/hugo/.unison
root = /media/hugo/MYDRIVE/Sync/Unison
path = sneakernet-common # ignore rules, diff command, etc
path = sneakernet-dotfiles.prf # profile for my dotfiles
path = sneakernet-hugobox.prf # profile for my other stuff
Luego, uso un script para ejecutar al unísono cada perfil por turno.
#syncronize-things.sh
unison-gtk sneakernet-init
unison-gtk sneakernet-dotfiles
unison-gtk sneakernet-hugobox
sync # Flush file system caches
Esta solución es un poco engorrosa porque necesito ejecutar unison 3 veces en lugar de una, pero tiene la ventaja de que ninguno de los perfiles de unison es responsable de sincronizarse (lo que lleva a un comportamiento extraño en el que es posible que deba ejecutar unison dos veces con el mismo perfil para que todo funcione)