Este script é uma modificação do script de backup do PostgreSQL postado por Jairo Tcatchenco.
Após testar o script postado obtive alguns erros e modifiquei o código para adaptar ao meu banco. O script lista todas as bases do Postgree e exclui a "template0" e "template1", salvando em arquivos individuais separados por nome dos bancos.
Ainda cria pastas com nome de data e cria os arquivos com nome de data e hora.
#!/bin/sh
# Script para backup dos bancos de dados
# Executa vaccum no banco
su postgres -c "/usr/bin/vaccumdb -a -z -f -q"
# Formata data para adicionar ao nome dos arquivos
t=`/bin/date +%d%m%y`
tt=`/bin/date +%H%M%S`
# Define o destino dos arquivos
DST="/opt/data/backup/$t"
# Cria o diretório do dia se ele não existir
if [ -d /opt/data/backup/$t ]; then
cd /opt/data/backup/$t
else
`mkdir /opt/data/backup/$t`
fi
# Define permissoes de leitura e gravacao para o diretorio
`chown -R postgres /opt/data/backup/`
`chown -R postgres /opt/data/backup/$t`
`chmod 0777 /opt/data/backup/$t`
# 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 != postgres ]; then
su postgres -c "/usr/bin/pg_dump -h localhost -U postgres -c -d -F -f $DST/$t/$i"_"$t"_"$tt.bkp -Z 1 $i";
fi
done
[1] Comentário enviado por jtcatchenco em 25/01/2007 - 12:01h
Bom! Muito bom!
A única observação é que o postgresql 8.1.# já tem na sua configuração o autovacuum. No caso dele estar habilitado, não seria necessária a linha
# Executa vaccum no banco
su postgres -c "/usr/bin/vaccumdb -a -z -f -q"
[5] Comentário enviado por paulopewera em 20/09/2012 - 16:33h
boa tarde
sou iniciante no linux e estou tentando usar esse script no CentoOs 5.8 mas quando vou executar ele apresenta o seguinte erro
[root@localhost Backup]# sh backup.sh
'ackup.sh: line 29: syntax error near unexpected token `do
'ackup.sh: line 29: `for i in `psql -l -U postgres | cut -f 2 -d " " -s`; do
[7] Comentário enviado por fabio.telles em 11/12/2012 - 08:42h
Vale a pena lembrar que backup em banco de dados vai muito alem do Dump. Você precisa na verdade de uma estratégia de backup, e principalmente uma estratégia de RESTORE.
[8] Comentário enviado por glaucioklipel em 11/12/2012 - 10:14h
Obrigado pela correção Fabio, claro que esse script não é capaz de abrir um guarda-chuva ou dar pernas ao servidor pra correr em caso de incêndio. Então podemos chamá-lo de dump e só.
[9] Comentário enviado por samuel_pc7 em 21/11/2014 - 18:37h
amigo a unica coisa que mudei no seu escript foi o endereço "localhost" para "IpDoMeuServidor"
porem esta dando essa mensagem..
psql: FATAL: autentica??o do tipo peer falhou para usu?rio "postgres"
sabe me dizer como posso resolver?
[10] Comentário enviado por samuel_pc7 em 21/11/2014 - 19:36h
[9] Comentário enviado por samuel_pc7 em 21/11/2014 - 18:37h:
amigo a unica coisa que mudei no seu escript foi o endereço "localhost" para "IpDoMeuServidor"
porem esta dando essa mensagem..
psql: FATAL: autentica??o do tipo peer falhou para usu?rio "postgres"
sabe me dizer como posso resolver?
Esse erro de cima consegui resolver agora esta aparecendo este..
bash: -c: line 0: erro de sintaxe próximo do `token' não esperado `)'
bash: -c: line 0: `/usr/bin/pg_dump -h 186.202.178.165 -U postgres c -d -F -f /opt/data/backup/211114/211114/registros)_211114_193559.bkp -Z 1 registros)'