使用 Azure PowerShell 还原 Azure Blob

本文介绍如何使用 PowerShell 从操作备份或保管备份为 Azure Blob 执行还原。 通过操作备份,你可以将配置了操作备份的存储帐户中的所有块 blob 或部分 blob 内容还原到保持期内的任何时间点。 通过保管备份,你可以根据备份计划使用创建的恢复点执行还原。

重要

Az 5.9.0 版本起提供对 Azure blob 的支持

重要

在继续使用 Azure 备份来还原 Azure blob 之前,请参阅要点

本文将指导如何进行以下操作:

  • 还原 Azure Blob

  • 跟踪还原操作状态

让我们使用示例中资源组 testBkpVaultRG 下现有的备份保管库 TestBkpVault

$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault -ResourceGroupName "testBkpVaultRG"

还原存储帐户中的 Azure Blob

选择备份层:

提取还原的有效时间范围

由于 blob 的操作备份是连续的,因此没有要从中还原的不同点。 相反,我们需要提取可以将 blob 还原到任何时间点的有效时间范围。 在此示例中,我们检查过去 30 天内有效的还原时间范围。

$startDate = (Get-Date).AddDays(-30)
$endDate = Get-Date

首先使用 Get-AzDataProtectionBackupInstance 命令提取所有实例并标识相关实例。

$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name

还可使用 Az. Resourcegraph 和 Search-AzDataProtectionBackupInstanceInAzGraph 命令搜索多个保管库和订阅中的实例。

$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureBlob -ProtectionStatus ProtectionConfigured

标识实例之后,使用 AzDataProtectionRestorableTimeRange 命令提取相关恢复范围。

Find-AzDataProtectionRestorableTimeRange -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName -StartTime $startDate -endTime $endDate

EndTime    : 2021-04-24T08:57:36.4149422Z
ObjectType : RestorableTimeRange
StartTime  : 2021-03-25T14:27:31.0000000Z

$DesiredPIT = (Get-Date -Date "2021-04-23T02:47:02.9500000Z")

准备还原请求

修复还原时间点之后,有多个还原选项。 使用 Initialize-AzDataProtectionRestoreRequest 命令以准备还原请求的所有相关详细信息。

将所有 Blob 还原到某个时间点

可以通过将存储帐户中所有的块 Blob 回滚到所选时间点来还原这些 Blob。 包含大量数据或见证高流失率的存储帐户可能需要更长的时间才能还原。

$restorerequest = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureBlob -SourceDataStore OperationalStore -RestoreLocation $TestBkpVault.Location  -RestoreType OriginalLocation -PointInTime (Get-Date -Date "2021-04-23T02:47:02.9500000Z") -BackupInstance $AllInstances[2]

还原所选容器

可以浏览并选择最多 10 个要还原的容器。

$restorerequest = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureBlob -SourceDataStore OperationalStore -RestoreLocation $TestBkpVault.Location  -RestoreType OriginalLocation -PointInTime (Get-Date -Date "2021-04-23T02:47:02.9500000Z") -BackupInstance $AllInstances[2] -ItemLevelRecovery -ContainersList "abc","xyz"

使用前缀匹配还原容器

可使用前缀匹配来还原 blob 的子集。 最多可以在一个容器内或跨多个容器指定 10 个字典范围的 blob,以在给定时间点将这些 blob 恢复到它们以前的状态。 需谨记以下几点:

  • 可以使用正斜杠 (/) 来分隔容器名称和 blob 前缀
  • 指定的范围的开始包括在内,但是不包括指定的范围。

详细了解使用前缀还原 blob 范围。

$restorerequest = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureBlob -SourceDataStore OperationalStore -RestoreLocation $TestBkpVault.Location  -RestoreType OriginalLocation -PointInTime (Get-Date -Date "2021-04-23T02:47:02.9500000Z") -BackupInstance $AllInstances[2] -ItemLevelRecovery -FromPrefixPattern "containerabc/aaa","containerabc/ccc" -ToPrefixPattern "containerabc/bbb","containerabc/ddd"

触发还原

使用 Start-AzDataProtectionBackupInstanceRestore 命令以通过上述准备的请求来触发还原。

Start-AzDataProtectionBackupInstanceRestore -BackupInstanceName $AllInstances[2].BackupInstanceName -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Parameter $restorerequest

跟踪作业

可以使用 Get-AzDataProtectionJob 命令跟踪所有作业。 你可以列出所有作业并提取特定作业详细信息。

你还可以使用 Az ResourceGraph 跟踪所有备份保管库中的所有作业。 使用Search-AzDataProtectionJobInAzGraph命令获取可跨任何备份保管库的相关作业。

$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureBlob -Operation Restore

后续步骤

Azure blob 备份概述