使用Azure CLI管理Azure Files备份

本文介绍如何使用 Azure CLI 管理和监视备份Azure Files(snapshot 和 vaulted 备份)。 Azure CLI提供了用于管理Azure资源的命令行体验。 这是生成自定义自动化以使用Azure资源的绝佳工具。 还可以使用 Azure portal、Azure PowerShell、REST API 管理Azure Files备份。

若要了解 Azure Files支持的备份和还原方案、区域可用性和限制,请参阅 support matrix。 有关常见问题,请参阅 常见问题。

先决条件

本文假定你已有由 Azure Backup 备份的Azure Files。 如果没有,请参阅使用 CLI 备份Azure Files为文件共享配置备份。 本文将使用以下资源:

  • 资源组:azurefiles
  • RecoveryServicesVault:azurefilesvault
  • 存储帐户:afsaccount
  • 文件共享:azurefiles
  • 如果希望在本地运行 CLI 引用命令,install Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行Azure CLI。 有关详细信息,请参阅 如何在 Docker 容器中运行Azure CLI。

    • 如果使用本地安装,请使用 az login 命令登录到Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅Azure CLI登录。

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 使用 Azure CLI 的扩展。

    • 运行 az 版本查找已安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。

  • 本教程需要 2.0.18 或更高版本的Azure CLI。

监视作业

当触发备份或还原操作时,备份服务会创建一个跟踪任务。 若要监视已完成或当前正在运行的作业,请使用 az 备份作业列表 cmdlet。 使用 CLI,还可以暂停当前正在运行的作业或 wait,直到作业完成。

以下示例显示了 azurefilesvault 恢复服务保管库的备份作业的状态:

az backup job list --resource-group azurefiles --vault-name azurefilesvault
[
  {
    "eTag": null,
    "id": "/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupJobs/d477dfb6-b292-4f24-bb43-6b14e9d06ab5",
    "location": null,
    "name": "d477dfb6-b292-4f24-bb43-6b14e9d06ab5",
    "properties": {
      "actionsInfo": null,
      "activityId": "3cef43ed-0af4-43e2-b9cb-1322c496ccb4",
      "backupManagementType": "AzureStorage",
      "duration": "0:00:29.718011",
      "endTime": "2020-01-13T08:05:29.180606+00:00",
      "entityFriendlyName": "azurefiles",
      "errorDetails": null,
      "extendedInfo": null,
      "jobType": "AzureStorageJob",
      "operation": "Backup",
      "startTime": "2020-01-13T08:04:59.462595+00:00",
      "status": "Completed",
      "storageAccountName": "afsaccount",
      "storageAccountVersion": "MicrosoftStorage"
    },
    "resourceGroup": "azurefiles",
    "tags": null,
    "type": "Microsoft.RecoveryServices/vaults/backupJobs"
  },
  {
    "eTag": null,
    "id": "/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupJobs/1b9399bf-c23c-4caa-933a-5fc2bf884519",
    "location": null,
    "name": "1b9399bf-c23c-4caa-933a-5fc2bf884519",
    "properties": {
      "actionsInfo": null,
      "activityId": "2663449c-94f1-4735-aaf9-5bb991e7e00c",
      "backupManagementType": "AzureStorage",
      "duration": "0:00:28.145216",
      "endTime": "2020-01-13T08:05:27.519826+00:00",
      "entityFriendlyName": "azurefilesresource",
      "errorDetails": null,
      "extendedInfo": null,
      "jobType": "AzureStorageJob",
      "operation": "Backup",
      "startTime": "2020-01-13T08:04:59.374610+00:00",
      "status": "Completed",
      "storageAccountName": "afsaccount",
      "storageAccountVersion": "MicrosoftStorage"
    },
    "resourceGroup": "azurefiles",
    "tags": null,
    "type": "Microsoft.RecoveryServices/vaults/backupJobs"
  }
]

创建备份策略

Azure Files Azure Backup策略定义备份的创建方式和时间、恢复点的保留期以及数据保护和恢复规则。

