postgresql windows 自動備份
windows下postgresql 自動備份腳本,采用bat批處理腳本編寫,windows任務計劃定時執行。
每天備份一次,主要采用pg_dump 備份指定庫,同時刪除 7 天以前的備份文件。
@echo off @setlocal enableextensions @cd /d "%~dp0" set PGHOME="D:\Program Files\PostgreSQL\9.2\bin" set PGDATA="D:\Program Files\PostgreSQL\9.2\data" set BACKUP_DIR="E:\lier\backup\test" set day=%date% :: 提取日期 for /f "tokens=1-3 delims=-/. " %%i in ("%day%") do ( set /a sy=%%i, sm=100%%j %% 100, sd=100%%k %% 100 ) set DATE_1=%sy%-%sm:~-2%-%sd:~-2% ::echo %DATE_1% ::pause>nul :: 7天前 set /a sd-=7 if %sd% leq 0 call :count set DATE_2=%sy%-%sm:~-2%-%sd:~-2% if exist %BACKUP_DIR%\db_lier_back_%DATE_2% (del /f %BACKUP_DIR%\db_lier_back_%DATE_2%) if not exist %BACKUP_DIR%\db_lier_back_%DATE_1% (%PGHOME%\pg_dump.exe -h localhost -p 5432 -U postgres -b -Fp lierserver > %BACKUP_DIR%\db_lier_back_%DATE_1%) :count set /a sm-=1 if !sm! equ 0 set /a sm=12, sy-=1 call :days set /a sd+=days if %sd% leq 0 goto count goto :eof :days :: 獲取指定月份的總天數 set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)" set /a max=28+leap for /f "tokens=%sm%" %%i in ("31 %max% 31 30 31 30 31 31 30 31 30 31") do set days=%%i goto :eof在設置任務計劃時,有幾個注意點:
1. Task Scheduler系統服務要自動啟動
2. 任務計劃的執行用戶為有密碼賬戶
3. 執行用戶為當前系統運行用戶,否者pg_dump命令堵塞。這一點誰知道怎么解決
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!