在 Azure App Service 中備份並還原您的應用程式

Azure App Service 中,您可以輕鬆還原應用程式備份。 您也可以進行隨選或設定排程的自訂備份。 您可以藉由還原至新應用程式或位置,覆寫現有的應用程式以還原備份。 本文說明如何還原備份並建立自訂備份。

基本標準進階隔離層支援備份和還原。 針對基本層,只能備份和還原生產位置。 如需有關調整 App Service 方案以使用更高階層的詳細資訊,請參閱 在 Azure 中調整應用程式規模

注意

針對 App Service 環境:

  • 自動備份可還原至 App Service 環境本身內、而非在另一個 App Service 環境中的目標應用程式。
  • 可以將自訂備份還原至另一個 App Service 環境中的目標應用程式,例如從 App Service 環境 v2 還原至 App Service 環境 v3。
  • 備份可以還原至與來源應用程式相同的 OS 平台目標應用程式。

備份還原與災害復原

平台 備份與還原指導 災害復原指南
App Service Web Apps
(免費和共用定價層)
如果您已將 Web 應用程式部署至免費或共用層,且需要存取這些 Web 應用程式的備份和還原功能,請調整為基本層或更高層級。 在區域性災害期間,將 App Service 資源帶回不同的 Azure 區域中

從全區域失敗復原一文中所述,從 2025 年 3 月 31 日起,在 Azure 區域中的災害期間,App Service 應用程式將不會處於災害復原模式。 建議您實作常用的災害復原技術,以防止在區域性災害期間發生停機和資料遺失。
App Service Web Apps
(基本\標準\進階定價層)
在 Azure App Service 中,您可以進行隨選自訂備份或使用自動備份。 您可以藉由還原至新應用程式或位置,覆寫現有的應用程式以還原備份。

請參閱在 Azure App Service 中備份並還原應用程式,以取得更多資訊。
如需如何在區域性災害期間,將 App Service 資源在不同 Azure 區域中重新連線的最新指導,請參閱從全區域失敗中復原 - Azure App Service

從全區域失敗復原一文中所述,從 2025 年 3 月 31 日起,在 Azure 區域中的災害期間,App Service web 應用程式將不再處於災害復原模式。 我們鼓勵您實作常用的災害復原技術,以避免發生區域性災害時,Web 應用程式的功能或資料遺失。
App Service 環境 (V2 & V3) 在 Azure App Service 環境中,您可以進行隨選自訂備份或使用自動備份。 自動備份可還原至相同的 ASE 內、而非在另一個 ASE 中的目標應用程式。 自訂備份可還原至另一個 ASE 中的目標應用程式 (例如從 V2 ASE 還原至 V3 ASE)。 備份可以還原至與來源應用程式相同的 OS 平台目標應用程式。

請參閱在 Azure App Service 中備份並還原應用程式,以取得更多詳細資訊。
我們鼓勵您使用常用的災害復原技術,為部署到 App Service 環境的 Web 應用程式實作災害復原指導。
Azure Functions (專用) 在 Azure Functions 中,您可以進行隨選自訂備份或使用自動備份。 您可以藉由還原至新應用程式或位置,覆寫現有的應用程式以還原備份。

請參閱在 Azure App Service 中備份並還原應用程式,以取得更多資訊。
如需如何在區域性災害期間,將 Azure Functions 應用程式 (專用) 資源在不同的 Azure 區域中重新連線的最新指導,請參閱從全區域失敗中復原 - Azure App Service

從全區域失敗復原一文中所述,從 2025 年 3 月 31 日起,在 Azure 區域中的災害期間,App Service 應用程式將不會處於災害復原模式。 請改為實作 Azure Functions 異地災害復原

此外,您也可以參考 Azure Functions 專用常用的災害復原技術
Azure Functions 取用和進階 部署至取用和進階方案的 Azure 函數不會提供自訂和自動備份的存取權。 函數應用程式內容位於 Azure 儲存體帳戶中。 使用 Azure 儲存體備援選項,以確保儲存體帳戶在中斷期間符合其可用性和持久性目標。

如果您已在 Azure 入口網站中使用編輯器建立函數,您也可以將現有的函數應用程式專案下載為 .ZIP 檔案
強烈建議您實作 Azure Functions 異地災害復原和可靠性

自動備份與自訂備份

App Service 中有兩種備份類型。 只要應用程式位處支援的定價層中,系統就會定期為其自動備份。 自訂備份需要初始設定,且可視需要或依排程進行。 下表顯示這兩種類型間的差異。

