背景
在我工作上一個使用PostgreSQL數據庫的項目上需要一個自動化系統來每天執行備份。經過一番研究決定通過創建一個Windows批處理文件并添加到Windows計劃任務中來實現。
下面是具體步驟:
怎樣配置
第一步:
下載批處理文件。
第二步:
你可以通過一個簡單的命令(schtasks /?查看幫助)或者使用圖形界面(開始-控制面板-系統和安全-管理工具-任務計劃程序)運行任務計劃管理工具,還可以在%SYSTEMROOT%\System32目錄下雙擊Taskschd.msc來啟動它。
第三步:
你可以通過向導或通過XML文件導入信息來創建基本任務。向導方式創建方法見任務計劃程序幫助,下面介紹下命令行語法:
1
2
3
4
5
6
|
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] |
查看此命令幫助:
1
|
schtasks /Create /? |
如果在Windows防火墻中遠程任務計劃管理被禁用而文件和打印共享被啟用并且遠程注冊表服務正在運行,遠程計算機上將會被創建一個V1任務即使沒有使用參數V1。參數V1表明一個任務對下層系統可見。
使用代碼
腳本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<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 = demo SET DBUSR = postgres 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 % _ % 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 - 數據庫用戶名