Archive for setembro, 2007

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

  1. #!/bin/bash
  2. ############################################
  3. # backup de projetos
  4. # deve ser usado em conjuto com algum arquivo de
  5. # definicoes de backup
  6. # por Paulo Cordeiro (paulo@link3.com.br)
  7. # 02/09/2007
  8. # versao 1.2
  9. ############################################
  10.  
  11. if [ "$#" -eq 0 -o ! -e "$1" ];
  12. then
  13. echo "execute: backup.sh arqConfig.bpk"
  14. exit 2
  15. else
  16. defBackup=$1
  17. fi
  18.  
  19. projeto=$(cat $defBackup | grep projetoNome | cut -d "=" -f 2)
  20. descricao=$(cat $defBackup | grep descricao | cut -d "=" -f 2)
  21. fonte=$(cat $defBackup | grep fonte | cut -d "=" -f 2)
  22. destino=$(cat $defBackup | grep destino | cut -d "=" -f 2)
  23. pastasPorData=$(cat $defBackup | grep pastasPorData | cut -d "=" -f 2)
  24. data=$(date +%Y%m%d-%H%M%S)
  25. includefile=$(mktemp /tmp/$projeto.in.XXXXXX)
  26. excluirfile=$(mktemp /tmp/$projeto.ex.XXXXXX)
  27.  
  28. if [ "$pastasPorData" == "sim" ]
  29. then
  30. destino="$destino/$projeto/$(date +%Y)/$(date +%B)/$(date +%d)"
  31. else
  32. destino=$destino/$projeto
  33. fi
  34. backup_name=$destino/$projeto-$data.tar.gz
  35.  
  36. cd $fonte
  37.  
  38. for infile in $(sed '/incluir-ini/,/incluir-fim/! d; ' $defBackup | sed '1d;$d')
  39. do
  40. echo $infile>> $includefile
  41. done
  42.  
  43. sed '/excluir-ini/,/excluir-fim/! d; ' $defBackup | sed '1d;$d'> $excluirfile
  44. mkdir "$destino" -p
  45. tar -cvzf $backup_name --exclude-from=$excluirfile $(cat $includefile)> /dev/null
  46.  
  47. rm $includefile
  48. rm $excluirfile
  49. echo $backup_name
  50. exit 0

crie também esse pequeno script que será usado no agendamento:

agendamento.sh

  1. #!/bin/bash
  2. ############################################
  3. # agendamento de backups
  4. # por Paulo Cordeiro (paulo@link3.com.br)
  5. # 02/09/2007
  6. # versao 1.0
  7. ############################################
  8.  
  9. arqConfig=arqConfiguracao.bkp
  10. servidor=server
  11. usuario=user
  12. pastaRemota=/backups
  13. # gera o backup
  14. backupGerado=$(dpbackupAgendamento $arqConfig)
  15.  
  16. # tranfere para servidor remoto
  17. scp -p $backupGerado $usuario@$servidor:$pastaRemota
  18.  
  19. 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:

  1. # agendamentoBackup
  2. 0 13 * * *    agendamento.sh

Pronto, seu backup será feito todos os dias às 13h00.


Pesquisa

Calendário

setembro 2007
D S T Q Q S S
« jul   set »
 1
2345678
9101112131415
16171819202122
23242526272829
30