Pular para o conteúdo

Automatizar backup do PostgreSQL

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.

Espero ter ajudado e créditos a Jairo Jairo Tcatchenco!
http://www.vivaolinux.com.br/~jtcatchenco
Glaucio Klipel glaucioklipel
Hits: 30.773 Categoria: Shell Script Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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.

Espero ter ajudado e créditos a Jairo Jairo Tcatchenco!
http://www.vivaolinux.com.br/~jtcatchenco
Download backup2.sh Enviar nova versão

Esconder código-fonte

#!/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

Echoc (Comando echo, mas com cores)

openurl: abre urls no firefox

Configurando endereço de rede - Slackware, Debian, CentOS/RHEL

Omelete.bsh

Criador de VirtualHosts Apache no Ubuntu e Debian

#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"

Abraços.
#2 Comentário enviado por glaucioklipel em 25/01/2007 - 12:42h
Valeu velho, ainda tenho um longo caminho em linux e bancos de dados ehheheeh

Abraços!
#3 Comentário enviado por diekn em 22/05/2007 - 21:31h
Blz,cara,vou testar pra ver.
#4 Comentário enviado por henriquemeira em 20/03/2010 - 22:35h
Contribuição estúpida...

Na criação do diretório, incluir o parametro -p ao mkdir para criar as pastas recursivamente:

`mkdir -p /opt/data/backup/$t`

valeu!
#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

se tiver alguma dica agradeço

Valeu
#6 Comentário enviado por glaucioklipel em 20/09/2012 - 18:23h

'ackup.sh: line 29: `for i in `psql -l -U postgres | cut -f 2 -d " " -s`; do


É impressão minha ou há um ` antes do for? Confere no script que acho que é isso.

#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.

Vide artigo: "Dump não é backup": http://tellesr.com/dump-nao-e-backup/
#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ó.

Valeu.
#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)'
#11 Comentário enviado por glaucioklipel em 21/11/2014 - 22:41h
/opt/data/backup/211114/211114/registros)_211114_193559.bkp -Z 1 registros)'

Tire todos os ) e troque os ' por crase, ou tire a crase e troque por inicial $( e feche com )

#12 Comentário enviado por rengaf1 em 16/03/2017 - 09:16h
ao executar o backup dava esse erro

bash: /usr/bin/vaccumdb: Arquivo ou diretório não encontrado
psql: FATAL: autenticação do tipo peer falhou para usuário "postgres"

alterei a linha su postgres -c "/usr/bin/vaccumdb -a -z -f -q"

ao invés de vaccumdb troquei por vacuumdb

e tudo funcionou filé!

Contribuir com comentário

Entre na sua conta para comentar.