首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >备份PostgreSQL数据库的简单脚本

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

Server Fault用户
提问于 2014-05-30 10:32:53
回答 2查看 4.5K关注 0票数 2

你好,我编写了一个简单的批处理脚本来备份postgeSQL数据库,但是我发现一个奇怪的问题: pg_dump命令是否可以指定密码?

有批处理脚本:

代码语言:javascript
复制
 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 !

请给我建议

问候米克

EN

回答 2

Server Fault用户

发布于 2014-05-31 09:16:19

您还可以创建一个专用用户,该用户仅限于本地主机,且权限较低,无需密码即可进行连接。(例如,unix用户)。

我们使用它,如果用户受到很好的保护,它将不会破坏安全性。

票数 0
EN

Server Fault用户

发布于 2018-01-09 17:11:22

谢谢你的cmd脚本。我用它来写我自己的,如下所示。它将备份存储在postgresql中的所有数据库,使其以pg_dump使用的自定义格式格式化,其中日期为yyyymmdd_hhss。ToDo :在没有数据的情况下备份完整模式。

数据库名存储在循环中的%%d变量中。你可以安全地改变:

  • "backup_data_dir“(必须以)结尾
  • "pg_user“(默认情况下为postgres)
  • "pg_bin_dir“(必须以)结尾

注意:我是法国人。dd/mm/yyyy %日期%,“首次亮相”表示“开始”,"F I N“代表"E”。

代码语言:javascript
复制
@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 ---
)
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/599669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档