Backup semanal/mensal/anual do PostgreSQL

Publicado por Thiago Henrique F. Margonar em 27/01/2014

[ Hits: 13.903 ]

 


Backup semanal/mensal/anual do PostgreSQL



Iae turma, tranquilo?

Ontem, tive que dar uma estudada para realizar backups através de script no PostgreSQL 8.3 automaticamente. Após concluir, achei que seria legal compartilhar com vocês.

Não vou abordar sobre como instalar o PostgreSQL, somente mesmo a geração do backup. Vamos lá.

Imaginando que já estamos com o PostgreSQL 8.3 instalado e funcionando. No meu caso, o PostgreSQL está instalado em:

# cd /opt/PostgreSQL/8.3/

Dentro desta pasta, eu criei uma chamada script:

# mkdir script

Dentro da pasta script, salve os arquivos:

# vim semanal.sh

##############################################################
#!/bin/bash

date +%A > "/postgres/script/data.txt" # Pega o nome do dia e salva no arquivo "data.txt"
data=$(cat /postgres/script/data.txt) # Pega o conteúdo gravado no "data.txt"
/opt/PostgreSQL/8.3/bin/pg_dump -h IP_D0_SERVIDOR -U postgres BANCO_PARA_BACKUP > /postgres/$data.sql& # Começa o backup
exit

# vim mensal.sh

##############################################################
#!/bin/bash

date +%B > "/postgres/script/data.txt" # Pega o nome do mes e salva no arquivo "data.txt"
data=$(cat /postgres/script/data.txt) # Pega o conteudo gravado no "data.txt"
/opt/PostgreSQL/8.3/bin/pg_dump -h IP_D0_SERVIDOR -U postgres BANCO_PARA_BACKUP > /postgres/$data.sql& # Começa o backup
exit

# vim anual.sh

##############################################################
#!/bin/bash

date +%Y > "/postgres/script/data.txt" # Pega o numero do ano e salva no arquivo "data.txt"
data=$(cat /postgres/script/data.txt) # Pega o conteudo gravado no "data.txt"
/opt/PostgreSQL/8.3/bin/pg_dump -h IP_D0_SERVIDOR -U postgres BANCO_PARA_BACKUP > /postgres/$data.sql& # Começa o backup
exit

Bom, feito estes scripts, vamos dar permissão:

# chmod +x *.sh

Agora, vamos agendar os scripts no crontab:

# vim /etc/crontab

#min hora dia mês ano usuário script

00 17 * * * root /postgres/semanal.sh
00 18 30 * * root /postgres/mensal.sh
00 19 30 12 * root /postgres/anual.sh


Pronto, agora você terá um backup semanal, mensal e anual do banco de dados PostgreSQL.

Espero ter ajudado.
Outras dicas deste autor

Funções em Shell Script

Acessando seu Ubuntu por um terminal Windows de outra rede

Compartilhamento simples de arquivos com Samba no CentOS 6.4

CentOS + xrdp - Acessando CentOS pelo Windows (Acesso remoto da área de trabalho com "Mstsc.exe")

Instalando Ruby on Rails no CentOS

Leitura recomendada

Sabayon 4.0-r1 (versão antiga) - Download e criação de ISO a partir do LiveCD/DVD

BAT (Bacula Administration Tool) no Ubuntu - Instalação e configuração

Backup com ZIP e TAR

Não consigo fazer login no Linux Mint [Resolvido]

Resolvendo erro com backup do remastersys no Xubuntu

  

Comentários
[1] Comentário enviado por thiagomargonar em 27/01/2014 - 16:03h

Desculpe gente, no crontab eu não tinha corrigido o caminho das pasta.

o caminho correto para cada script no caso acima é:
/postgres/script/script.sh

[2] Comentário enviado por thiagomargonar em 21/03/2014 - 14:14h

Restaurando um backup.sql
Na pasta bin onde o postgres foi instalado execute:
./psql -U usuario -d banco < banco.sql
ou
./pg_restore -d banco banco.sql
pg_restore -d banco banco.tar



Contribuir com comentário