本文介绍如何使用 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"
选择备份层:
由于 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。 包含大量数据或见证高流失率的存储帐户可能需要更长的时间才能还原。
$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