script para backups – parte 2
Add comment setembro 2nd, 2007
Num post anterior eu mostrei um script genérico para realização dos backups de projetos, mas que é flexível pois permite a personalização das informações que se deseja backupear em cada projeto, a partir de arquivos de configurações.
Neste post faremos algumas pequenas modificações nele e configuraremos o agendamento para que o backup seja feito automaticamente.
As modificações consistem em remover as mensagens e diálogos gerados pelo kdialog e outras simplificações.
O novo script ficará assim:
backup.sh
-
#!/bin/bash
-
############################################
-
# backup de projetos
-
# deve ser usado em conjuto com algum arquivo de
-
# definicoes de backup
-
# por Paulo Cordeiro (paulo@link3.com.br)
-
# 02/09/2007
-
# versao 1.2
-
############################################
-
-
if [ "$#" -eq 0 -o ! -e "$1" ];
-
then
-
echo "execute: backup.sh arqConfig.bpk"
-
exit 2
-
else
-
defBackup=$1
-
fi
-
-
projeto=$(cat $defBackup | grep projetoNome | cut -d "=" -f 2)
-
descricao=$(cat $defBackup | grep descricao | cut -d "=" -f 2)
-
fonte=$(cat $defBackup | grep fonte | cut -d "=" -f 2)
-
destino=$(cat $defBackup | grep destino | cut -d "=" -f 2)
-
pastasPorData=$(cat $defBackup | grep pastasPorData | cut -d "=" -f 2)
-
data=$(date +%Y%m%d-%H%M%S)
-
includefile=$(mktemp /tmp/$projeto.in.XXXXXX)
-
excluirfile=$(mktemp /tmp/$projeto.ex.XXXXXX)
-
-
if [ "$pastasPorData" == "sim" ]
-
then
-
destino="$destino/$projeto/$(date +%Y)/$(date +%B)/$(date +%d)"
-
else
-
destino=$destino/$projeto
-
fi
-
backup_name=$destino/$projeto-$data.tar.gz
-
-
cd $fonte
-
-
for infile in $(sed '/incluir-ini/,/incluir-fim/! d; ' $defBackup | sed '1d;$d')
-
do
-
echo $infile>> $includefile
-
done
-
-
sed '/excluir-ini/,/excluir-fim/! d; ' $defBackup | sed '1d;$d'> $excluirfile
-
mkdir "$destino" -p
-
tar -cvzf $backup_name --exclude-from=$excluirfile $(cat $includefile)> /dev/null
-
-
rm $includefile
-
rm $excluirfile
-
echo $backup_name
-
exit 0
crie também esse pequeno script que será usado no agendamento:
agendamento.sh
-
#!/bin/bash
-
############################################
-
# agendamento de backups
-
# por Paulo Cordeiro (paulo@link3.com.br)
-
# 02/09/2007
-
# versao 1.0
-
############################################
-
-
arqConfig=arqConfiguracao.bkp
-
servidor=server
-
usuario=user
-
pastaRemota=/backups
-
# gera o backup
-
backupGerado=$(dpbackupAgendamento $arqConfig)
-
-
# tranfere para servidor remoto
-
scp -p $backupGerado $usuario@$servidor:$pastaRemota
-
-
exit 0
É importante observar é que o comando scp faz a transferência do arquivo de forma segura por SSH. Para que ele não solicite a senha durante a transferência é preciso que previamente você gere um par de chaves com o ssh-keygen e exporte-a para o servidor. Veja como fazer isso em http://freebsd.ag.com.br/sessao10_7.html
Por fim registre o agendamento no cron. Digite "crontab -e " e adicione as linhas abaixo:
-
# agendamentoBackup
-
0 13 * * * agendamento.sh
Pronto, seu backup será feito todos os dias às 13h00.