Depois de publicar o artigo de backup online com o probkup em windows, algumas pessoas me questionaram como ficaria o script em Linux ou Unix.
Então, converti o script para o que segue abaixo. Testei-o em Linux, porém deverá funcionar para qualquer Unix também.
Lembrando que o comportamento do Progress OpenEdge, assim como os comandos utilizados, são iguais para qualquer ambiente.
Da mesma forma que o ambiente Windows, optei por varrer todos os bancos para executar o script de backup ao mesmo tempo.
| [backup-tudo.sh] |
| for banco in `ls *.db` |
| do |
| sh backup-bd.sh `basename $banco .db` /simula/backupbd /simula/backupai & |
| done |
Esse script executará o backup simultaneamente para todos os bancos de dados, através de um segundo script chamado backup-bd.sh. O backup dos bancos será gravado no diretório /simula/backupbd e o backup dos after-images será gravado no diretório /simula/backupai.
O script backup-bd.sh deverá conter a instrução !#/bin/bash para evitar problemas com a execução em background. Em seguida ele define variáveis de ambiente caso elas não sejam padrão em seu ambiente.
| [backup-bd.sh] |
| #!/bin/bash |
| export DLC=/usr/dlc102b |
| export PATH=$DLC:$DLC/bin:$PATH |
| export aifull=OK |
| ... |
O código a seguir faz o backup de todos os extents full do banco de dados, marcando o horário de cópia e a ordem do extent. Lembrando que o banco pode ter mais de um extent full, por isso o teste tem que estar em uma estrutura de repetição. Como o Linux/Unix suporta função, já colocamos todos os comandos dentro da função para ser chamado posteriormente para limpar o extent do after-image depois do backup
| [backup-bd.sh] |
| ... |
| function testefull { |
| export horai=`date +%Y%m%d%H%M` |
| export arqai=`_rfutil $1 -C aimage extent full` |
| if [ -s "$arqai" ]; then |
| export seqai=`_rfutil $1 -C aimage query sequence by name $arqai` |
| _rfutil $1 -C aimage extract -a $arqai -o $3/$1-$horai-$seqai.bka >> $1.log |
| _rfutil $1 -C aimage extent empty $arqai >> $1.log |
| else |
| export aifull=NOK |
| fi |
| } |
| while [ $aifull == OK ]; do |
| testefull $1 $2 $3 |
| done |
| ... |
After-images copiados, o próximo passo é o backup do banco de dados.
| [backup-bd.sh] |
| ... |
| probkup online $1 $2/$1-$horai.bkp >> $1.log |
| ... |
Para concluir, faça o backup das extensões de after-images que foram trocadas pelo backup online. Como a função já está pronta, basta chamá-la novamente.
| [backup-bd.sh] |
| ... |
| testefull $1 $2 $3 |
Esses scripts permitirão backup completo de todos os banco, assim como backup das extensões de after-image. Também direcionei o log dos comando Progress OpenEdge para o arquivo com o mesmo nome do banco, extensão log.