São muitos os scripts de backup existentes hoje na Internet para o fim de agilizar e automatizar esse importante e muitas vezes esquecido item de Segurança da Informação. Mas poucos se preocupam em como esses dados serão enviados, podendo criar mais problemas do que solução.
Finalmente vamos ao famoso backup, para tal criei um script em shell, já mais elaborado que o primeiro, que fará essa tarefa pra gente. Segue o código, defina o nome de backup_geral.sh:
#!/bin/bash
###########################
# BACKUP GERAL COM SSH/SCP #
# Carlos Vinícius Braga dos Santos #
# msn: slaypher.code@hotmail.com #
# email: slaypher.code@gmail.com #
#########################
if [ $# -eq 0 ]; then
echo
echo "Nenhum diretório especificado."
echo "Usar: $0 DIR1 [DIR2] [DIR3] ..."
echo
exit 1
fi
echo
for i in $*; do
if [ -d $i ]; then
echo -n "Compactando o diretório: \"$i\" ... "
tar -czf BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz $i
echo "Concluido!"
else
echo "O parâmetro \"$i\" não e um diretório ou não foi encontrado."
fi
done
sleep 1
echo
for i in $*; do
if [ $(du BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz | cut -f1) -gt 10000 ]; then
echo -n "Quebrando BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz em pedacos de 10MB ... "
split -b 10m BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz.
echo "Concluido!"
fi
done
sleep 1
echo
for i in $*; do
if [ $(du BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz | cut -f1) -le 10000 ]; then
echo -n "Enviando o anexo: BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz ... "
scp -P $PORTA BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz $USUARIO@$SERVIDOR:$DIRETORIO
echo "Concluido!"
rm BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz
else
for j in `ls BKP_$(basename $i)_$(date +%Y_D%d_M%m).tar.gz.*` ; do
rm BKP_`basename $i`_`date +%Y_D%d_M%m`.tar.gz 2>/dev/null >/dev/null
echo -n "Enviando o anexo: $j ... "
scp -P $PORTA $j $USUARIO@$SERVIDOR:$DIRETORIO
echo "Concluido!"
rm $j
done
fi
done
echo
echo "BACKUP CONCLUIDO!"
echo
Como essa belezura funciona? Simples, devem ser especificados quais diretórios deverão ser "backupeados", lembre-se diretórios somente.
A partir daí ele irá compactar usando o comando tar e gzip como parâmetro, depois verificará se o tamanho do backup gerado é maior que 10MB, se for ele quebra em partes de 10MB usando o split que poderá ser montado facilmente com o comando cat.
Após quebrar o arquivo, se necessário claro, ele começa a enviar usando o scp direto para o servidor e diretório que foram especificados nas variáveis do script logo no inicio. Depois de tudo pronto, apaga os arquivos criados e finaliza o script.
Vale lembrar que os valores do tamanho a ser rateado o arquivo pode ser alterado se for essa a sua vontade, de 10MB para o valor que achar melhor.
Mas lembrando do início, ele não pode enviar sem especificar uma senha, por isso, devemos usar o comando ssh-keygen para gerar uma chave pública que possamos enviar ao servidor e dizer que o nosso host é confiável. Para tal, use o comando:
[1] Comentário enviado por mbsalgueiro em 29/05/2007 - 10:24h
Cara parabens pelo artigo! Gostei d+ q vou comecar a usa-lo no servidor aqui q dou suporte! =)
So me tira uma duvida eu quero aumentar o tamanho do bk eu mudo essas duas linhas neh?
[2] Comentário enviado por slaypher em 29/05/2007 - 23:30h
Olá,
Desculpe a demora para responder, e espero que o artigo junto com o script venha a ser muito útil para você.
Mas respondendo sua questão, você pode também alterar apenas os valores, caso queira um volume maior na quebra, por exemplo 50MB, basta alterar os valores para a sua necessidade ou comentar a parte da quebra dos pacotes.