As etapas de utilização são simples:
- Instale o python e o postgres. Esta etapa eu não precisei fazer, porque já o tinha instalado aqui. Teste a versão digitando: "python --version". A versão da minha máquina é a 2.6.5 e do postgres é 9.0.
- Crie um arquivo de script com o código. Use a extensão ".py" como padrão para não misturar seus códigos python os de com outras aplicações.
- Edite os campos "usuário", "senha", "caminho do pg_dump", a "lista de bancos que devem sofrer backup" e salve o arquivo. Destaquei abaixo estes parâmetros em vermelho
- Execute o script. Utilizei "python -v py_backup.py". A opção -v significa VERBOSE, isto é, gera uma descrição de tudo o que está sendo feito durante o backup. Existem outras boas opções do pg_dump e do python, mas isso fica como pesquisa paras os interessados.
Abaixo coloco o código do script, mas acesse também o site original:
#!/usr/bin/python
from
time
import
gmtime, strftime
import
subprocess
import
os
database_list = [
'database1'
,
'database2'
,
'etc'
]
USER =
"postgres"
PASS =
"postgres-password"
BACKUP_DIR =
"e:\\postgresql_backups\\"
# dump using PostgreSQL's custom format, with maximum compression. (-F c, -Z 9)
dumper =
""
" "
c:\\program files\\postgresql\\8.1\\bin\\pg_dump
" -U %s -Z 9 -f %s -F c %s "
""
os.putenv(
'PGPASSWORD'
, PASS)
for
database_name
in
database_list :
print strftime(
"%Y-%m-%d-%H-%M-%S"
, gmtime()) +
":dump started for %s"
%database_name
time
= str (strftime(
"%Y-%m-%d-%H-%M"
))
file_name = database_name +
'_'
+
time
+
".sql.pgdump"
#Run the pg_dump command to the right directory
command
= dumper % (USER, BACKUP_DIR + file_name, database_name)
subprocess.call(
command
,shell = True)
print strftime(
"%Y-%m-%d-%H-%M-%S"
, gmtime()) +
":finished"
Tente utilizar o python para chamar outros utilitários do postgres. Se quiser fazer um backup de todas as bases de dados, pode utilizar por exemplo o PG_DUMPALL.
Tem sugestões de melhoria para este script? Poste aqui no nosso fórum!
Um comentário:
Hi,
this script is great. And if i want to restore the backup in a postgresql database?
Thanks
Postar um comentário