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)
留待后查,同时方便他人
联系我:renhanlinbsl@163.com
联系我:renhanlinbsl@163.com

浙公网安备 33010602011771号