选择备份层:

  • 快照层
  • 保管库标准层

可以通过使用以下参数执行 az 备份策略 create 命令来创建备份策略:

  • --backup-management-type - Azure Storage
  • --workload-type - AzureFileShare
  • --name - 策略的名称
  • --policy - JSON 文件,其中包含有关计划和保留的相应详细信息
  • --resource-group - 保管库的资源组
  • --vault-name - 保管库的名称

示例

az backup policy create --resource-group azurefiles --vault-name azurefilesvault --name schedule20 --backup-management-type AzureStorage --policy samplepolicy.json --workload-type AzureFileShare

示例 JSON (samplepolicy.json)

{
  "eTag": null,
  "id": "/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupPolicies/schedule20",
  "location": null,
  "name": "schedule20",
  "properties": {
    "backupManagementType": "AzureStorage",
    "protectedItemsCount": 0,
    "retentionPolicy": {
      "dailySchedule": {
        "retentionDuration": {
          "count": 30,
          "durationType": "Days"
        },
        "retentionTimes": [
          "2020-01-05T08:00:00+00:00"
        ]
      },
      "monthlySchedule": null,
      "retentionPolicyType": "LongTermRetentionPolicy",
      "weeklySchedule": null,
      "yearlySchedule": null
    },
    "schedulePolicy": {
      "schedulePolicyType": "SimpleSchedulePolicy",
      "scheduleRunDays": null,
      "scheduleRunFrequency": "Daily",
      "scheduleRunTimes": [
        "2020-01-05T08:00:00+00:00"
      ],
      "scheduleWeeklyFrequency": 0
    },
    "timeZone": "UTC",
    "workLoadType": “AzureFileShare”
  },
  "resourceGroup": "azurefiles",
  "tags": null,
  "type": "Microsoft.RecoveryServices/vaults/backupPolicies"
}

创建每天配置多个备份的备份策略的示例

此示例 JSON 满足以下要求:

  • 计划:在接下来的 12 个小时内,从上午 8 点 (UTC) 开始,每 4 小时备份一次。
  • 保留期:每日 - 5 天,每周 - 连续 12 周的每个星期日,每月 - 每个月的第一个星期日,持续 60 个月,每年 - 每年一月的第一个星期日,持续 10 年。
{
    "properties":{
        "backupManagementType": "AzureStorage",
        "workloadType": "AzureFileShare",
        "schedulePolicy": {
            "schedulePolicyType": "SimpleSchedulePolicy",
            "scheduleRunFrequency": "Hourly",
            "hourlySchedule": {
                "interval": 4,
                "scheduleWindowStartTime": "2021-09-29T08:00:00.000Z",
                "scheduleWindowDuration": 12
            }
        },
        "timeZone": "UTC",
        "retentionPolicy": {
            "retentionPolicyType": "LongTermRetentionPolicy",
            "dailySchedule": {
                "retentionTimes": null,
                "retentionDuration": {
                    "count": 5,
                    "durationType": "Days"
                }
            },
            "weeklySchedule": {
                "daysOfTheWeek": [
                    "Sunday"
                ],
                "retentionTimes": null,
                "retentionDuration": {
                    "count": 12,
                    "durationType": "Weeks"
                }
            },
            "monthlySchedule": {
                "retentionScheduleFormatType": "Weekly",
                "retentionScheduleDaily": null,
                "retentionScheduleWeekly": {
                    "daysOfTheWeek": [
                        "Sunday"
                    ],
                    "weeksOfTheMonth": [
                        "First"
                    ]
                },
                "retentionTimes": null,
                "retentionDuration": {
                    "count": 60,
                    "durationType": "Months"
                }
            },
            "yearlySchedule": {
                "retentionScheduleFormatType": "Weekly",
                "monthsOfYear": [
                    "January"
                ],
                "retentionScheduleDaily": null,
                "retentionScheduleWeekly": {
                    "daysOfTheWeek": [
                        "Sunday"
                    ],
                    "weeksOfTheMonth": [
                        "First"
                    ]
                },
                "retentionTimes": null,
                "retentionDuration": {
                    "count": 10,
                    "durationType": "Years"
                }
            }
        }
    }
}

