30 jun 06

Tive recentemente a necessidade de configurar algumas máquinas para efetuar a sincronia de uma determinada pasta com outras máquinas e para isso usei o Rsync.

Para quem nao conhece o Rsync é um programa feito pelo mesmo criador do Samba e permite que se faça uma sincronia entre duas ou mais máquinas de forma que possamos copiar todos os arquivos da primeira vez e depois somente os arquivos inexistentes e os que foram modificados.

Isto é excelente, pois nos permite manter duas bases grandes sincronizadas sem que seja necessário transferir todo o conteudo a cada vez que a replicação é feita, diminuindo o tempo de replicação e a banda da rede.

O Rsync te possibilita trabalhar como um daemon standalone ou via inetd || xinetd e para isso se faz necessário configurar o arquivo /etc/rsyncd.conf, criar um usuario para replicação e colocar a senha em /etc/rsync.secrets, mas não acho que é a melhor forma pois dependemos do daemon e se este cair por algum motivo ou se a maquina for reiniciada e esquecermos de levantar o processo a replicação para e daí já era …

A melhor forma é fazermos via Tunelamento utilizando o SSH, assim a senha não passa entre as máquinas em formato texto plano e não precisamos de um daemon (rsyncd) rodando, mas como tudo na vida isto tem um porém: a tranfência se dá na velocidade de um SCP e não de um FTP (como no primeiro modo), pois os dados são tunelados pelo SSH, mas como iremos trasnferir somente o que foi alterado, vale a pena.

Vamos lá:
Crie um usuario e um grupo para a sincronia nas duas maquinas:

#> groupadd “nome-do-grupo”
#> useradd -g “nome-do-grupo” -d /home/”nome-do-user” “nome-do-user”
#> passwd “nome-do-user”

Na pasta que será sincronizada (nas duas maquinas) mude o grupo para o grupo do usuario e de permissao de leitura para ele (recursiva):

#> chgrp -R “nome-do-grupo” “pasta-da-sincronia”

Agora eleja uma das maquinas, normalmente a que é de desenvolvimento ou a de backup, para rodar o Script de Sincronia via Cron e de os comandos abaixo como sendo o usuario que fará a sincronia.

#> ssh-keygen -t dsa -f ~/.ssh/login_dsa

Após este comando ele solicitará que entre com a sua “passphrase” e você deve deixar em branco … não digite nada … caso contrário será necessário digitar uma senha para o Script funcionar.

#> cat ~/.ssh/login_dsa.pub | ssh nome-do-user@IP-da-outra-maquina ‘cat – >> ~/.ssh/authorized_keys’

Irá exportar sua chave pública para a outra máquina, pois o tipo de criptografia escolhida foi DSA (de chaves pública e privada).

#> cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

Insere sua chave pública no seu chaveiro.
OK…
A partir deste ponto já é possivel fazer ssh sem senha, pode testar!!
Agora crie o Script que vai para o Cron. Abaixo tem um exemplo de um que uso:

Script:
##################################################
## Leandro Godoy
## Inicio da Copia Completa!!
## Data: 30/06/06
LOG=”/home/usuario/Scripts/log.rsync”

echo “Inicio da copia via rsync!!” > $LOG
date >> $LOG
echo “=====================================” >> $LOG

rsync -avz usuario@IP:Pasta-Origem/ /Pasta-Destino/ >> $LOG

echo “=====================================” >> $LOG
echo “Fim” >> $LOG
date >> $LOG
##################################################

Agora basta colocar no Cron. Abaixo tem exemplo de entrada para rodar o Script a cada 5 minutos.

Cron:
0-59/5 * * * 1-5 /home/usuario/Scripts/replica_rsync.sh

NO MAC:

Aqui vai um link interessante de como fazer backup no Mac via Rsync;

Abraços


Filed under: Dica,Gnu/Linux,Security

Trackback Uri


3 Comentários.



Deixe um comentário