Acontece que a mensagem 'erro fatal' é mais apropriada do que eu pensava. A origem do problema (que ocorreria em uma configuração de duas máquinas se um host alterasse seu nome) é que os dois dispositivos Android para sincronizar com nomes de host foram determinados como localhost
, mesmo que sejam diferentes e especificados por endereços IP diferentes.
De acordo com o manual do unison, o nome do host pode ser fornecido manualmente exportando a variável de ambiente UNISONLOCALHOSTNAME
.
Como o unison não cria um shell de login, ele não pode ser exportado no arquivo .profile
nos dispositivos de sincronização. Descobri que também o arquivo ./ssh/environment
dos meus servidores ssh (SshDroid em ambos os casos) não foi lido.
Finalmente, o nome do host android (que pode ser definido com setprop net.hostname [hostname]
) também não é lido por uníssono.
Em vez disso, parece usar como padrão localhost
.
Por isso, desenvolvi a seguinte solução alternativa:
unison -servercmd "export UNISONLOCALHOSTNAME=host1; unison" ssh://"$myhost1//dir" "$HOME/dir"
unison -servercmd "export UNISONLOCALHOSTNAME=host2; unison" ssh://"$myhost2//dir" "$HOME/dir"
Aqui, a opção -servercmd
define qual comando será executado nos dispositivos remotos para iniciar o uníssono. Na minha versão, ele exporta o UNISONLOCALHOSTNAME
para dois valores diferentes primeiro.
Em seguida, os hosts são reconhecidos como diferentes e é possível sincronizar repetidamente várias 'dicas' de um 'hub' central em uma configuração 'estrela'.