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
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 || :’
Brow, problema é este plugin que colore o código postado, ele esta corrompendo inserindo esses &, utilize o arquivo anexo em TXT do post, que esta com o código limpo – http://jf.eti.br/wp-content/uploads/script_bkp_pgsql.txt
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.
Configura o seu pg_hba.conf como trust nas conexões locais para o usuário postgres.
Funcionou perfeitamente. Obrigado!!! Vou compartilhar seus script com os camaradas da área.
Funcionou quase perfeito o script exceto pelo arquivo nao criar com a data e hora no nome