

Pessoal,
Segue abaixo um script(Shell) simples, mas funcional de automatização da rotina de Backup e Vacuum no PostgreSQL.
passos:
1 – Vamos criar o arquivo abaixo e dar a ele o nome de Backup.sh
________________________________________________________________________________
#!/bin/bash
clear
echo “#################################”
echo “# Bem Vindo a Sistema de Backup #”
echo “# Versao 1.0 #”
echo “# Qui Jun 09 04:01:18 BRT 2009 #”
echo “#################################”
SUDO=’sudo -u postgres’
BANCO=`$SUDO psql -l | grep .’db’ | cut -f1 -d ‘|’`
DIRDEST=’/mnt/bkbanco/’
for DATABASE in $BANCO; do
echo “Iniciando Backup do Banco “$DATABASE
$SUDO pg_dump -Fc $DATABASE > ${DIRDEST}${DATABASE}`date +%d-%m_%H%M`’.sql’
done
echo “Fim do Backup”
SUDO vacuumdb -a -z -f
________________________________________________________________________________
2 – Vamos tornar nosso script um arquivo executável digitando o comando;
chmod +x backup.sh
3 – Deixaremos nosso backup automático usando a ferramenta de agendamento de tarefas CRON
Digitamos:
crontab -e
Dentro do arquivo basta adicionar a seguinte regra:
0 23 * * 1-6 /mnt/backup.sh # aqui determinamos que o backup será executado as 23 horas de segunda à sábado.
Pronto, agora temos uma rotina de backup agendada com o cron, os arquivos serão gerados de forma compacta pois utilizamos a sintaxe -Fc, para finalizar vamos mostrar a forma de restaurar o backup gerado:
pg_restore -d [banco] [arquivo_de_backup].sql | psql -e [banco]