共用方式為


使用 Azure CLI 備份儲存體帳戶中的 Azure Blob

本文描述如何使用 Azure CLI 來備份 Azure Blob。 您現在可以執行作業保存的備份,以使用 Azure 備份 來保護記憶體帳戶中的區塊 Blob。

如需 Azure Blob 區域可用性、支援案例和限制的相關資訊,請參閱支援矩陣

在您開始使用 Intune 之前

開始之前,請參閱必要條件支援矩陣

建立備份保存庫

備份保存庫是 Azure 中的儲存體實體,可儲存 Azure 備份所支援各種較新工作負載的備份資料,例如適用於 PostgreSQL 的 Azure 資料庫伺服器,以及儲存體帳戶中的 Blob 和 Azure 磁碟。 保存庫可讓您輕鬆組織備份資料,同時可減輕管理負擔。 備份保存庫會以 Azure 的 Azure Resource Manager 模型為基礎,可提供增強功能來協助保護備份資料。

建立備份保存庫之前,請在保存庫中選擇資料的儲存體備援。 然後,繼續使用該儲存體備援和位置來建立備份保存庫。 在本文中,我們會在 westus 中的資源群組 testBkpVaultRG 下,建立備份保存庫 TestBkpVault。 使用 az dataprotection vault create 命令來建立備份保存庫。 深入了解建立備份保存庫

az dataprotection backup-vault create -g testBkpVaultRG --vault-name TestBkpVault -l westus --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"

{
  "eTag": null,
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
  "identity": {
    "principalId": "2ca1d5f7-38b3-4b61-aa45-8147d7e0edbc",
    "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "type": "SystemAssigned"
  },
  "location": "westus",
  "name": "TestBkpVault",
  "properties": {
    "provisioningState": "Succeeded",
    "storageSettings": [
      {
        "datastoreType": "VaultStore",
        "type": "LocallyRedundant"
      }
    ]
  },
  "resourceGroup": "testBkpVaultRG",
  "systemData": null,
  "tags": null,
  "type": "Microsoft.DataProtection/backupVaults"
}

重要

雖然您會看到保存庫的備份儲存體備援,但該備援並不適用於 Blob 的作業備份。 這是由於備份本質上屬於本機,且不會在備份保存庫中儲存任何資料。 此處的備份保存庫為管理實體,可協助您管理儲存體帳戶中區塊 Blob 的保護。

建立保存庫後,現在來建立備份原則,以保護儲存體帳戶中的 Azure Blob。

建立備份原則

您可以使用 Azure CLI 為 Azure Blob 建立操作備份保存庫備份的備份原則(預覽)。

選擇備份層

建立原則並設定 Azure Blob 的備份之前,請參閱 必要條件

若要了解 Azure Blob 備份的備份原則內部元件,請使用 az dataprotection backup-policy get-default-policy-template 命令來擷取原則範本。 此命令會傳回指定資料來源類型的預設原則範本。 使用此原則範本來建立新的原則。

az dataprotection backup-policy get-default-policy-template --datasource-type AzureBlob

{
  "datasourceTypes": [
    "Microsoft.Storage/storageAccounts/blobServices"
  ],
  "name": "BlobPolicy1",
  "objectType": "BackupPolicy",
  "policyRules": [
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P30D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }
  ]
}

此原則範本僅由生命週期所組成 (其決定何時刪除/複製/移動備份)。 由於 Blob 的作業備份本質上是連續的,因此您不需要排程執行備份。

"policyRules": [
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P30D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }
  ]

注意

若還原期間較長,可能會導致還原作業需要較久時間才能完成。 此外,還原一組資料所需的時間,取決於在還原期間所進行的寫入和刪除作業數目。 例如,假設有個帳戶包含一百萬個物件,而且每日會新增 3,000 個物件並刪除 1,000 個物件,則大約需要兩小時,才能還原至過去 30 天的某個時間點。

對於具有此變動率的帳戶,不建議保留期間和還原超過前 90 天。

一旦原則 JSON 具有所有必要值,請繼續使用 az dataprotection backup-policy create 命令,從原則物件建立新的原則。

az dataprotection backup-policy get-default-policy-template --datasource-type AzureBlob > policy.json
az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n BlobBackup-Policy --policy policy.json

