Estou usando o Unison para sincronizar alguns arquivos entre meu computador doméstico e meu computador de trabalho. No entanto, os dois computadores não podem se conectar diretamente via ssh, então eu sincronizo através de um pen drive USB (formatado com ext4 para manter as permissões).
O problema que tenho é que o Unison armazena a configuração do perfil de sincronização localmente (no diretório .unison) em vez de na própria pasta. Isso significa que algumas informações, como arquivos ignorados, precisam ser duplicadas nos dois perfis que mantenho.
Existe uma maneira de manter o perfil de sincronização automaticamente sincronizado entre os dois computadores?
Responder1
Mantenho o perfil dentro do diretório a ser sincronizado. Dentro ~/.unison
, coloquei um link simbólico para o perfil real. Isso funcionou bem para mim. Também me permite 'inicializar' rapidamente uma nova máquina: basta copiar o perfil da unidade USB para um novo computador e começar de novo.
Existe uma 'pegadinha'. Se você adicionar umignorarlinha para o perfil (em um computador) que corresponde a um arquivo que já existe na unidade USB, esse arquivo será transferido da unidade USB para o outro computador na próxima sincronização Unison, apesar doignorarlinha. O motivo é que o perfil está programado para ser transferido, mas não entra em vigor (no outro computador) até que opróximosincronização. Fora isso, ainda não encontrei nenhum problema.
Responder2
A alternativa que encontrei é fazer uma sincronização em duas etapas. Eu tenho um perfil uníssono para sincronizar meu(s) perfil(s) uníssono(s)
#.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
Então, eu uso um script para executar em uníssono com cada perfil por vez
#syncronize-things.sh
unison-gtk sneakernet-init
unison-gtk sneakernet-dotfiles
unison-gtk sneakernet-hugobox
sync # Flush file system caches
Esta solução é um pouco complicada porque preciso executar o unison 3 vezes em vez de uma vez, mas tem a vantagem de que nenhum dos perfis unison é responsável pela sincronização (o que leva ao comportamento estranho em que você pode precisar executar o unison duas vezes com o mesmo perfil para fazer as coisas funcionarem)