Qual é a maneira mais fácil de manter um perfil do Unison sincronizado entre máquinas que não podem se comunicar diretamente?

2

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 uns aos outros 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 eu mantenho.

Existe uma maneira de manter o perfil de sincronização sincronizado automaticamente entre os dois computadores?

    
por hugomg 28.09.2015 / 18:40

2 respostas

1

Eu mantenho o perfil dentro do diretório para ser sincronizado. Dentro de ~/.unison , eu coloquei um link simbólico para o perfil real. Isso funcionou bem para mim. Ele também permite que eu "inicialize" rapidamente uma nova máquina: simplesmente copie o perfil da unidade USB para um novo computador e comece de novo.

Existe uma 'pegadinha'. Se você adicionar uma linha ignorar ao 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 da linha ignorar . O motivo é que o perfil está programado para ser transferido, mas não é efetivo (no outro computador) até a sincronização seguinte . Fora isso, ainda não encontrei nenhum problema.

    
por 29.09.2015 / 09:57
1

A alternativa que acabei com é fazer uma sincronização em duas etapas. Eu tenho um perfil de uníssono para sincronizar meu (s) perfil (s) de uníssono

#.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 correr em uníssono com cada perfil

#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 incômoda porque eu preciso rodar uníssonamente 3 vezes ao invés de uma vez, mas tem a vantagem de que nenhum dos perfis uníssonos é responsável por se sincronizar (o que leva ao comportamento estranho em que você precisa executar uníssono duas vezes com o mesmo perfil para fazer as coisas funcionarem)

    
por 27.10.2015 / 14:14

Tags