使用 Azure CLI 管理 Azure 文件共享备份

Azure CLI 提供了一个命令行体验,用于管理 Azure 资源。 它是构建自定义自动化以使用 Azure 资源的绝佳工具。 本文介绍如何执行管理和监视由 Azure 备份所备份的 Azure 文件共享的任务。 还可以使用 Azure 门户执行这些步骤。

先决条件

本文假设你已有通过 Azure 备份备份的 Azure 文件共享。 如果你没有文件共享,请参阅使用 CLI 备份 Azure 文件共享来配置你的文件共享的备份。 本文将使用以下资源:

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

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

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

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

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

监视作业

当触发备份或还原操作时,备份服务会创建一个用于跟踪的作业。 若要监视已完成的或当前正在运行的作业,请使用 az backup job list cmdlet。 使用 CLI,你还可以暂停当前正在运行的作业等待作业完成

以下示例显示了 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"
  }
]

创建策略

可以创建备份策略,方法是使用以下参数执行 az backup policy create 命令:

  • --backup-management-type - Azure 存储
  • --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 个月,每年 - 1 月的第一个星期日,共 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。

可以根据需要修改策略的 schedule 和 retention 节。

示例

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

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

修改策略

你可以使用 az backup item set-policy 修改备份策略来更改备份频率或保持期。

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

  • --container-name:承载着文件共享的存储帐户的名称。 若要检索你的容器的名称或易记名称,请使用 az backup container list 命令。
  • --name:要更改其策略的文件共享的名称。 若要检索已备份项的名称或易记名称,请使用 az backup item list 命令。
  • --policy-name:要为文件共享设置的备份策略的名称。 你可以使用 az backup policy list 查看保管库的所有策略。

以下示例为 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 文件共享:

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

在存储中保留恢复点可能会产生费用,因为 Azure 备份创建的基础快照将会保留。 保留恢复点的好处是,以后可以根据需要还原文件共享。 如需了解保留恢复点的成本,请参阅定价详细信息。 如果选择删除所有恢复点,则无法还原文件共享。

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

  • --container-name:承载着文件共享的存储帐户的名称。 若要检索你的容器的名称或易记名称,请使用 az backup container list 命令。
  • --item-name:要停止保护的文件共享的名称。 若要检索已备份项的名称或易记名称,请使用 az backup item list 命令。

停止保护但保留恢复点

若要停止保护但保留数据,请使用 az backup protection disable 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。

停止保护而不保留恢复点

若要停止保护且不保留恢复点,请在 delete-backup-data 选项设置为 true 的情况下使用 az backup protection disable cmdlet。

下面的示例会停止对 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 文件共享的保护,但保留了恢复点,则以后可以恢复保护。 如果不保留恢复点,则无法恢复保护。

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

  • --container-name:承载着文件共享的存储帐户的名称。 若要检索你的容器的名称或易记名称,请使用 az backup container list 命令。
  • --item-name:要恢复保护的文件共享的名称。 若要检索已备份项的名称或易记名称,请使用 az backup item list 命令。
  • --policy-name:要为其恢复文件共享保护的备份策略的名称。

下面的示例使用 az backup protection resume cmdlet 来恢复使用 schedule1 备份策略对 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。

注销存储帐户

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

你需要提供容器名称来注销存储帐户。 若要检索容器的名称或易记名称,请使用 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 文件共享备份进行故障排除