Obrigado pelo seu script cmd. Eu usei para escrever meu próprio show como abaixo.
Ele fará backup de todos os bancos de dados armazenados no postgresql para o arquivo formatado com o formato customizado usado pelo pg_dump com a data yyyymmdd_hhss
no nome. ToDo: esquema completo de backup sem dados.
O nome do banco de dados é armazenado na variável %%d
no loop. Você pode mudar com segurança:
- "backup_data_dir" (deve terminar por)
- "pg_user" (postgres por padrão)
- "pg_bin_dir" (deve terminar por)
Atenção: sou francês. dd / mm / aaaa para% date%, "DEBUT" para "START", "F I N" para "E N D".
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET backup_data_dir=C:\path\to\backup\
SET backup_file_name=%COMPUTERNAME%.%date:~6,4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%.PGDMP
SET pg_user=--username=postgres
SET pg_dmp_option=--clean %pg_user% --format=custom
SET pg_lst_db=psql.exe %pg_user% --list --field-separator=^; --tuples-only --no-align
SET pg_bin_dir=C:\Program Files\PostgreSQL.6\bin\
CD /D %pg_bin_dir%
FOR /f "delims=; tokens=1" %%d IN ('!pg_lst_db!^| find ";"^|find /v "template0"') DO (
@ECHO !date! !time! pg_dump de la base [%%d] --- DEBUT ---
SET backup_file_name=%%d.%backup_file_name%
SET pg_dmp_option=%pg_dmp_option% --file="%backup_data_dir%!backup_file_name!" --dbname=%%d
pg_dump.exe !pg_dmp_option!
ECHO !date! !time! pg_dump de la base [%%d] --- F I N ---
)