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
[1] Comentário enviado por glaucioklipel em 21/12/2006 - 22:34h
Olá Jairo!
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..."
# Loop para gerar arquivos dump
for i in `psql -l -U postgres | cut -f 2 -d " " -s`; do
if [ $i != template1 -a $i != template0 -a $i != "rows)" -a $i != postgr
es ]; then
su postgres -c "/usr/bin/pg_dump -c -d -f $DST/$i"_"$t.bkp -Z 9
$i";
fi
done
___________________________________________________________
[3] Comentário enviado por vinper em 10/07/2008 - 15:53h
Olá pessoal, sou novato no assunto, e estou precisando automatizar o backup do meu banco postgre. No crontab, como ficaria o comando pra chamar esse script??
valew