Backup de bases de dados individuais do PostgreSQL
Este script gera arquivos individuais "gzipados" referentes às bases de dados listadas com o comando "psql -l", exceto template0 e template1. Esses arquivos são então agrupados com o "tar", tendo a data no nome. Este script está preparado para ser incluído no cron do usuário root, daí o uso do "su postgres -c...".
Descrição
Este script gera arquivos individuais "gzipados" referentes às bases de dados listadas com o comando "psql -l", exceto template0 e template1. Esses arquivos são então agrupados com o "tar", tendo a data no nome. Este script está preparado para ser incluído no cron do usuário root, daí o uso do "su postgres -c...".
#!/bin/sh # Script para backup dos bancos de dados # Executa vaccum no banco su postgres -c "/usr/bin/vacuumdb -a -z -f -q" # Formata data para adicionar ao nome dos arquivos t=`/bin/date +%y%m%d` # Define o destino dos arquivos DST="/backup/" # Loop para gerar arquivos dump for i in `psql -l -U postgres | cut -f 2 -d " "`; do if [ $i != template1 -a $i != template0 -a $i != "---------------+----------+-----------" -a $i != "rows)" -a $i != postgres ]; then su postgres -c "/usr/bin/pg_dump -c -d -f $DST/$i$t.dump.gz -Z 9 $i"; fi done # Agrupa todos arquivos do dia tar -cf $DST/dump_$t.tar $DST/*.dump.gz # Exclui os arquivos dump.gz rm $DST/*.dump.gz
Tentei executar esse script, mas o shell interpreta os "----------+---------+----------" como opções do psql. Tentei executar o cut com as variáveis postadas e mais com a "-s". Com a "-s" o pg_dump cria um arquivo com todos as bases juntas, sem o -s, o retorno que eu tenho é: "line 15: Too many arguments..."
Alguma sugestão?
gklipel@gmail.com
Obrigado!!!