你好,我编写了一个简单的批处理脚本来备份postgeSQL数据库,但是我发现一个奇怪的问题: pg_dump命令是否可以指定密码?
有批处理脚本:
REM script to backup PostgresSQL databases
@ECHO off
FOR /f "tokens=1-4 delims=/ " %%i IN ("%date%") DO (
SET dow=%%i
SET month=%%j
SET day=%%k
SET year=%%l
)
SET datestr=%month%_%day%_%year%
SET db1=opennms
SET db2=postgres
SET db3=sr_preproduction
REM SET db4=sr_production
ECHO datestr is %datestr%
SET BACKUP_FILE1=D:\%db1%_%datestr%.sql
SET FIlLENAME1=%db1%_%datestr%.sql
SET BACKUP_FILE2=D:\%db2%_%datestr%.sql
SET FIlLENAME2=%db2%_%datestr%.sql
SET BACKUP_FILE3=D:\%db3%_%datestr%.sql
SET FIlLENAME3=%db3%_%datestr%.sql
SET BACKUP_FILE4=D:\%db14%_%datestr%.sql
SET FIlLENAME4=%db4%_%datestr%.sql
ECHO Backup file name is %FIlLENAME1% , %FIlLENAME2% , %FIlLENAME3% , %FIlLENAME4%
ECHO off
pg_dump -U postgres -h localhost -p 5432 %db1% > %BACKUP_FILE1%
pg_dump -U postgres -h localhost -p 5432 %db2% > %BACKUP_FILE2%
pg_dump -U postgres -h localhost -p 5432 %db3% > %BACKUP_FILE3%
REM pg_dump -U postgres -h localhost -p 5432 %db4% > %BACKUP_FILE4%
ECHO DONE !请给我建议
问候米克
发布于 2014-05-31 09:16:19
您还可以创建一个专用用户,该用户仅限于本地主机,且权限较低,无需密码即可进行连接。(例如,unix用户)。
我们使用它,如果用户受到很好的保护,它将不会破坏安全性。
发布于 2018-01-09 17:11:22
谢谢你的cmd脚本。我用它来写我自己的,如下所示。它将备份存储在postgresql中的所有数据库,使其以pg_dump使用的自定义格式格式化,其中日期为yyyymmdd_hhss。ToDo :在没有数据的情况下备份完整模式。
数据库名存储在循环中的%%d变量中。你可以安全地改变:
注意:我是法国人。dd/mm/yyyy %日期%,“首次亮相”表示“开始”,"F I N“代表"E”。
@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\9.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 ---
)https://serverfault.com/questions/599669
复制相似问题