Unison

Introdução

Unison - Sincronizando e replicando arquivos

O Unison é uma ótima ferramenta disponível sob os termos da GPL utilizado para sincronização e replicação de arquivos, seja entre diferentes diretórios na máquina local ou em outra máquina remota, acessível pela rede local ou internet.

Esta ferramenta utiliza SSH, entre outros protocolos para sincronização remota, e se aproveita muito bem do excelente algoritmo do Rsync para manter os dados em volume razoável acelerando o tráfego.

O Rsync é uma ótima ferramenta, porém trabalha com sincronização dos arquivos em mão única, ou seja, um único sentido. O Unison por sua vez, faz a sincronização de ambos os lados, conciliando automaticamente as alterações conflitantes, ou permitindo que o usuário decida como fazer esta conciliação.

Icones/importante.png

NOTA: A presente documentação abordará única e exclusivamente o recurso de sincronização local e remota com SSH, não levando em consideração os demais protocolos de conexão permitidos pela ferramenta.

Funcionamento

O Unison primeiramente levanta uma lista de sincronia de arquivos do diretório especificado, solicitando posteriormente que o Unison do outro lado faça o mesmo.

Como o Unison necessita manter uma lista de sincronia em ambos os hosts, e quem faz isso é o próprio aplicativo é necessário que o mesmo se encontre instalado em ambos lados do processo de sincronização, ou seja, em ambas as máquinas.

Se houverem diferenças ou novos arquivos/diretórios de qualquer um dos lados, o Unison replica essas diferenças. Quando há 2 arquivos conflitantes, como por exemplo tenham sido editados em ambos diretórios, o Unison permite que se escolha diversos cursos de ação, como escolher qual manter (Left to Right ou Right to Left) ou mesmo fazer uma “mistura” (Merge).

Para facilitar esta decisão por parte do usuário o Unison faz uso do diff para exibir as diferenças entre os arquivos conflitantes. Arquivos e/ou diretórios que tenham sido removidos, também são perfeitamente replicados pelo Unison.

Aplicação

Abaixo veremos alguns exemplos onde podemos fazer uso do Unison.

  • Cópia de segurança: Manter um servidor de reserva ou rodando em paralelo com os dados do servidor principal espelhados nele.

  • Diretórios de trabalho: Manter seus arquivos de trabalho em casa sincronizado com os do computador da empresa ou vice-versa.

  • Caixas de correio eletrônico: Para quem gerencia um mesmo endereço de e-mail em diferentes hosts, pode receber suas mensagens em uma outra máquina e depois manter tudo sincronizado.

Outras aplicações que trabalhem com arquivos independentes (que não sejam alterados frequentemente e nem simultaneamente) também poderão tirar muito benefício dessa sincronização sem se preocupar com merges de arquivos.

Instalando o Unison

Felizmente para nós usuários Ubuntu, além do Debian e outros derivados, o Unison se encontra pré-compilado em pacotes DEB presente no repositório Universe, bastando apenas fazer uso dos poderosos recursos do APT.

Icones/informacao.png

DICAS:
1. Veja aqui como habilitar este, e outros diferentes repositórios dependendo da sua versão do Ubuntu.
2. Se assim preferir, instale os pacotes aproveitando as facilidades da interface gráfica fazendo uso do Synaptic.

sudo apt-get install unison unison-gtk

Utilizando o Unison

O Unison tanto pode ser utilizado diretamente via linha de comando (unison), como também fazendo uso de sua GUI desenvolvida em GTK (unison-gtk).

Pela interface texto

Uma das formas mais simples de executar o Unison, basta apenas especificar junto ao comando os dois diretórios a serem sincronizados, como nos exemplos que abaixo veremos.

Sincronização local

O comando abaixo exemplifica um processo de sincronização entre 2 diretórios localizados na mesma máquina.

unison /primeiro/local/diretorio /segundo/local/diretorio

Sincronização remota

O exemplo abaixo demonstra como sincronizar diretórios remotos (diferentes computadores) via SSH a partir do mesmo usuário que executa o aplicativo.

unison /local/diretorio ssh://192.168.1.3//local/diretorio

Para sincronização remota (diferentes hosts) usando SSH a partir de outro usuário especificado, no caso do exemplo o usuário fulano.

unison /local/diretorio ssh://fulano@192.168.1.3//local/diretorio

Usando um arquivo de perfil

O Unison ao ser executado pela primeira vez, cria no $HOME do usuário executante o diretório oculto .unison, no qual podemos armazenar arquivos com as configurações dos vários processos de sincronização que necessitaremos.

Este arquivos obrigatoriamente devem possuir a extensão .prf e seguir uma padronização que pode ser consultada no manual do Unison e observada no exemplo abaixo.

