可达到指定备份维护及保留指定备份个数的目的,结合远程可达到远程备份的目的[@more@]@echo off
rem 需指定变量
rem 指定pgsql用来备份的用户及密码,另一种方式是修改pg_hba.conf的认证方式等
set PGUSER=用户
set PGPASSWORD=密码
rem 指定备份保留个数
set inum=5
rem 指定备份数据库
set idb=webpos
rem 备份前缀,避免误操作
set iprefix=webpos
rem 备份目录,不建议有空格,避免不同软件都需测试
set back_dir=E:backtemp
rem pg_dump.exe的绝对路径
set isql=D:PostgreSQLbinpg_dump.exe
rem vacuumdb.exe的绝对路径
set vsql=D:PostgreSQLbinvacuumdb.exe
rem 用7z压缩,此处指定7z.exe的绝对路径
set myzip=d:tools7-zip7z.exe
rem 检查完整性
set ierr="0"
set verr="0"
set zerr="0"
set derr="0"
IF NOT EXIST "%isql%" set ierr="1"
IF NOT EXIST "%vsql%" set verr="1"
IF NOT EXIST "%myzip%" set zerr="1"
IF NOT EXIST "%back_dir%" MKDIR "%back_dir%"
IF NOT EXIST "%back_dir%" set derr="1"
:dcheck
IF %derr%=="0" goto icheck
ECHO "%back_dir%" error!>>pgback.err
goto end
:icheck
IF %ierr%=="0" goto vcheck
ECHO "%isql%" error!>>pgback.err
goto end
:vcheck
IF %verr%=="0" goto start
ECHO "%vsql%" error!>>pgback.err
goto end
:zcheck
IF %zerr%=="0" goto start
ECHO "%myzip%" error!>>pgback.err
goto end
:start
set date_str=%date:~0,4%%date:~5,2%%date:~8,2%
if "%time:~0,1%"==" " (set time_str=0%time:~1,1%%time:~3,2%%time:~6,2%) ELSE (set time_str=%time:~0,2%%time:~3,2%%time:~6,2%)
set dbback_file=%back_dir%%iprefix%_%date_str%_%time_str%
rem pg备份
"%isql%" -i -h localhost -p5432 -F c -b -v -f "%dbback_file%.backup" %idb%
rem pg数据维护
"%vsql%" -h localhost -p5432 -d %idb% -q
rem 只保留指定个数备份,基本无必要压缩处理
For /F "SKIP=%inum%" %%i IN ('DIR "%back_dir%%iprefix%_*.backup" /B /TC /O-D') DO DEL "%back_dir%%%i" /Q
rem "%myzip%" a -ptjjtDs -t7z "%dbback_file%.7z" "%dbback_file%.backup" -m0=BCJ -m1=LZMA:d=21 -ms -mmt
rem For /F "SKIP=%inum%" %%i IN ('DIR "%back_dir%%iprefix%_*.7z" /B /TC /O-D') DO DEL "%back_dir%%%i" /Q
rem del "%dbback_file%.backup" /Q
:end
rem 变量处理
set PGUSER=
set PGPASSWORD=
set inum=
set iprefix=
set back_dir=
set isql=
set vsql=
set myzip=
set date_str=
set time_str=
set dbback_file=
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7110/viewspace-1006862/
,如需转载,请注明出处,否则将追究法律责任。