前言
本文為配合批次檔使用三種方式「copy、export、dump」來備份 Windows DHCP 資料庫,其中若是有刪除單筆 DHCP 保留區記錄的話,將使用 export 備份方式是無法復原的,因為 export 為備份整個領域方式,所以變成要把整個領域砍掉在利用 import 來還原。若使用 copy、dump 則無此限制,而使用 export、dump 在備份及還原時此時 DHCP 服務為暫停的 (也就是暫時無法提供服務)。Windows DHCP Service 預設會自動每隔 60 分鐘,利用覆蓋方式來備份 DHCP 資料庫至 C:\WINDOWS\System32\dhcp\backup 資料夾內 (但若您改變預設備份路徑則不會執行自動備份!!),若想修改自動備份時間可以透過修改機碼值 BackupInterval 來改變。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DHCPServer\Parameters //機碼路徑
BackupInterval //機碼值 (預設 60 分鐘)
以下為 copy、export、dump 等三種備份 DHCP 資料庫比較表
如何執行備份?
- copy: 複製 C:\WINDOWS\System32\dhcp\backup
- export: 執行指令 netsh dhcp server export d:\dhcpdb.mdb all (all 為備份所有領域)
- dump: 執行指令 netsh dhcp server dump > d:\dhcpdb.mdb
如何執行還原?
- copy: 開啟 DHCP Service --> 選擇 DHCP Server --> 右鍵 --> 還原 -->指定備份資料夾路徑
- export: 執行指令 netsh dhcp server import d:\dhcpdb.mdb all (all 為備份所有領域)
- dump: 執行指令 netsh exec d:\dhcpdb.mdb
export 及 dump 詳細參數
netsh dhcp server export /? //將本機伺服器的服務設定匯出到檔案
netsh dhcp server import /? //從檔案匯入本機伺服器服務設定
netsh dhcp server dump /? //傾印 DHCP 伺服器的設定
netsh exec /? //載入指令檔並執行它
實作環境
- Windows Server 2003
自動備份 DHCP 資料庫實作
您可將下面內容貼至筆記本後存檔為 .bat,然後配合排定的工作來達成自動備份 DHCP 資料庫的目的。實作一、利用 copy 方式自動備份 DHCP 資料庫
- DHCP 資料庫複製來源: C:\WINDOWS\system32\dhcp\backup
- DHCP 資料庫備份至: D:\dhcp_db\當天日期\copy
- 備份時 Log 寫入至: D:\log\dhcp\當天日期.log
- 備份使用指令: xcopy /S (/S 複製每個目錄及其包含的子目錄,不複製空目錄)
rem ----- 將開始複製時間寫入 log 紀錄中 -----
echo 開始複製 DHCP Database Files >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
TIME /T >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
rem ----- 開始複製 DHCP Database Files-----
rem /S 複製每個目錄及其包含的子目錄,不複製空目錄
mkdir D:\dhcp_db\%date:~0,4%%date:~5,2%%date:~8,2%\copy
xcopy C:\WINDOWS\system32\dhcp\backup D:\dhcp_db\%date:~0,4%%date:~5,2%%date:~8,2%\copy /S >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
rem ----- 將結束複製時間寫入 log 紀錄中 -----
echo 結束備份 DHCP Database Files >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
TIME /T >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
實作二、利用 export 方式自動備份 DHCP 資料庫
- DHCP 資料庫備份指令: netsh dhcp server export
- DHCP 資料庫備份至: D:\dhcp_db\當天日期\export\dhcp.mdb
- 備份時 Log 寫入至: D:\log\dhcp\當天日期.log
rem ----- 將開始 Export 時間寫入 log 紀錄中 -----
echo 開始 Export DHCP Database Config >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
TIME /T >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
rem ----- 開始 Export DHCP Database Config -----
mkdir D:\dhcp_db\%date:~0,4%%date:~5,2%%date:~8,2%\export
C:\WINDOWS\system32\netsh.exe dhcp server export D:\dhcp_db\%date:~0,4%%date:~5,2%%date:~8,2%\export\dhcp.mdb all >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
rem ----- 將結束 Export 時間寫入 log 紀錄中 -----
echo 結束 Export DHCP Database Config >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
TIME /T >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
實作三、利用 dump 方式自動備份 DHCP 資料庫
- DHCP 資料庫備份指令: netsh dhcp server dump
- DHCP 資料庫備份至: D:\dhcp_db\當天日期\export\dhcp.mdb
- 備份時 Log 寫入至: D:\log\dhcp\當天日期.log
rem ----- 將開始 Dump 時間寫入 log 紀錄中 -----
echo 開始 Dump DHCP Database Config >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
TIME /T >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
rem ----- 開始 Dump DHCP Database Config -----
mkdir D:\dhcp_db\%date:~0,4%%date:~5,2%%date:~8,2%\dump
C:\WINDOWS\system32\netsh.exe dhcp server dump > D:\dhcp_db\%date:~0,4%%date:~5,2%%date:~8,2%\dump\dhcp.mdb
rem ----- 將結束 Dump 時間寫入 log 紀錄中 -----
echo 結束 Dump DHCP Database Config >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log
TIME /T >> D:\log\dhcp\%date:~0,4%%date:~5,2%%date:~8,2%.log