você está aqui: Home  → Arquivo de Mensagens Programe sua mente para aprender inglês - ebook gratuito

Sincronizando servidores com RSYNC.

Colaboração: André Jaccon

Data de Publicação: 27 de Dezembro de 2004

Neste tutorial iremos mostrar um exemplo de como usar o rsync e o OpenSSH como ferramenta para sincronia de servidores.

A plataforma que estaremos usando como exemplo é a Gnu/Linux e a distribuição é a Debian Gnu/Linux 3.0 R2. O conteúdo a ser sincronizado será a pasta pública de um servidor Apache remoto.

1º) PASSO

Primeiramente iremos configurar o rsync e o servidor openssh em nosso servidor, para isso verifique a presença dos pacotes com o comando:

# dpkg -l rsync ssh

caso a saída seja:

ii ssh
ii rsync

Isto significa que os pacotes estão atualmente instalados em seu servidor, do contrário os pacotes poderão ser instalador com o comando apt-get usando os mirror que contenha o pacote requisitado. Um exemplo é o:

$ deb http://security.debian.org/ stable/updates main

depois use:

$ apt-get update ; apt-get install rsync ssh

2º) PASSO

O segundo passo consiste em criar as chaves RSA de 1024 bits que irão implementar o sistema de segurança em nosso sistema sem a necessidade de autênticação manual.

Para isso usaremos o comando ssh-keygen para gerar a chave pública RSA:

# ssh-keygen -t rsa -b 1024

É importante lembrar que para gerarmos uma chave que autêntique automaticamente devemos chamar o comando anterior e teclar enter em todas as questões feitas pelo ssh-keygen não preenchendo nenhum campo.

Feito isso será criado um arquivos dentro da pasta .ssh do usuário com o nome id_rsa.pub.

Copie esta chave para o outro servidor:

# scp ~admin/.ssh/id_rsa.pub admin@servidor-remoto:~admin/.ssh/

depois copie o conteúdo da chave RSA para dentro do arquivo authorized_key remoto:

# ssh admin@servidor-remoto 'cat ~admin/.ssh/id_rsa.pub >> ~admin/.ssh/authorized_key'

Reinicie o servidor remoto caso não funcionar na primeira vez.

3º) PASSO

O terceiro passo consiste em verificar as permissões para que o usuário admin consiga autenticar e executar as tarefas de cópia em nosso servidor.

Primeiramente sugiro que seja criado um usuário admin e que este usuário seja adicionado aos grupos dos quais os volumes serão copiados.

Exemplo



# adduser admin, depois verifique as entradas de permissionamento em seu servidor para os volumes que serão sincronizados.

No exemplo a seguir, sincronizaremos todas as pastas públicas de um servidor Apache remoto para nosso servidor copiando os arquivos para a pasta local /WWW-BAK. Para isso escreveremos um script que rodará na máquina local com o seguinte conteúdo:

#!/bin/sh
#
DATA=``date +%d-%m-%Y``
INIT_TIME=``date +%H:%M``
END_TIME=``date +%H:%M``

echo "Iniciando backup do dia $DATA em: $INIT_TIME" > REPORT-$DATA.log
rsync -Cravz --progress --partial --delete-excluded admin@servidor-remoto:/var/www /WWW-BAK
echo "Finalizando o backup em: $END_TIME" >> REPORT-$DATA.log

Salve o script com o nome sincronia-apache.sh na pasta /root/admin/

4º) PASSO

Criaremos agora um rotina no crontab que será executada todos os dias as 0:00 horas. O script será executado e sincronizará nosso conteúdo remoto do servidor Apache.

# crontab -e
0 0 * * * sh /root/admin/sincronia-apache.sh

Salve a rotina e saia do aplicativo.

Com isso você terá um sistema simples de sincronia segura de conteúdo entre servidores usando a ferramenta rsync e openssh.



Veja a relação completa dos artigos de André Jaccon