windows系統下postgresql的自動備份及維護的指令碼

zqf01發表於2008-07-07
可達到指定備份維護及保留指定備份個數的目的,結合遠端可達到遠端備份的目的[@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部落格 ” ,連結:http://blog.itpub.net/7110/viewspace-1006862/,如需轉載,請註明出處,否則將追究法律責任。

相關文章