{
    "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/BlobBackup-Policy",
    "name": "BlobBackup-Policy",
    "properties": {
      "datasourceTypes": [
        "Microsoft.Storage/storageAccounts/blobServices"
      ],
      "objectType": "BackupPolicy",
      "policyRules": [
        {
          "isDefault": true,
          "lifecycles": [
            {
              "deleteAfter": {
                "duration": "P2D",
                "objectType": "AbsoluteDeleteOption"
              },
              "sourceDataStore": {
                "dataStoreType": "OperationalStore",
                "objectType": "DataStoreInfoBase"
              },
              "targetDataStoreCopySettings": []
            }
          ],
          "name": "Default",
          "objectType": "AzureRetentionRule"
        }
      ]
    },
    "resourceGroup": "testBkpVaultRG",
    "systemData": null,
    "type": "Microsoft.DataProtection/backupVaults/backupPolicies"
  }

設定備份

建立保存庫和原則之後,您必須考慮兩個關鍵點來保護記憶體帳戶內的所有 Azure Blob。

  • 主要實體
  • 權限

主要實體

  • 儲存體 包含要保護之 Blob 的帳戶:擷取記憶體帳戶的 Azure Resource Manager 標識符,其中包含要保護的 Blob。 這將作為儲存體帳戶的識別碼。 我們將使用名為 CLITestSA 的記憶體帳戶範例,其資源群組 blobrg 下位於東南亞區域的不同訂用帳戶中。

    "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/blobrg/providers/Microsoft.Storage/storageAccounts/CLITestSA"
    
  • 備份保存庫:備份保存庫需要記憶體帳戶的許可權,才能在記憶體帳戶記憶體存在的 Blob 上啟用備份。 您會使用保存庫的系統指派的受控識別來指派這類權限。

指派權限

您必須透過 Azure RBAC 將一些許可權指派給已建立的保存庫(以保存庫 MSI 代表)和相關記憶體帳戶。 您可以透過入口網站或 PowerShell 來執行這些作業。 深入瞭解所有相關 許可權

準備要求以設定 Blob 備份

設定所有相關權限之後,請執行下列命令來設定備份:

  1. 使用 az dataprotection backup-instance initialize 命令,使用相關的保存庫、原則、記憶體帳戶來準備相關要求。

    az dataprotection backup-instance initialize --datasource-type AzureBlob  -l southeastasia --policy-id "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/BlobBackup-Policy" --datasource-id "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/blobrg/providers/Microsoft.Storage/storageAccounts/CLITestSA" > backup_instance.json
    
  2. 使用 az dataprotection backup-instance create 命令提交要求。

    az dataprotection backup-instance create -g testBkpVaultRG --vault-name TestBkpVault --backup-instance backup_instance.json
    
    {
        "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupInstances/CLITestSA-CLITestSA-c3a2a98c-def8-44db-bd1d-ff6bc86ed036",
        "name": "CLITestSA-CLITestSA-c3a2a98c-def8-44db-bd1d-ff6bc86ed036",
        "properties": {
          "currentProtectionState": "ProtectionConfigured",
          "dataSourceInfo": {
            "datasourceType": "Microsoft.Storage/storageAccounts/blobServices",
            "objectType": "Datasource",
            "resourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/blobrg/providers/Microsoft.Storage/storageAccounts/CLITestSA",
            "resourceLocation": "southeastasia",
            "resourceName": "CLITestSA",
            "resourceType": "Microsoft.Storage/storageAccounts",
            "resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/blobrg/providers/Microsoft.Storage/storageAccounts/CLITestSA"
          },
          "dataSourceSetInfo": null,
          "friendlyName": "CLITestSA",
          "objectType": "BackupInstance",
          "policyInfo": {
            "policyId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/BlobBackup-Policy",
            "policyParameters": {
              "dataStoreParametersList": [
                {
                  "dataStoreType": "OperationalStore",
                  "objectType": "AzureOperationalStoreParameters",
                  "resourceGroupId": ""
                }
              ]
            },
            "policyVersion": ""
          },
          "protectionErrorDetails": null,
          "protectionStatus": {
            "errorDetails": null,
            "status": "ProtectionConfigured"
          },
          "provisioningState": "Succeeded"
        },
        "resourceGroup": "testBkpVaultRG",
        "systemData": null,
        "type": "Microsoft.DataProtection/backupVaults/backupInstances"
      }
    

重要

設定 Blob 備份的記憶體帳戶之後,會影響一些功能,例如變更摘要和刪除鎖定。 深入了解

下一步

使用 Azure CLI 來還原 Azure Blob