功能 自動備份 自訂備份
定價層 基本標準進階隔離 基本標準進階隔離
需要設定 否。 是。
備份大小 30 GB。 10 GB,其中 4 GB 可以是連結的資料庫。
連結的資料庫 未備份。 您可以備份下列連結的資料庫:SQL Database適用於 MySQL 的 Azure 資料庫適用於 PostgreSQL 的 Azure 資料庫應用程式內的 MySQL
需要儲存體帳戶 否。 是。
備份頻率 每小時,無法設定。 可設定。
保留期 30 天,無法設定。
- 第 1-3 天:保留每小時備份。
- 第 4-14 天:保留每 3 小時備份。
- 第 15-30 天:保留每 6 小時備份。
0-30 天或無限期。
可下載 否。 可以,作為 Azure 儲存體 Blob。
部分備份 不支援。 支援。
透過 VNet 進行備份 不支援。 支援。

還原備份

注意

App Service 會在還原備份時停止目標應用程式或目標位置。 若要將生產應用程式的停機時間最小化,請先將備份還原至部署位置,然後再交換至實際執行環境。

  1. Azure 入口網站的應用程式管理頁面中,選取左側功能表中的 [備份]。 [備份] 頁面會列出您應用程式的所有自動和自訂備份,及每個備份的狀態。

    Screenshot that shows how to open the backups page.

  2. 按一下 [還原] 連結,選取要還原的自動備份或自訂備份。

    Screenshot that shows how to select the restore link.

  3. 會自動為您填入 [備份詳細資料] 區段。

  4. 在 [選擇目的地] 中指定要還原的目的地。 若要還原新的應用程式,請選取 [App Service] 方塊下方的 [新建]。 若要還原至新的部署位置,請選取部署位置方塊下方的 [新建]

    如果您選擇現有的位置,則系統會將其檔案系統中的所有現有資料予以清除和覆寫。 生產位置名稱和應用程式名稱相同。

  5. 您可以在 [進階選項] 下方還原您的網站設定。

  6. 按一下 [還原]。

建立自訂備份

  1. Azure 入口網站的應用程式管理頁面中,選取左側功能表中的 [備份]

    Screenshot that shows how to open the backups page.

  2. 在 [備份] 頁面頂端選取 [設定自訂備份]

  3. 在 [儲存體帳戶] 中,選取相同訂閱中的現有儲存體帳戶,或選取 [新建]。 對 [容器] 執行相同動作。

    若要備份連結的資料庫,請選取 [下一步:進階]> [包含資料庫],然後選取要備份的資料庫。

    注意

    若要讓支援的資料庫出現在此清單中,其連接字串必須存在於您應用程式之 [設定] 頁面的 [連接字串] 區段中。

    應用程式內的 MySQL 資料庫始終會備份,無須任何設定。 如果您對應用程式內 MySQL 資料庫進行手動設定 (例如,新增連接字串),可能就無法正確備份。

  4. 按一下 [設定]

    設定儲存體帳戶和容器之後,您可以隨時起始隨選備份。 隨選備份會無限期保留。

  5. 在 [備份] 頁面頂端選取 [立即備份]

    Screenshot that shows how to make an on-demand backup.

    自訂備份會顯示在具有進度指示器的清單中。 如果失敗並出現錯誤,您可以選取明細項目以查看錯誤訊息。

設定自動排程備份

  1. 在 [設定自訂備份] 頁面中選取 [設定排程]

  2. 視需要設定備份排程,然後選取 [設定]

備份和還原連結的資料庫

自訂備份可以包含連結的資料庫 (除非透過 Azure 虛擬網路設定備份)。 若要確定您的備份包含連結的資料庫,請執行下列動作:

  1. 請確定連結的資料庫是受支援的
  2. 建立指向資料庫的連接字串。 當應用程式設定中存在有效的連接字串時,資料庫會被視為「連結」至應用程式。
  3. 請遵循在建立自訂備份中的步驟,在 [進階] 索引標籤中選取連結的資料庫。

若要還原自訂備份中包含的資料庫:

  1. 請遵循還原備份中的步驟。
  2. 在 [進階選項] 中,選取 [包含資料庫]

如需疑難排解資訊,請參閱為什麼我的連結資料庫未備份

透過 Azure 虛擬網路備份和還原 (預覽版)

透過自訂備份,如果符合下列需求,則可以將應用程式的檔案和組態資料備份到受防火牆保護的儲存體帳戶:

若要透過 Azure 虛擬網路備份和還原:

  1. 在設定自訂備份時,請選取 [透過虛擬網路整合進行備份/還原]
  2. 選取 [設定] 來儲存設定。

如果您沒有看到核取方塊,或核取方塊已停用,請確認您已符合上述需求。

