背景
在我工作上一個使用PostgreSQL資料庫的項目上需要一個自動化系統來每天執行備份。經過一番研究決定通過建立一個Windows批次檔並添加到Windows計劃任務中來實現。
下面是具體步驟:
怎樣配置
第一步:
下載批次檔。
第二步:
你可以通過一個簡單的命令(schtasks /?查看協助)或者使用圖形介面(開始-控制台-系統和安全-管理工具-工作排程器)運行任務計劃管理工具,還可以在%SYSTEMROOT%\System32目錄下雙擊Taskschd.msc來啟動它。
第三步:
你可以通過嚮導或通過XML檔案匯入資訊來建立基本任務。嚮導方式建立方法見工作排程器協助,下面介紹下命令列文法:
schtasks /Create [/S <system> [/U <username> [/P [<password>]]]] [/RU <username> [/RP <password>]] /SC <schedule> [/MO <modifier>] [/D <day>] [/M <months>] [/I <idletime>] /TN <taskname> /TR <taskrun> [/ST <starttime>] [/RI <interval>] [ {/ET <endtime> | /DU <duration>} [/K] [/XML <xmlfile>] [/V1]] [/SD <startdate>] [/ED <enddate>] [/IT] [/Z] [/F]
查看此命令協助:
如果在Windows防火牆中遠程任務計劃管理被禁用而檔案和列印共用被啟用並且遠端登錄服務正在運行,遠端電腦上將會被建立一個V1任務即使沒有使用參數V1。參數V1表明一個任務對下層系統可見。
使用代碼
指令碼:
<a href="http://my.oschina.net/echolee1987" target="_blank" rel="nofollow">@ECHO</a> OFF@setlocal enableextensions<a href="http://my.oschina.net/duini" target="_blank" rel="nofollow">@cd</a> /d "%~dp0" SET PGPATH=C:\"Program Files"\PostgreSQL\9.1\bin\SET SVPATH=f:\SET PRJDB=demoSET DBUSR=postgresFOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%kFOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k SET DBDUMP=%PRJDB%_%d%_%t%.sql<a href="http://my.oschina.net/echolee1987" target="_blank" rel="nofollow">@ECHO</a> OFF%PGPATH%pg_dump -h localhost -p 5432 -U postgres %PRJDB% > %SVPATH%%DBDUMP% echo Backup Taken Complete %SVPATH%%DBDUMP%
初始值
- PGPATH - PostgreSQL路徑
- SVPATH - 備份檔案路徑
- PRJDB - 要備份的資料庫名
- DBUSR - 資料庫使用者名稱