Conteúdo |
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.
|
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.
|
DICAS: |
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
|
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
|
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. |
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.
|
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.
|
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.
|
Figura 03 |
Conectado ao host remoto, será solicitado que informe a senha referente ao usuário para acessar a conexão SSH.
|
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.
|
DICAS: Você pode usar SSH com autenticação por chave pública, não irá precisar da senha. |
|
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.
|
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
Página oficial do Unison - http://www.cis.upenn.edu/~bcpierce/unison/
Manual do usuário - http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html
FAQ - http://alliance.seas.upenn.edu/~bcpierce/wiki/index.php?n=Main.UnisonFAQ
