http://hachid.wordpress.com/2007/05/21/solucao-de-backup-para-servidores-windows-linux-bsds/


Solução de backup para servidores Windows, Linux & BSD’s.

Um administrador de sistema muitas vezes se depara em unificar um método para fazer os backups de seus servidores, principalmente se eles forem de ambientes mistos (por exemplo, Windows & Linux – o mais comum).

Este tutorial não é específico para servidores. Pode ser utilizado para fazer backup de estações Windows (9x/NT/2000/XP), Linux e BSD’s (FreeBSD, OpenBSD, NetBSD).

Neste pequeno tutorial, pretendo mostrar como é fácil criar uma rotina de backup homogênea e simples para facilitar a vida de muitos administradores de sistema.

O que você vai precisar:

  • Servidor(es) Windows NT4/2000/2003;
  • Servidor(es) Linux (qualquer distribuição);
  • Servidor(es) BSD’s (FreeBSD, OpenBSD, NetBSD);
  • cwRsyncServer (para servidores Windows);
  • rSync (para servidores Linux);
  • Script para o backup;
  • Dispositivo de armazenamento (neste tutorial utilizaremos o hd de nosso servidor encarregado dos backups).

[ editar]

Download e Instalação do cwRSyncServer:

O primeiro passo é baixar o cwRsyncServer ( http://www.itefix.no/phpws/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=6&MMN_position=23:23). Sua instalação segue o padrão de instalação de qualquer aplicação Windows (Next-Next-Finish :) ).

Apenas um detalhe: Durante a instalação, será exibida um quadro informando a senha utilizada para o serviço criado do cwRsyncServer. Anote-a e guarde-a em local seguro caso precise dela em algum momento.

Obs: Esta senha é aleatória e difere em cada instalação do cwRSyncServer.

A Configuração do cwRSyncServer:

No diretório onde foi instalado o cwRSyncServer, você encontrará o arquivo rsyncd.conf. Basta modificar o arquivo para atender as suas necessidades e iniciar/reiniciar o serviço do cwRSyncServer.

Para maiores detalhes sobre os parâmetros a serem utilizados no arquivo de configurações do rsync, consulte a página man do rsync, disponível em http://rsync.samba.org/documentation.html.

Exemplo do rsyncd.conf:

Abaixo, temos um exemplo de configuração do cwRSyncServer.

use chroot = false
strict modes = false
hosts allow = 172.30.31.253/255.255.255.255 127.0.0.1/255.255.255.0
log file =
rsyncd.log
pid file = rsyncd.pid
[Compartilhamentos]
path = /cygdrive/c/Compartilhamentos
comment = Documentos
read only = true
transfer logging = no

Obs.: Note que no path temos “/cygdrive/” antes de c/Compartilhamentos. Esta é a convenção utilizada pela cygwin (http://www.cygwin.com ).

RSync:

Geralmente, nas distribuições Linux você já pode encontrar pré-instalado o rsync. Assim como fizemos no cwRSyncServer, você deverá editar o arquivo rsyncd.conf. Este arquivo tem sua localização variada, dependendo da distribuição Linux/BSD utilizada. Na maioria dos casos está localizada no /etc. Caso esteja em outra localização, consulte a documentação do rsync (man rsynd.conf ou man rsync).

Juntando tudo

Agora que você já tem o rsync / cwRSyncServer instalado e configurado nos equipamentos que sofrerão backup, basta criar um script para fazer o backup e agendar no cron.

Eis um exemplo de script para backup de várias máquinas:

#!/bin/bash
#
# backup.sh
#
# Faz o backup dos servidores da rede, criando um subdiretório para cada
# um dos diretórios exportados via rSync.
#
# Autor: Luis Fernando Kieça
# Criado em: 14/10/04

# Última modificação em: 14/10/05
#

BACKUP_DIR='/mnt/hdc1/backup'
BACKUP_SERVERS='172.30.31.250 172.30.31.251 172.30.31.252
172.30.31.253
172.30.31.254

for SERVER in ${BACKUP_SERVERS}; do
# cria o diretório do backup se não existir
if [ ! -d ${BACKUP_DIR}/${SERVER} ]; then
mkdir ${BACKUP_DIR}/${SERVER}
fi

# entra no diretório do servidor correspondente

cd ${BACKUP_DIR}/${SERVER}

# descobre os diretórios exportados
SHARES=`rsync ${SERVER}:: | awk ‘{ print $1 }’
for SHARE in $SHARES; do
# Cria o diretório para cada compartilhamento (se não existir) e entra nele.

if [ ! -d ${BACKUP_DIR}/${SERVER}/${SHARE} ]; then
mkdir ${BACKUP_DIR}/${SERVER}/${SHARE}
fi
cd ${BACKUP_DIR}/${SERVER}/${SHARE}

#Faz o backup do compartilhamento
rsync -vurgoapl –delete-excluded${SERVER}::${SHARE} .

done
done

Obs.: Não esqueça de colocar a permissão para execução no script. :)

Agora, com o script criado, basta agendar a tarefa no crontab (ou no próprio agendador de tarefas do Windows).

Considerações finais:

Num primeiro momento, puxo todos os arquivos para o disco rígido do servidor encarregado do backup. Após isto ter sido concluído, efetuo a cópia em meio removível. Desta maneira, o servidor não demora para executar os backup diários (incrementais+diferenciais). Será demorado apenas na sua primeira execução (a máquina que conterá os arquivos precisará ter uma cópia de tudo o que possui nas demais máquinas).

Algumas coisas para se implementar nesta rotina:

  • Segurança (esta rotina não utiliza-se de nenhuma validação de usuário/senha)
  • Criptografia (os dados trafegam sem criptografia)
  • Compressão (para não congestionar sua rede e poder executar o script nos horários de expediente e possuir mais de um backup por dia)
  • Retorno do backup (pode-se exportar o diretório onde acontecem os backups via samba para que esteja disponível facilmente via rede ao retornar os arquivos.

Mas estes dois itens, eu deixo para você, leitor, implementar em seus servidores…