postgresql自动备份和还原 .
实测OK
设置win定时任务每天执行即可.
@echo off
:: 设置变量
SET PGPATH=C:\Program Files\PostgreSQL\16\bin
SET BACKUPDIR=C:\test\
SET DBNAME=spring
SET PGUSER=postgres
SET PGPASSWORD=postgres
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
md %ymd%
:: 构建备份文件名
SET BACKUPFILE=%BACKUPDIR%\backup_%ymd%.dump
:: 创建备份目录(如果不存在)
IF NOT EXIST "%BACKUPDIR%" MKDIR "%BACKUPDIR%"
:: 执行 pg_dump 命令进行备份
"%PGPATH%\pg_dump.exe" -U "%PGUSER%" -F c -b -v -f "%BACKUPFILE%" "%DBNAME%"
:: 检查备份是否成功
IF %ERRORLEVEL% NEQ 0 (
echo 备份失败!
EXIT /B %ERRORLEVEL%
) ELSE (
echo 备份成功!备份文件保存在 %BACKUPFILE%
)
EXIT /B 0
:: 可选:删除一定天数前的旧备份文件(例如,只保留最近 7 天的备份) FORFILES /P "%BACKUPDIR%" /S /M *.dump /D -7 /C "cmd /c del @path"
恢复: (需要先创建好数据库)
C:\"Program Files"\PostgreSQL\16\bin\pg_restore.exe -U postgres -h 127.0.0.1 -p 5432 -d spring -F c C:\test\backup_20250215.dump
浙公网安备 33010602011771号