Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Virtualização XEN

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

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

* Será importante lembrar que para gerarmos uma chave que autêntique automáticamente 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 está chave para o outro servidor; uma dica seria o comando scp:

  # 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; uma dica seria:

  # 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 autênticar 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 nos grupos dos quais os volumes serão copiados.

Ex:

  # 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 em 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 todos os dias as 0:00 horas o script será executado e assim irá 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.

Caso queira um script mais robusto que crie logs diários e ainda notifica via e-mail sobre a rotina de sincronia baixe o script que escrevi em:

http://fsbox.org/repositorio/scripts/shell/sync-server.tar.gz

a instalação se dá através do script install.sh e a documentação poderá ser verificada no documento INSTALL.

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

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.02/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (538 votos)

Opinião dos Leitores

Cesar winter
19 Nov 2009, 15:35
Olá fiz um servidor de backup com o rsync, só que meu disco está com pouco espaço disponível, como faço para continuar em outro hd sem que o sync traga os arguivo todos de novo.
Edin R. Ribeiro
16 Jan 2009, 11:21
Pessoal:
Muito útil o script, porém tive que fazer algumas modificações no script para um melhor acompanhamento do log. Tive que tirar também as duas aspas simples e deixar apenas uma...

#!/bin/sh
DATA=`date +%d-%m-%Y`
INIT_TIME=`date +%H:%M:%S`
echo "Iniciando backup do dia $DATA em: $INIT_TIME" >> Registro-backup.log
rsync -Cravz --progress --partial --delete-excluded admin@servidor-remoto:/var/www /WWW-BAK

END_TIME=`date +%H:%M:%S`
echo "Finalizando o backup em: $END_TIME" >> Registro-backup.log
Magnun
07 Mar 2008, 16:03
Valeu pelo tutorial cara! Ajudou bastante... só informando duas coisas pra quem vier a utiliza-lo:
1. É melhor utilizar o comando ssh-keygen -t dsa -f ~/.ssh/id_dsa uma vez q o dsa é pro ssh2 enquanto o rsa é do ssh1;
2. o arquivo ~admin/.ssh/authorized_key esta escrito errado. O correto seria ~admin/.ssh/authorized_keys

Só estou informando pq isso me rendeu mais de uma hora de dor de cabeça aqui! e não quero que outras pessoas passem pela mesma coisa...
Valeu pela ajuda...
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Faça o download gratuito da 10ª Edição da Broffice.ORG Zine
Submarino.com.br
Informática - Submarino.com.br