você está aqui: Home → Colunistas → Segredos do Google
Usando o espaço do gmail para backup
Colaboração: Ronaldo Toledo Morais
Data de Publicação: 18 de Dezembro de 2008
Tenho vários clientes que usam máquinas Linux servindo de firewall, proxies, vpn, etc....
Alguma vezes acontece alguma falha devido a problemas de energia elétrica, sobrecargas, etc, e aparece a necessidade de reinstalar e reconfigurar o sistema.
Surge aí a necessidade de um backup com todas as configurações que permita ganhar um bom tempo e colocar novamente disponível os serviços interrompidos.
Bem, backups na mesma máquina não são seguros, podem também ir para o espaço. Backups em outras máquinas da mesma rede também correm o risco de ir para o espaço caso uma sobrecarga corra pelo cabo de rede.
O ideal mesmo é um backup que fique armazenado fora do local fisico da empresa e que garantidamente contenha sempre tudo o que for necessário para reconstituir os serviços.
O gmail vem mesmo a calhar. Tem espaço mais que suficiente para armazenar os backups de várias instalações e, até então, tem se mostrado muito seguro, nunca perdi nada que estivesse ali armazenado.
Como é feito o backup?
O cron inicia o serviço todos os dias, executa um script em perl que gera um tar.gz do diretório de backup e o compara com o último, se encontrada alguma diferença o archive é então encriptado e enviado ao gmail. O script de qualquer forma envia uma cópia ao gmail aos sábados.
Observações:
- O diretório de backups(/usr/local/backups) é uma pasta onde há apenas links para diretórios e arquivos que devem ser incluídos no backup.
- deve conter um arquivo com o nome excludefiles com o conteudo "anterior" que é o nome do subdiretório que conterá sempre o último archive criado e que não deve ser considerado na criação do novo archive.
- Esta pasta /usr/local/backups deve ter permissão (700) de leitura e escrita apenas para o root, uma vez que poderá conter informações sensíveis, costumo colocar nela um link para /etc/shadow)
- o script de backup (/usr/local/bin/backup.pl) deve ter permissão de leitura apenas pelo root pois conterá o usuário e senha do account no google e também a senha de encriptação.
- o script faz uso do pacote sendEmail e http://linux.softpedia.com/get/Communications/Email/SendEmail-12990.shtml e openssl
- o pacote sendemail faz uso dos módulos perl Net-SSLeay e IO-Socket-SSL que podem ser baixados de www.cpan.org
Abaixo vai uma amostra do que coloco na pasta /usr/local/backups
drwxr-xr-x 2 root root 4096 2008-11-25 03:38 anterior lrwxrwxrwx 1 root root 14 2008-11-25 03:31 binlocal -> /usr/local/bin drwxr-xr-x 3 root root 4096 2007-05-09 14:23 certificados lrwxrwxrwx 1 root root 29 2008-11-25 03:35 crontab -> /var/spool/cron/crontabs/root lrwxrwxrwx 1 root root 27 2008-11-25 03:30 ddclient.conf -> /etc/ddclient/ddclient.conf lrwxrwxrwx 1 root root 14 2008-11-25 03:32 etclocal -> /usr/local/etc -rw-r--r-- 1 root root 9 2008-11-25 03:37 excludefiles lrwxrwxrwx 1 root root 11 2008-12-06 03:12 passwd -> /etc/passwd lrwxrwxrwx 1 root root 21 2008-11-25 03:33 rc.firewall -> /etc/rc.d/rc.firewall lrwxrwxrwx 1 root root 18 2008-11-25 03:33 rc.local -> /etc/rc.d/rc.local lrwxrwxrwx 1 root root 11 2008-12-06 03:12 shadow -> /etc/shadow lrwxrwxrwx 1 root root 31 2008-11-25 03:35 squid.conf -> /usr/local/squid/etc/squid.conf
Abaixo vai o script devidamente comentado.
#!/usr/bin/perl
chdir "/usr/local/backup";
`mkdir anterior` if not -d "anterior";
`touch excludefiles` if not -e "excludefiles";
$cliente = $ARGV[0]; # parametro passado ao script(identifica o backup)
`rm anterior/*`;
chomp($ultimo = `ls -1 *.bz2`);
`mv $cliente*.bz2 anterior/`;
chomp($timestamp = `date +"%Y%m%d-%H%M"`);
chomp($today = `date +"%a"`);
`tar --exclude-from excludefiles -chPvjf $cliente-backup-$timestamp.tar.bz2 * > listbackup-$cliente-$timestamp`;
# atençao à opção -h para que os links sejam seguidos ao invés de apenas copiados.
$diffs = "*"; #forcamos este flag para nao ficarmos sem backup (caso não exista nada em anterior)
chomp($diffs = `diff $cliente-backup-$timestamp.tar.bz2 anterior/$ultimo`) if $ultimo ne "";
`openssl enc -e -a -salt -bf -in $cliente-backup-$timestamp.tar.bz2 -out $cliente-backup-$timestamp.tar.bz2.cript -k senha-de-encriptação `;
`echo "************************************" >> listbackup-$cliente-$timestamp`;
`echo "para descriptografar este tarfile use o comando" >> listbackup-$cliente-$timestamp`;
`echo "openssl enc -d -a -salt -bf -in nomearqcripto -out arqdecripto" >> listbackup-$cliente-$timestamp`;
`echo "************************************" >> listbackup-$cliente-$timestamp`;
do {
system("echo backup iniciado as $timestamp nao enviado ao gmail, sem modificacoes >> /var/log/log.backup") ;
`rm anterior/*`; # e limpamos a pasta de backups anteriores,pode haver lixo acumulado la
`rm listbackup*`;
`rm *backup*cript`;
exit;
} if $diffs eq "" and ($today ne "Sat" and $today ne "Sab");
system("echo backup iniciado as $timestamp | /usr/local/bin/sendEmail -u Backup $cliente $timestamp -xu conta-no-gmail -xp senha-no-gmail -o tls=auto -s smtp.gmail.com:587 -t conta-no-gmail -a listbackup-$cliente-$timestamp $cliente-backup-$timestamp.tar.bz2.cript -f conta-no-gmail");
system("echo erro ao enviar backup iniciado as $timestamp >> /var/log/log.backup") if $?;
system("echo backup enviado ok ao gmail as $timestamp >> /var/log/log.backup") if not $?;
`rm listbackup*`;
`rm *backup*cript`;
Este script foi evoluindo de acordo com as necessidades e, claro, pode ser melhorado tremendamente.
Para se manter atualizado sobre as novidades desta coluna, consulte sempre o newsfeed RSS
Para saber mais sobre RSS, leia o artigo O Padrão RSS - A luz no fim do túnel.
Opinião dos Leitores
15 Jan 2009, 01:48
Jota,
www.detudoprabaixar.org
O seu portal de Downloads
20 Dez 2008, 17:46
Não se esqueça de remover os arquivos que ficaram em /usr/local/backup cujos nomes se iniciam com um hifen, ok?
20 Dez 2008, 05:41
Vc deve ter executado o script sem passar um parâmetro para ele, um codigo qualquer que o identifique(por exemplo, o nome da empresa)
Este parametro pode, é claro, ser suprimido e substituido dentro do script por uma constante. No meu caso é necessário porque uso o script em várias empresas. OK?
Um abraço.
19 Dez 2008, 11:13
Me interessei por ele e pretendo implementar aki na empresa.
Só que estou me deparando com alguns erros.
um eu acho q resolvi:
chdir "/usr/local/backup";
só q vc pede para criar o diretório backups, isso eu mudei no meu, blz.
os arquivos q ele cria começar com um hífem daí nem envia o email.
LOG (erros):
rm: imposível remover `anterior/*': Arquivo ou diretório não encontrado
ls: opção inválida -- -
Tente `ls --help' para mais informação.
mv: opção inválida -- a
Tente `mv --help' para mais informação.
tar: ackup-20081219-1101.tar.bz2: Fator de blocagem inválido
Try `tar --help' or `tar --usage' for more information.
-backup-20081219-1105.tar.bz2: No such file or directory
20465:error:02001002:system library:fopen:No such file or directory:bss_file.c:352:fopen('-backup-20081219-1105.tar.bz2','r')
20465:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
Dec 19 11:05:52 efsm sendEmail[20472]: Error: "-backup-20081219-1105.tar.bz2.cript" is not a recognized option!
Artigos Publicados
- Backup de mensagens armazenadas no Gmail
09/06/2009 - Google Similar Images
19/05/2009 - Convertendo valores de moedas pelo Google
17/04/2009 - Usando o espaço do gmail para backup
18/12/2008 - Crie a sua própria Meta Search Engine - Google CSE
29/08/2008 - Mais segurança no GMail
15/07/2008 - Google, logo existo
13/05/2008 - Google & Busca Universal
12/05/2008 - Novos recursos de visualização de dados
03/12/2007 - Calculando áreas nos mapas do Google Earth com uma mãozinha do GIMP
20/11/2007 - Liberando espaço no Gmail
19/11/2007 - Buscas refinadas com o Google
15/11/2007 - Dica para encontrar MP3 usando o Google
08/11/2007 - O Bom Humor do Google
06/11/2007 - O significado da vida
23/10/2007 - Google Asshole Index
12/10/2007 - Busca no Google por tipo de arquivo
23/08/2007 - Dicas de busca com Google
22/05/2007 - Google Command Line
14/05/2007 - Google Talk direto no navegador
29/04/2007 - Google Summer of Code 2007
20/03/2007 - Web 2.0 permite configurar a página do Google.
16/12/2006 - Pesquisa e Leitura de Livros no Google
04/12/2006 - Google oferece serviço de busca de linguagem de programação
03/11/2006 - Buscando Arquivos com Google.com
19/10/2006 - Planilha Eletrônica no Google
20/09/2006 - Google - Hospedando os emails do seu domínio sem custo
12/09/2006 - Google Pages
10/09/2006 - books.google.com
03/09/2006 - Google disponibiliza livros completos para download
31/08/2006 - Google Notebook
13/08/2006 - Google ToolBar
23/07/2006 - Google Earth para Linux
07/07/2006 - Google na Dicas-L
05/07/2006 - Eventos do Google Calendar no Web Clips do Gmail.
19/04/2006 - Usando metodos Track para o Googlebot
14/04/2006 - Mais dicas do Google
12/03/2006 - Dicas sobre o Google
05/03/2006 - Guia do Google
26/11/2005 - Subdominios Google
10/11/2005 - Google e RSS
05/10/2005 - Incremente seu site com o Google Maps.
06/09/2005 - Encontrando livros no Google
03/08/2005 - Google Maps e Google Earth
07/29/2005 - Conversão de Formatos no Google
14/07/2005 - Google acha arquivos pra você
19/06/2005 - XtraGoogle
23/03/2005 - Google - Buscas mais populares
13/03/2005 - Google Definitions
20/08/2004 - Google Blogspace
06/06/2004 - Personalizando suas buscas no Google por meio do Mozilla
20/05/2004 - Dicas Google
26/04/2004 - Google News Alerts
08/04/2004 - Google - Busca na Web
16/02/2004 - Google - Alternativas pouco conhecidas (mas muito úteis)
13/02/2004 - Calculadora Google
19/08/2003 - Busca com Google no seu site
27/06/2003 - Google - Configuração de Resultados
03/01/2003 - Google - Número de Resultados
09/12/2002 - Google - Buscas Linux
03/01/2002 - Google News
22/10/2002 - Google Killer
09/04/2002 - Logo do Google
21/03/2002 - Ícones para seu Website - Busca com Google
02/01/2002 - Google - 20 anos de usenet online...
19/12/2002 - Google e Linux
06/11/2001 - Acrescente Buscas com Google ao seu site
05/07/2001 - Novo Mecanismo de Busca - Google
24/08/1998














