简单的脚本来备份PostgreSQL数据库

您好我编写简单的批处理脚本来备份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 ! 

请给我build议

问候Mick

您不能在命令行中为pg_dump指定Postgres实用程序的密码。
这将是一个巨大的安全漏洞,需要恶心的解决方法来缓解 。

你可以做的是创build一个pgpass文件 , pg_dump会参考。

根据您的需要,您可能需要考虑采用文件系统级备份,而不是使用pg_dumppg_dump时需要locking数据库的各个部分,并可能会中断系统的正常使用。 或者,考虑在从系统上运行备份过程。

您还可以创build一个专用用户,限制为本地主机,并且可以使用无需密码即可连接的特权。 (例如一个unix用户)。

我们使用这个,如果用户得到很好的保护,它不会破坏安全。