Arquivo: ~/.unison/meu_projeto.prf

########################################
# Meus Projetos – Desktop x Notebook
########################################
# Diretorio local
root = /local/diretorio
# Diretorio remoto na máquina 192.168.1.3
root = ssh://fulano@192.168.1.3//local/diretorio
# Sincronizar a hora das modificacoes
times = true
# Diretorio que não deve ser replicado
ignore = Path teste
# Arquivos que nao devem ser replicados
ignore = Name *.log*
ignore = Name *.tmp*
# Rodar em "silencio" (sem perguntas)
batch = true
# Deixar automaticamente a cópia mais recente como master
prefer = newer
# Salvar arquivo de log especifico
log = true
logfile = ~/.unison/meu_projeto.log

Icones/importante.png

NOTA: Observem que os "#" no inicio das linhas são apenas comentários, especificando melhor o propósito de cada linha do arquivo.

Salvando o arquivo, basta então digitar o comando junto ao nome do arquivo omitindo a extensão do mesmo, como no exemplo abaixo que irá proceder a mesma sincronização do exemplo visto mais acima na linha de comando.

unison  meu_projeto

Icones/informacao.png

DICA: O Unison pode ser bastante “chato” com suas constantes perguntas, mais é possível eliminar este “ruído” fazendo uso da opção -bach junto ao comando.

Ex.: unison meu_projeto -bach

Pela interface gráfica

Para executar a interface gráfica do Unison basta executar no terminal o comando abaixo a partir do login de seu usuário.

unison-gtk

Uma tela semelhante a figura abaixo será exibida contendo um perfil padrão do aplicativo chamado default. Clique então no botão Create new profile para definir um novo perfil contendo os dados necessários para proceder a sincronização dos arquivos desejados, seja local ou remotamente.

unison_profiles.png

Figura 01

Criando um novo perfil

Ao pressionar o botão para criar um novo perfil, a seqüência de telas abaixo exibidas irão guiar o processo de configuração deste novo perfil que será usado para a sincronização necessária dos seus arquivos.

unison_cfg_profile.png

Figura 02

Na primeira tela (superior) informe o nome do novo perfil a ser criado. Uma próxima tela (meio), especifique o diretório local onde se encontra os arquivos e depois na próxima tela (inferior) o outro diretório, seja local ou remoto, assim como o Host, tipo de conexão (Local, SSH, RSH ou Socket) e o usuário se for necessário especificar outro diferente do atual que se encontra executando o aplicativo.

Sincronizando arquivos

Definido o perfil com as configurações necessárias, o mesmo será listado na tela exemplificada na Figura 01. Para proceder então o processo de sincronismo configurado, basta selecionar o perfil desejado e pressionar o botão OK.

Se a sincronização for remota, o inicio da conexão com o host especificado terá inicio.

unison_conecting_server.png

Figura 03

Conectado ao host remoto, será solicitado que informe a senha referente ao usuário para acessar a conexão SSH.

unison_ssh_pwd.png

Figura 04

Conferida a senha e liberado o acesso SSH ao computador remoto a tela principal do programa será exibida (Figura 05), onde então procederemos o processo de sincronização conforme desejado.

Icones/informacao.png

DICAS: Você pode usar SSH com autenticação por chave pública, não irá precisar da senha. Smile :)

unison_main.png

Figura 05

Nesta interface então poderemos ver em qual host teve modificações, sendo apontadas pelas setas verdes direcionais em um sentido ou outro.

Se nenhum conflito for encontrado, basta pressionar o botão Go da barra de ferramentas para que o sincronismo seja executado. Para atualizar a lista de sincronismo pressione o botão Restart da mesma barra.

Havendo conflitos, o Unison os informará e o usuário poderá escolher qual das atualizações manter (Right to Left ou Left to Right), ou mesmo tentar uma união das duas versões pressionando Merge. Selecionado o conflito e pressionando o botão Diff uma tela exibindo as diferenças será exibida, auxiliando no processo decisório do usuário.

Outras opções estão disponíveis na barra de menu do Unison, consulte o manual do aplicativo para maiores detalhes.

Icones/informacao.png

DICA: Os perfis criados a partir da interface gráfica do Unison, também são salvos no diretório oculto .unison no $HOME do usuário e podem ser manualmente editados.

Referências

Local

Para maiores detalhes sobre o Unison consulte o manual fazendo uso dos comando abaixo executados em um terminal.

  • man unison
  • unison -doc all |less

Internet

Créditos

Wikifier: arlei

Data: 24/03/2008

Mantenedor: arlei

Time de Documentação do Ubuntu Brasil


CategoryDocumentacao CategoryRevisada

Unison (last edited 2011-09-19 23:22:52 by localhost)