9 de jun de 2010

Backup com rsync

Descomplique suas tarefas de backup usando rsync. Neste pequeno tutorial que fiz para minhas próprias "memórias", você conseguirá entender o processo do backup e no final poder fazer seus próprios scripts.

Por questão de "limpeza" do sistema, recomendo que seja criado um usuário específico para este fim, uma vez que backup é parte de uma política de segurança, este usuário deve portanto ser protegido e naturalmente você não quer que seja removido por acidente.

Para automatizar seu processo de backup, gere o par de chaves publicas pelo comando
ssh-keygen -t rsa 
, deixe tudo como padrão e no campo password pressione para ficar sem senha. Será criado um arquivo  
id_rsa.pub em /home/usuario/.ssh 
que deve ser copiado para a maquina remota, neste caso o servidor pelo comando :


usuario$ scp /home/usuario/.ss/ id_rsa.pub usuario@servidor:~

No servidor, adicione esta chave no arquivo
authorized_keys 
através do comando:

servidor$ cat  id_rsa.pub >> authorized_keys 
e remova o arquivo id_rsa.pub.
Feito isto, teste a conexão, fazendo um ssh para o servidor que deverá estabelecer a conexão sem solicitar a tradicional senha do ssh. Pronto, neste momento o acesso é autorizado. Falta agora fazer o rsync.


Fazendo o rsync sincronizar os diretórios alvos do backup:


É preciso definir pela natureza dos seus dados, qual será sua rotina e que tipos de dados devem ser copiados. Neste caso, estou espelhando todo um diretório remoto na máquina local e o comando para isso é muito simples, podendo ser criado um script igualmente simples. Eu prefiro sincronizar o diretório remoto inteiro e somente após isso, baseado neste diretório, criar outras rotinas diárias, mensais e anuais. Desta forma, evita-se tráfego e processamentos desnecessários no servidor.

Esta sincronização pode ser feito assim, considerando o diretorio dados no servidor:

rsync -Cravzp usuario@servidor:/dados/ dados/
A instrução -Cravzp indica as seguintes instruções ao rsync (vide mais informações man rsync):
-C auto-ignorar arquivos idênticos
-r copiar de forma recursiva
-a indica que estarão sendo copiados arquivos
-v modo verboso, mais informações da cópia
-z comprime os arquivos durante a cópia
-p indicador de progresso de cópia

Após devidamente testado seu backup agende sua rotina no crontab através do comando crontab -e 

05 02  * * * rsync -Cravzp suporte@192.168.1.2:/dirremoto/ local/
Referências: http://sial.org/howto/rsync/