成功创建策略后,命令的输出会显示在执行命令时作为参数传递的策略 JSON。

可以根据需要修改策略的时间表和保留期部分。

示例

如果要将每月第一个星期日的备份保留两个月,请根据以下示例更新每月计划:

"monthlySchedule": {
        "retentionDuration": {
          "count": 2,
          "durationType": "Months"
        },
        "retentionScheduleDaily": null,
        "retentionScheduleFormatType": "Weekly",
        "retentionScheduleWeekly": {
          "daysOfTheWeek": [
            "Sunday"
          ],
          "weeksOfTheMonth": [
            "First"
          ]
        },
        "retentionTimes": [
          "2020-01-05T08:00:00+00:00"
        ]
      }

修改策略

可以使用 az 备份项 set-policy修改备份策略来更改备份频率或保留范围。

若要更改策略,请定义以下参数:

  • --container-name:承载文件共享的storage帐户的名称。 若要检索容器的 name 或 friendly name,请使用 az 备份容器列表命令。
  • --name:要更改其策略的文件共享名称。 若要检索备份项的 name 或 友好名称,请使用 az 备份项列表命令。
  • --policy-name:要为文件共享设置的备份策略的名称。 可以使用 az 备份策略列表查看保管库的所有策略。

以下示例为 afsaccount 存储帐户中存在的 azurefiles 文件共享设置 schedule2 备份策略。

az backup item set-policy --policy-name schedule2 --name azurefiles --vault-name azurefilesvault --resource-group azurefiles --container-name "StorageContainer;Storage;AzureFiles;afsaccount" --name "AzureFileShare;azurefiles" --backup-management-type azurestorage --out table

还可以通过提供以下两个其他参数,使用容器和项的易记名称来运行上一个命令:

  • --backup-management-type:azurestorage
  • --workload-type:azurefileshare
az backup item set-policy --policy-name schedule2 --name azurefiles --vault-name azurefilesvault --resource-group azurefiles --container-name afsaccount --name azurefiles --backup-management-type azurestorage --out table
Name                                  ResourceGroup
------------------------------------  ---------------
fec6f004-0e35-407f-9928-10a163f123e5  azurefiles

输出中的“Name”属性对应于备份服务为更改策略操作创建的作业的名称。 若要跟踪作业的状态,请使用 az backup job show cmdlet。

停止对文件共享的保护

有两种方法可以停止保护Azure Files:

  • 停止所有将来的备份作业,并删除所有恢复点。
  • 停止所有将来的备份作业,但保留恢复点。

可能会与将恢复点保存在存储中相关的成本,因为由 Azure 备份创建的基础快照会被保留。 离开恢复点的好处是以后可以还原文件共享(如果需要)。 有关保留恢复点的成本信息,请参阅定价详细信息。 如果选择删除所有恢复点,则无法还原文件共享。

若要停止对文件共享的保护,请定义以下参数:

  • --container-name:承载文件共享的storage帐户的名称。 若要检索容器的 name 或 friendly name,请使用 az 备份容器列表命令。
  • --item-name:要停止保护的文件共享的名称。 若要检索备份项的 name 或 友好名称,请使用 az 备份项列表命令。

停止保护但保留恢复点

若要在保留数据时停止保护,请使用 az 备份保护禁用 cmdlet。

以下示例停止对azurefiles文件共享的保护,但保留所有恢复点。

az backup protection disable --vault-name azurefilesvault --resource-group azurefiles --container-name "StorageContainer;Storage;AzureFiles;afsaccount" --item-name “AzureFileShare;azurefiles” --out table

还可以通过提供以下两个其他参数,使用容器和项的易记名称来运行上一个命令:

  • --backup-management-type:azurestorage
  • --workload-type:azurefileshare
