PostgreSQL定时备份策略

::适用于windows系统

:://///////////////////////////////////////////////////////////////////////////
::在pg服务器上创建备份脚本bakup.bat,以pg数据库为例
::然后在windows控制面板|管理工具|任务计划程序,创建定时备份任务

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"

::pg_dump命令需要密码时自动调用
set PGPASSWORD=postgres
::盘符后面两个\报错就使用一个\
SET PGPATH=D:\\Software\PostgreSQL\9.6\bin\
SET SVPATH=D:\\pgbak\
SET PRJDB=postgres
SET PRJDB2=common
::设置文件名称中时间,如2022-05-27
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
::FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('TIME /T') DO SET t=%%i-%%j-%%k
 
SET DBDUMP=%PRJDB%_%d%.bak
SET DBDUMP2=%PRJDB2%_%d%.bak
@ECHO OFF
pg_dump -h localhost -U postgres --format=c -n public %PRJDB% > %SVPATH%%DBDUMP%
pg_dump -h localhost -U postgres --format=c %PRJDB2% > %SVPATH%%DBDUMP2%
echo Backup Taken Complete %SVPATH%%DBDUMP%

::自动删除30天以前的备份文件,@file文件名称,@path文件全路径
forfiles /p %SVPATH% /d -30 /c "cmd /c echo deleting @file ... && del /f @path"


:://///////////////////////////////////////////////////////////////////////////
::在pg服务器上创建定时拷贝文件到远程共享目录脚本bak_to_z .bat
::远程电脑共享文件夹,在pg服务器上右键映射网络驱动器为z盘符
::然后在windows控制面板|管理工具|任务计划程序,创建定时拷贝任务
xcopy /s/e/d "D:\pgbak\*.*" "Z:\"


:://///////////////////////////////////////////////////////////////////////////
::远程电脑创建定时删除30天前文件脚本delelte_pgbak.bat
::然后在windows控制面板|管理工具|任务计划程序,创建定时删除任务
forfiles /p "D:\pgbak" /d -30 /c "cmd /c echo deleting @file ... && del /f @path"

posted @ 2023-03-07 13:00  publiter  阅读(453)  评论(0编辑  收藏  举报