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/pythonfrom time import gmtime, strftimeimport subprocessimport osdatabase_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