pg 远程备份 pgdump 免密

备份脚本

@echo off
REM 获取当前日期和时间,并格式化为 YYYYMMDD_HHMMSS
set hour=%time:~0,2%
REM 处理小时是个位数的情况(前面带空格的问题),替换空格为0
if "%hour:~0,1%"==" " set hour=0%hour:~1,1%

set backupName=%date:~0,4%%date:~5,2%%date:~8,2%_%hour%%time:~3,2%%time:~6,2%.sql
echo %backupName%

"C:\Program Files\PostgreSQL\postgresql-17.5-3-windows-x64-binaries\pgsql\bin\pg_dump.exe" -h 192.168.1.1 -p 5432 -U postgres harper > %~dp0%backupName%

pause

免密配置

//在以下任意一个路径中创建文件
%APPDATA%\postgresql\pgpass.conf
%APPDATA%\postgresql\pgpass-global.conf
%USERPROFILE%\AppData\Roaming\postgresql\pgpass.conf
%USERPROFILE%\AppData\Roaming\postgresql\pgpass-global.conf

保存密码信息
字段说明:
192.168.1.1 : ip
5432 : 端口
postgres : 账号
123456 : 密码

192.168.1.1:5432:*:postgres:123456

备份部份表

备份部分表
# 备份多个表
pg_dump -h source_host -p source_port -U source_user -d source_db \
    -t table1 -t table2 -t table3 > backup.sql

# 或者从文件读取表列表
echo "table1" > tables.txt
echo "table2" >> tables.txt
echo "table3" >> tables.txt
pg_dump -h source_host -p source_port -U source_user -d source_db \
    --include-table-file=tables.txt > backup.sql
还原到目标数据库
psql -h target_host -p target_port -U target_user -d target_db -f backup.sql

备注

● 定时备份可使用系统的定时计划设置
● linux环境下免密配置的路径为: ~/.pgpass
● linux环境下需要注意文件权限(chmod)

posted @ 2025-08-28 09:35  Hey,Coder!  阅读(27)  评论(0)    收藏  举报