記一次 IIS 站點配置檔案備份和還原,物理路徑檔案批量備份

遇坑分享發表於2021-11-20

前言

上一篇文章實現了資料庫的批量備份和還原,當然部署在伺服器中的IIS站點備份也是一個十分繁瑣的事,三四個數量不多的還好,像有一些伺服器用了許久,承載幾十個站點甚至更多,一個一個備份,再一個一個還原也是有苦說不出。下面我用dos命令寫了一個批量備份的指令碼供大家參考。

開始

    1. 使用前準備和注意事項
    2. 備份IIS站點配置資訊,和IIS物理檔案路徑檔案
    3. 還原IIS站點資訊
    4. 總結

一、使用前準備和注意事項

  1. 執行此bat檔案時需要用到電腦中的壓縮軟體程式,需要知道安裝路徑,並且需要壓縮dos命令也需要知道,我這裡用的時7-zip。 如圖本人電腦:

記一次 IIS 站點配置檔案備份和還原,物理路徑檔案批量備份

2.需要確認伺服器中IIS 中的物理路徑中的檔案沒有重名的(當然很少出現)

二、備份IIS站點配置資訊,和IIS物理檔案路徑檔案

使用前記得替換前面三個檔案路徑和最後面那個迴圈壓縮檔案的命令,直接貼程式碼:

@echo off
rem --存放IIS站點的配置檔案資訊
set backUpFile=C:\myfile\IISfile\Setting
rem --存放IIS站點物理檔案壓縮
set compressFile=C:\myfile\IISfile\compress
rem --電腦中的壓縮檔案路徑
set compressionSoftwareFile=C:\"Program Files"\7-Zip\7z.exe

:SiteInfo
echo 正在備份IIS站點配置資訊·····
%windir%\system32\inetsrv\AppCmd.exe LIST APPPOOL /config /XML > %backUpFile%\poolappcmdexport.xml
%windir%\system32\inetsrv\AppCmd.exe LIST SITE /config /XML > %backUpFile%\iisappcmdexport.xml
echo IIS站點配置資訊備份完成·····

:GetphysicalPathInfo
echo 正在讀取站點檔案路徑資訊·····
findstr physicalPath %backUpFile%\iisappcmdexport.xml > %backUpFile%\physicalPathInfo.txt

:GetphysicalPath
@echo off&setlocal enabledelayedexpansion
set "word1=""
set "word2=""
(for /f "delims=" %%a in ('findstr "%word1%.*%word2%" "%backUpFile%\physicalPathInfo.txt"') do (
    set "str=#%%a"
    set "str=!str:%word1%=ж!"
    set "str=!str:%word2%=ж!"
    for /f "tokens=4 delims=ж" %%b in ("a!str!") do echo;%word1%%%b%word2%
))>"%backUpFile%\physicalPath.txt"
echo "physicalPath.txt生成成功,請按任意鍵開始備份壓縮"
pause

:Compress
@echo off 
echo 開始壓縮
rem --獲取文字中檔案路徑 
for /f %%i in ('type %backUpFile%\physicalPath.txt' ) do (

for %%a in (%%i) do (
rem --迴圈壓縮檔案
%compressionSoftwareFile% a -r -mx3 -tzip %compressFile%\%%~ni %%i
echo %%~ni 壓縮完成
)
) 
echo 備份完成!
pause

 執行效果圖:

記一次 IIS 站點配置檔案備份和還原,物理路徑檔案批量備份

記一次 IIS 站點配置檔案備份和還原,物理路徑檔案批量備份

三、還原IIS站點資訊

簡單點 可以直接在cmd命令列中執行,不過也有可能會遇到問題,可能遇到站點Id衝突,或是應用程式池重複,因為你還原的時候大都不可能是在一臺新的伺服器上操作。先貼程式碼:

rem --應用程式池全部還原(poolappcmdexport.xml 上文有備份的檔案,上文改了如有修改,這裡記得改)
%windir%\system32\inetsrv\AppCmd.exe ADD APPPOOL /IN < poolappcmdexport.xml

rem --網站配置全部還原(iisappcmdexport.xml 上文有備份的檔案,上文改了如有修改,這裡記得改)
%windir%\system32\inetsrv\AppCmd.exe ADD SITE /IN < iisappcmdexport.xml

一般情況下這個需要刪除,每個伺服器初始化都會有這個站點。如果提示站點重複,可能還需要修改iisappcmdexport.xml檔案中對應的SITE.ID,id。還原之後,把之前壓縮的檔案解壓出來放到對應檔案。

 記一次 IIS 站點配置檔案備份和還原,物理路徑檔案批量備份

記一次 IIS 站點配置檔案備份和還原,物理路徑檔案批量備份

四、總結

    1. 學習了dos命令 
    2. 省去了大把時間來刷部落格

 

相關文章