Script de Backup (dump) Postgresql – Múltiplos bancos em arquivos separados

Seguindo a idéia do artigo anterior, onde foi construido um script para backup Mysql com dump para cada banco, facilitando assim uma futura restauração, iremos agora construir um script para backup do PostgreSQL.

O script é bem simples, veja:

[shell]
#!/bin/sh
#Diretorio de destino do arquivos
DIR=/tmp/backup

#Listagem de todos os bancos de dados de seu SGBD
[ !$DIR ] && mkdir -p $DIR || :
LIST=$(su – postgres -c “psql -lt” |awk ‘{ print $1}’ |grep -vE ‘^-|:|^List|^Name|template[0|1]’)

#Laço com Dump, para cada banco listado acima, é gerado um dump, com a saída já compactada em .gz
for d in $LIST
do
su – postgres -c “/usr/bin/pg_dump –inserts $d | gzip -c > $DIR/$d.sql.gz”
done
[/shell]

Certo, com isso podemos melhorar a idéia, e produzir um script que além de gerar os dumps compactados, já faça a transferência dos mesmos para nosso storage (LDAP).

Disponibilizo para download um script com isso em prática.

Script de Backup – PGSQL – Com depósito no Storage – AD – LDAP

Observação:

O script irá tentar montar a pasta do servidor Windows, caso ocorra o erro:

error: mount: //192.168.20.10/mnt/ntserver/ is not a valid block device

É só instalar o smbfs (Debian e derivados)
# apt-get install smbfs

7 thoughts to “Script de Backup (dump) Postgresql – Múltiplos bancos em arquivos separados”

  1. Bom dia.

    Não consigo usar este script no CentOS. Retorna o seguinte erro.

    ./bkp_postgre.sh: line 6: syntax error near unexpected token `&’
    ./bkp_postgre.sh: line 6: `[ !$DIR ] && mkdir -p $DIR || :’

  2. Obrigado pela dica Jonas. Eu consegui fazer funcionar, porem a cada banco ele pede a senha do administrador, não seria possível automatizar isso, estou buscando uma ajuda na web para ver se consigo deixar a senha junto com o script.

  3. Funcionou perfeitamente. Obrigado!!! Vou compartilhar seus script com os camaradas da área.

  4. Funcionou quase perfeito o script exceto pelo arquivo nao criar com a data e hora no nome

Leave a Reply

Your email address will not be published. Required fields are marked *