Unison: configurando e automatizando a sincronização bidirecional de diretórios em dois servidores


Getty Images / iStockphoto O

problema de sincronizar diretórios em dois servidores com a família de sistemas operacionais Linux a bordo pode ser resolvido com mais facilidade se você usar ferramentas especializadas. Vamos ver como isso pode ser feito com o Unison .

Talvez você tenha vários servidores e tenha a tarefa de sincronizar certos diretórios nesses servidores. Por exemplo, você precisa sincronizar o diretório / data em cada um desses servidores para que algum aplicativo tenha acesso a informações relevantes. Ou talvez você só precise fazer backup de dados periodicamente de um servidor para outro de maneira sincronizada.

O Unison é semelhante ao utilitário de sincronização rsync , mas, ao contrário, suporta a sincronização bidirecional. Ou seja, permite sincronizar duas cópias de arquivos, atualizando cada cópia, dependendo das alterações feitas.

Ao usar o Unison em servidores, é desejável ter pacotes instalados como openssh-server e ssh, porque por motivos de segurança, a sincronização é melhor realizada usando o protocolo SSH. No entanto, se você está confiante na segurança da sua rede (por exemplo, o servidor pode usar a autenticação SSH sem uma senha), não se preocupe.

O que mais é necessário para usar o Unison


Vou mostrar todo o processo usando dois servidores Ubuntu como exemplo (ambos 18.04). Você pode instalar e usar o Unison com outras distribuições, mas precisará alterar o comando de instalação; caso contrário, o Unison pode ser instalado a partir de repositórios padrão (é claro, seu usuário deve ter direitos sudo).

Vou usar estes servidores:

  • server1 - 192.168.1.6
  • server2 - 192.168.1.19

Como instalar o Unison


A primeira coisa a cuidar é instalar o Unison. Isso deve ser feito nos dois servidores. Vá para os dois servidores e insira o comando:

sudo apt-get install unison unison-all -y

Aguarde a instalação do Unison para concluir e continuar.

Como gerar e copiar uma chave SSH


Primeiro, geramos a chave SSH apenas para o server1 . Para fazer isso, use o comando:

ssh-keygen -t rsa

Quando você for solicitado a digitar uma senha, basta pressionar a tecla ENTER.
Quando a chave for gerada, copie-a para o servidor2 usando o comando:

ssh-copy-id 192.168.1.19

Depois que a chave é copiada, você pode prosseguir diretamente para os negócios.

Como usar o Unison


Vamos criar um diretório de teste para cada servidor para fins de teste. Comando para server1 :

sudo mkdir -p /data1

Para server2 :

sudo mkdir -p /data2

Em seguida, nos dois servidores, você deve alterar o nome do proprietário do diretório criado, caso contrário, o Unison não poderá escrever nada lá. Como proprietário, especifique o usuário que executará o comando Unison:

sudo chown -R $USER.$USER /data2

Faça o mesmo para o server1 :

sudo chown -R $USER.$USER /data1

Coloque alguns arquivos de teste em / data1 :

touch /data1/{test1,test2,test3}

Sincronizamos nossos diretórios com o seguinte comando (executando-o no servidor1 ):

unison /data1 ssh://192.168.1.19//data2

Como você está tentando sincronizar esses diretórios raiz pela primeira vez, você receberá um aviso de que a sincronização pode levar algum tempo (mas, no nosso caso, isso não acontecerá, pois adicionamos apenas três arquivos de teste do volume mínimo ao diretório). Se fosse um backup de produção, o primeiro lançamento poderia levar algum tempo.

Então beba chá da próxima vez. Enquanto isso, pressione Enter para iniciar o processo. Depois de fazer isso, você será solicitado a confirmar a sincronização de cada arquivo. Quando terminar, digite 'y' para continuar.

Como sincronizamos apenas três arquivos de teste, isso acontecerá muito rapidamente e você retornará ao shell bash. Para garantir que os arquivos estejam sincronizados, vá para o servidor2e digite o comando:

ls /data2

Além disso, o sistema relatará que nossos arquivos test1, test2 e test3 estão no diretório / data2 :



Conseguimos: O Unison sincronizou os dois diretórios.

Como iniciar o Unison sem a necessidade de interação do usuário


Eu acho que você não deseja confirmar constantemente a sincronização de cada arquivo de diretório toda vez que você inicia o Unison. Isso é especialmente irritante quando você sincroniza diretórios com um grande número de arquivos. Portanto, a automação é necessária. Vá para server1 e digite o comando:

nano ~/.unison/default.prf

Quando o arquivo de configuração for aberto para edição, adicione duas linhas:

auto=true
batch=true

Em seguida, salve e feche o arquivo.
Agora o Unison não vai incomodá-lo com ninharias. Mas isso não é tudo.

Como criar uma tarefa para o Cron Scheduler


Eu acho que você dificilmente deseja iniciar a sincronização manualmente, porque você pode cometer um erro em algum lugar ou, por exemplo, não levar em consideração a alteração na estrutura de diretórios nos servidores. Para configurar a automação, você precisa criar um trabalho cron para o server1 .
Vamos criar um script para iniciar a sincronização:

sudo nano /usr/local/bin/unisonsync

O seguinte deve ser adicionado a este arquivo:

#!/bin/bash/
unison /data1 ssh://192.168.1.19//data2

Em seguida, você precisa dar ao script o direito de executar:

sudo chmod ugo+x /usr/local/bin/unisonsync

Crie um trabalho para o Cron com o comando:

crontab -e

Depois desse tipo:

*/5 * * * * /usr/local/bin/unisonsync &> /dev/null

Agora a sincronização será iniciada automaticamente a cada 5 minutos.

Eu mostrei que o Unison facilita a sincronização de diretórios em dois servidores Linux. Você pode verificar isso adicionando arquivos aos diretórios de teste / data1 e / data2 correspondentes nos dois servidores. Depois de verificar se a sincronização funciona, você pode usá-la no modo de combate nos servidores de produção.



Como anúncio


A VDSina está sempre feliz em oferecer servidores confiáveis ​​para qualquer tarefa. Você tem acesso a uma grande variedade de sistemas operacionais para instalação automática; é possível instalar qualquer sistema operacional a partir de sua própria imagem , além de usar uma rede local de alta velocidade entre servidores no mesmo local.


All Articles