az backup protection disable --vault-name azurefilesvault --resource-group azurefiles --container-name afsaccount --item-name azurefiles --workload-type azurefileshare --backup-management-type Azurestorage --out table
Name                                  ResourceGroup
------------------------------------  ---------------
fec6f004-0e35-407f-9928-10a163f123e5  azurefiles

输出中的“Name”属性对应于备份服务为停止保护操作创建的作业的名称。 若要跟踪作业的状态,请使用 az backup job show cmdlet。

停止保护而不保留恢复点

若要停止保护而不保留恢复点,请使用 az 备份保护禁用 cmdlet,并将 delete-backup-data 选项设置为 true。

以下示例停止对azurefiles文件共享的保护,并且不保留恢复点。

az backup protection disable --vault-name azurefilesvault --resource-group azurefiles --container-name "StorageContainer;Storage;AzureFiles;afsaccount" --item-name “AzureFileShare;azurefiles” --delete-backup-data true --out table

还可以通过提供以下两个其他参数,使用容器和项的易记名称来运行上一个命令:

  • --backup-management-type:azurestorage
  • --workload-type:azurefileshare
az backup protection disable --vault-name azurefilesvault --resource-group azurefiles --container-name afsaccount --item-name azurefiles --workload-type azurefileshare --backup-management-type Azurestorage --delete-backup-data true --out table

恢复对文件共享的保护

如果停止了对Azure Files但保留恢复点的保护,则可以稍后恢复保护。 如果不保留恢复点,则无法恢复保护。

若要恢复对文件共享的保护,请定义以下参数:

  • --container-name:承载文件共享的storage帐户的名称。 若要检索容器的 name 或 friendly name,请使用 az 备份容器列表命令。
  • --item-name:要恢复保护的文件共享的名称。 若要检索备份项的 name 或 友好名称,请使用 az 备份项列表命令。
  • --policy-name:要恢复文件共享保护的备份策略的名称。

以下示例使用 az 备份保护恢复 cmdlet 通过使用 azurefiles 备份策略恢复对 文件共享的保护。

az backup protection resume --vault-name azurefilesvault --resource-group azurefiles --container-name "StorageContainer;Storage;AzureFiles;afsaccount” --item-name “AzureFileShare;azurefiles” --policy-name schedule2 --out table

还可以通过提供以下两个其他参数,使用容器和项的易记名称来运行上一个命令:

  • --backup-management-type:azurestorage
  • --workload-type:azurefileshare
az backup protection resume --vault-name azurefilesvault --resource-group azurefiles --container-name afsaccount --item-name azurefiles --workload-type azurefileshare --backup-management-type Azurestorage --policy-name schedule2 --out table
Name                                  ResourceGroup
------------------------------------  ---------------
75115ab0-43b0-4065-8698-55022a234b7f  azurefiles

输出中的“Name”属性对应于备份服务为您的简历保护操作创建的作业的名称。 若要跟踪作业的状态,请使用 az backup job show cmdlet。

注销存储帐户

如果要使用不同的恢复服务保险库保护特定存储帐户中的文件共享,请先在该存储帐户中停止对所有文件共享的保护。 然后,从当前用于保护的恢复服务保管库中注销该帐户。

需要提供一个容器名称才能注销存储账户。 若要检索容器的 name 或 友好名称,请使用 az backup container list 命令。

以下示例使用 `az backup container unregister` cmdlet 从 `azurefilesvault` 注销 `afsaccount` 存储帐户。

az backup container unregister --vault-name azurefilesvault --resource-group azurefiles --container-name "StorageContainer;Storage;AzureFiles;afsaccount" --out table

还可以通过提供以下其他参数,使用容器的易记名称来运行上一 cmdlet:

  • --backup-management-type:azurestorage
az backup container unregister --vault-name azurefilesvault --resource-group azurefiles --container-name afsaccount --backup-management-type azurestorage --out table

后续步骤

排除 Azure 文件备份故障。