批次檔備份 DHCP 資料庫

前言

本文為配合批次檔使用三種方式「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




參考