儲存組態之後,會透過虛擬網路進行任何手動、排程的備份或還原。 如果您變更應用程式、虛擬網路或防止應用程式透過虛擬網路存取儲存體帳戶的儲存體帳戶,備份或還原作業將會失敗。

設定部分備份

自訂備份支援部份備份 (不支援自動備份)。 有時您並不想要備份應用程式上的所有項目。 以下是一些範例:

  • 您為包含永不變更的靜態內容 (例如舊部落格文章或影像) 的應用程式 設定每週備份
  • 您應用程式的內容超過 10 GB (這是一次可備份的數量上限)。
  • 您不想要備份記錄檔。

若要排除您未來備份中儲存的資料夾和檔案,請在應用程式的 %HOME%\site\wwwroot 資料夾中建立 _backup.filter 檔案。 請在此檔案中指定您想要排除的檔案和資料夾清單。

提示

您可以瀏覽至 https://<app-name>.scm.azurewebsites.net/DebugConsole 來存取檔案。 如果出現提示,登入您的 Azure 帳戶。

識別您想要從備份中排除的資料夾。 例如,您想要篩選掉醒目提示的資料夾和檔案。

Screenshot that shows files and folders to exclude from backups.

建立名為 _backup.filter 的檔案並將上述清單放入此檔案中,但請移除根 %HOME%。 一行列出一個目錄或檔案。 因此,檔案的內容應該如下:

\site\wwwroot\Images\brand.png
\site\wwwroot\Images\2014
\site\wwwroot\Images\2013

使用 ftp 或任何其他方法,將 _backup.filter 檔案上傳到您站台的 D:\home\site\wwwroot\ 目錄。 如果您希望的話,也可以使用 Kudu DebugConsole 直接建立該檔案,然後在該處插入內容。

以與平常相同的方式執行備份,自定隨選自訂排程。 會從未來備份中排除 _backup.filter 中指定的所有檔案和資料夾。

注意

_backup.filter變更還原的運作方式。 如果沒有 _backup.filter,還原備份會刪除應用程式中的所有現有檔案,並將其取代為備份中的檔案。 使用 _backup.filter 時,應用程式檔案系統 _backup.filter 中包含的任何內容會保留為 (未刪除)。

備份的儲存方式

在您為應用程式建立一或多個備份之後,這些備份就會顯示在您儲存體帳戶及應用程式的 [容器] 頁面中。 在儲存體帳戶中,每個備份都是由一個 .zip 檔案 (包含備份資料) 和一個 .xml 檔案 (包含 .zip 檔案內容的資訊清單) 所組成。 如果您想要在不實際執行應用程式還原的情況下存取備份,您可以將這些檔案解壓縮並加以瀏覽。

應用程式的資料庫備份則儲存在 .zip 檔案的根目錄中。 若是 SQL 資料庫,這會是 BACPAC 檔案 (無副檔名),而且可以匯入。 若要根據 BACPAC 匯出,在 Azure SQL Database 中建立資料庫,請參閱匯入 BACPAC 檔案以在 Azure SQL Database 中建立資料庫

警告

websitebackups 容器中的檔案進行任何變更,都可能導致備份失效,進而無法還原。

錯誤訊息

[備份] 頁面會顯示每個備份的狀態。 若要取得失敗備份相關的記錄詳細資料,請選取清單中的明細項目。 使用以下資料表,來協助您對備份進行疑難排解。 如果資料表中未記載失敗,請開立支援票證。

錯誤 Fix
儲存體存取失敗。 刪除備份排程並重新設定。 或者,重新設定備份儲存體。
網站 + 資料庫大小超過備份的 {0} GB 限制。 您的內容大小為 {1} GB。 從備份中排除某些檔案 ,或移除備份的資料庫部分,並改用外部提供的備份。
連線到伺服器 {1} 上的資料庫 {0} 時發生錯誤:使用方法「mysql_native_password」對使用者「<username>」裝載「{1}」的驗證失敗,並出現訊息:未知的資料庫「<db-name>」 更新資料庫連接字串。
無法解析 {0}。 {1} (CannotResolveStorageAccount) 刪除備份排程並重新設定。
使用者「{0}」登入失敗。 更新資料庫連接字串。
建立 {0} ({1}) 的資料庫複本擲回例外狀況。 無法建立資料庫複本。 在連接字串中使用系統管理使用者。
伺服器主體「<name>」在目前的資訊安全內容下無法存取「主要」資料庫。 無法開啟登入所要求的資料庫 "master"。 登入失敗。 使用者「<name>」登入失敗。 在連接字串中使用系統管理使用者。
和 SQL Server 建立連線時,發生與網路相關或執行個體特定的錯誤。 找不到或無法存取伺服器。 檢查執行個體名稱是否正確以及 SQL Server 執行個體是否設定為允許遠端連接。 (提供者:具名管道提供者,錯誤: 40 - 無法開啟 SQL Server 連線)。 檢查連接字串是否有效。 允許應用程式在資料庫伺服器設定中的輸出 IP
無法開啟登入所要求的伺服器「<name>」。 登入失敗。 檢查連接字串是否有效。
遺漏有效的共用存取簽章的強制參數。 刪除備份排程並重新設定。
需要 SSL 連線。 請指定 SSL 選項,然後在嘗試連線時再試一次。 資料庫備份不支援適用於 MySQL 的 Azure 資料庫和適用於 PostgreSQL 的 Azure 資料庫的 SSL 連線。 請改用個別資料庫中的原生備份功能。

