Quem nunca precisou de uma rotina de backup para automatizar sua tarefa e sobrar um tempo para bater um CSzinho estudar e aprimorar seus conhecimentos? Pois bem, recentemente precisava fazer backup de algumas bases em MySQL que estavam em um serviço de hospedagem remota Linux, mas não queria ter o trabalho de oreia maçante de ficar todo santo dia, ou semana, ou whatever retirando dumps de minhas bases, que diga-se de passagem são algumas. Portanto, para evitar a preguiça estafa, criei um script que automatiza isso para mim.
A idéia básica de seu funcionamento foi:
- Gerar dumps de todas as bases que eram para ser salvas;
- Condensá-los em um arquivo compactado;
- Enviar o arquivo compactado para uma conta de e-mail;
E é exatamente esta idéia que vim compartilhar com vocês, queridos colegas de profissão. Para chegar a minha tarefa final utilizei-me de algumas ferramentas. São elas:
- mysqldump;
- uuencode;
- sendmail;
- tar e gzip;
- cron;
Mãos à massa! Inicialmente utilizaremos o mysqldump para fazer os backups da base. Esse aplicativo basicamente salva um dump dos dados e estrutura de sua base, a sintaxe básica é:
mysqldump -u <usuario> -p <senha> <base_de_dados> > arquivo.sql
O parâmetro –u indica o usuário da base, seguido por –p indicando a senha e logo depois o nome da base que será feito o backup, redirecionando para um nome de arquivo onde ficará salvo o dump.
Agora iremos compactar o arquivo gerado para ser enviado via e-mail, para isso vamos usar o aplicativo tar seguido do aplicativo gzip. Utilizaremos desta forma porque no meu caso, serão gerados vários arquivos de backup e gostaria de enviá-los em apenas um compactado. Como o tar somente agrupa esses arquivos e não compacta, usaremos juntamente o gzip.
A vantagem é que podemos utilizar os dois em apenas uma linha de comando, utilizando a sintaxe:
tar -zcvf arquivoasergerado.tar.gz <arquivo1, arquivo2...>
Os arquivos já serão agrupados e compactados.
Agora que temos nosso arquivo com o backup compactado, precisamos enviar para o e-mail desejado. Isso é uma coisa bem simples, utilizaremos o aplicativo mail! A forma simples de se enviar um e-mail é:
mail -s “Assunto” [–c “emaildecopia”] <destinatario>
Mas, perai! E como eu envio um anexo? Ráá, ai que entra o aplicativo uuencode! Ele serve para converter binário para texto em um padrão aceitável para sistemas Unix. E para que isso? Para evitar que o arquivo se corrompa ao chegar ao destino, por diferenças em alguns caracteres como quebras de linhas, espaço e outras coisas que existem entre sistemas Unix e Windows. Então combinaremos o uuencode com o mail e enviaremos nosso e-mail com anexo:
uuencode nomedoarquivo.tar.gz nomedoarquivo.tar.gz | mail –s “Backup” admin@service.com.br
Não, o nome do arquivo repetir não é um erro, esta é a sintaxe. Portanto, finalizamos o backup e o envio do nosso arquivo. Tá! E como deixo isso automático e evito o trabalho repetitivo?
Agora temos que utilizar o agendador de tarefas CRON! Para editar o arquivo utilizamos o comando contrab –e. A sintaxe e ordem básica do parâmetros no arquivo é:
<minutos> <horas> <dia do mês> <mês> <dia da semana> [usuário] <comando>
Agora para finalizar nossa tarefa, criamos um script e agendamos para executar quando quisermos. Por exemplo, criamos um script que realiza nossa tarefa para ser executado toda segunda-feira às 07:00. No arquivo do cron ficaria:
0 7 * * * /home/admin/backup.sh
Supondo que nosso script de backup se chame backup.sh. Um exemplo simples desse script seria:
#!/bin/bash mysqldump -u user1 –psenha1 banco1 > arquivo1.sql mysqldump -u user2 –psenha2 banco2 > arquivo2.sql mysqldump -u user3 –psenha3 banco3 > arquivo3.sql tar –zcvf backup.tar.gz arquivo1.sql arquivo2.sql arquivo3.sql <a name="_GoBack"></a>uuencode backup.tar.gz backup.tar.gz | mail -s "Backup" sysadmin@admin.com
Galera então é isso, espero ter ajudado! Qualquer dúvida mandem aí nos comments..
Artigos relacionados:




![[REVIEW] Samsung Galaxy SIII](http://cpdd.com.br/wp-content/uploads/2012/05/destaqueGS3-50x50.png)

Pingback: Tweets that mention Envio de Backups MySQL por e-mail -- Topsy.com