使用指令碼進行自動化

您可以使用 Azure CLIAzure PowerShell,透過指令碼將備份管理作業自動化。

例如,請參閱:

常見問題集

備份是否為累加式更新或完整備份?

每個備份都是應用程式的完整離線複本,而不是增量更新。

Azure Functions 支援自動備份嗎?

針對使用專用 (App Service) [基本] 或 [標準] 或 [進階] 層的 Azure Functions,可以使用自動備份。 自動備份不支援使用量彈性進階定價層中的函式應用程式。

自動備份中包含哪些內容?

下表顯示自動備份中備份的內容:

設定 已還原?
Windows 應用程式:目錄 %HOME% 下的所有應用程式內容
Linux 應用程式:目錄 /home 下的所有應用程式內容
自訂容器 (Windows 和 Linux)永續性儲存體中的內容
Yes
run-from-ZIP 套件的內容 No
來自任何自訂掛接 Azure 儲存體的內容,例如來自 Azure 檔案儲存體共用。 No

下表顯示當您選擇還原應用程式設定時,要還原的應用程式設定:

設定 已還原?
原生記錄設定,包括 Azure 儲存體帳戶和容器設定 Yes
Application Insights 設定 Yes
健康狀態檢查 Yes
網路功能,例如私人端點混合式連線虛擬網路整合 No
驗證 No
受控識別 No
自訂網域 No
TLS/SSL No
橫向擴增 No
使用 Azure 監視器進行的診斷 No
警示和計量 No
Backup No
相關聯的部署位置 No
自訂備份支援的任何已連結資料庫 No

自訂備份中包含哪些內容?

自訂備份 (隨選備份或排程備份) 包含自動備份中包含的所有內容、設定以及任何連結的資料庫 (不超過允許的大小上限)。

透過 Azure 虛擬網路備份時,您無法備份連結的資料庫

為什麼我的已連結資料庫未備份?

已連結資料庫僅針對自訂備份進行備份 (不超過允許的大小上限)。 如果超過備份大小上限 (10 GB),或超過資料庫大小上限 (4 GB),則備份就會失敗。 以下是已連結資料庫未能備份的一些常見原因:

如果備份大小超過允許上限,會發生什麼事?

如果備份大小超過大小上限,就無法還原自動備份。 同樣地,若超過備份或資料庫的大小上限,自訂備份即會失敗。 例如,若要減少儲存體大小,請考慮將記錄、影像、音訊和影片等檔案移至 Azure 儲存體。

我可以使用已啟用安全性功能的儲存體帳戶嗎?

如果儲存體帳戶是應用程式相同虛擬網路拓撲的一部分,您可以備份至受防火牆保護的儲存體帳戶。 請參閱透過 Azure 虛擬網路備份和還原 (預覽版)

如何還原至不同訂閱中的應用程式?

  1. 建立 Azure 儲存體容器的自訂備份。
  2. 將備份 ZIP 檔案下載到本機電腦。
  3. 在目標應用程式的 [備份] 頁面中,選取頂端功能表中的 [還原]
  4. 在 [備份詳細資料] 中,選取 [來源] 中的 [儲存體]
  5. 選取慣用的儲存體帳戶。
  6. Zip 檔案中,選取 [上傳檔案]
  7. 在 [名稱] 中,選取 [瀏覽] 及下載的 ZIP 檔案。
  8. 設定 [還原備份] 等其餘區段。

如何還原至在相同訂用帳戶,但位於不同區域中的應用程式?

這些步驟與如何還原至不同訂用帳戶中的應用程式相同。

自動備份會儲存在何處?

自動備份的操作簡單,會儲存在與 App Service 相同的資料中心內,且不應依賴自動備份作為災害復原方案。

如何停止自動備份?

您無法停止自動備份。 自動備份會儲存在平台上,而且不會影響基礎應用程式執行個體或其儲存體。

後續步驟

Azure Blob 儲存體文件