本文介绍如何使用 Azure PowerShell 从 Azure 备份 服务创建的还原点还原整个文件共享或特定文件。 还可以使用 Azure 门户、 Azure CLI、 REST API 还原 Azure 文件。
可以还原整个文件共享或共享上的特定文件。 可以还原到原始位置或备用位置。
警告
确保 PowerShell 版本已升级到 AFS 备份的最低版本“Az.RecoveryServices 2.6.0”。 有关详细信息,请参阅概述此更改的要求的部分。
注意
- 仅当使用 PowerShell 或 CLI 时,同一订阅中才支持 Azure 文件还原。
 - Azure 备份现在支持使用 PowerShell 将多个文件或文件夹还原到原始位置或备用位置。 请参阅本文的这一部分,了解如何操作。
 
提取恢复点
使用 Get-AzRecoveryServicesBackupRecoveryPoint 列出已备份项的所有恢复点。
在以下脚本中:
- 变量 $rp 是一个数组,其中包含所选备份项在过去七天的恢复点。
 - 该数组按时间进行反向排序,以最新的恢复点作为索引 0。
 - 使用标准 PowerShell 数组索引选取恢复点。
 - 在示例中,$rp[0] 选择最近的恢复点。
 
$vault = Get-AzRecoveryServicesVault -ResourceGroupName "azurefiles" -Name "azurefilesvault"
$Container = Get-AzRecoveryServicesBackupContainer -ContainerType AzureStorage -Status Registered -FriendlyName "afsaccount" -VaultId $vault.ID
$BackupItem = Get-AzRecoveryServicesBackupItem -Container $Container -WorkloadType AzureFiles -VaultId $vault.ID -FriendlyName "azurefiles"
$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $BackupItem -VaultId $vault.ID -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime()
$rp[0] | fl
输出如下所示。
FileShareSnapshotUri : https://testStorageAcct.file.core.chinacloudapi.cn/testAzureFS?sharesnapshot=2018-11-20T00:31:04.00000
                       00Z
RecoveryPointType    : FileSystemConsistent
RecoveryPointTime    : 11/20/2018 12:31:05 AM
RecoveryPointId      : 86593702401459
ItemName             : testAzureFS
Id                   : /Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testVaultRG/providers/Micros                      oft.RecoveryServices/vaults/testVault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;teststorageRG;testStorageAcct/protectedItems/AzureFileShare;testAzureFS/recoveryPoints/86593702401462
WorkloadType         : AzureFiles
ContainerName        : storage;teststorageRG;testStorageAcct
ContainerType        : AzureStorage
BackupManagementType : AzureStorage
选择相关的恢复点后,可将文件共享或文件还原到原始位置或备用位置。
将文件共享还原到备用位置
使用 Restore-AzRecoveryServicesBackupItem 还原到所选的恢复点。 指定以下参数来标识备用位置:
- TargetStorageAccountName:要将备份内容还原到的存储帐户。 目标存储帐户应与保管库位于同一位置。
 - TargetFileShareName:将备份内容还原到的目标存储帐户中的文件共享。
 - TargetFolder:在文件共享中还原数据的目标文件夹。 如果要将备份内容还原到根文件夹,请将目标文件夹值指定为空字符串。
 - ResolveConflict:与还原的数据发生冲突时提供的说明。 接受“覆盖”或“跳过”。
 
使用以下参数运行 cmdlet:
Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -TargetStorageAccountName "TargetStorageAcct" -TargetFileShareName "DestAFS" -TargetFolder "testAzureFS_restored" -ResolveConflict Overwrite
该命令返回一个要跟踪的、带有 ID 的作业,如以下示例所示。
WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   -----
testAzureFS        Restore              InProgress           12/10/2018 9:56:38 AM                               9fd34525-6c46-496e-980a-3740ccb2ad75
将 Azure 文件还原到备用位置
使用 Restore-AzRecoveryServicesBackupItem 还原到所选的恢复点。 指定以下参数来标识备用位置,以及唯一标识要还原的文件。
- TargetStorageAccountName:要将备份内容还原到的存储帐户。 目标存储帐户应与保管库位于同一位置。
 - TargetFileShareName:将备份内容还原到的目标存储帐户中的文件共享。
 - TargetFolder:在文件共享中还原数据的目标文件夹。 如果要将备份内容还原到根文件夹,请将目标文件夹值指定为空字符串。
 - SourceFilePath:文件共享中要还原的文件的绝对路径(字符串格式)。 此路径与 Get-AzStorageFile PowerShell cmdlet 中使用的路径相同。
 - SourceFileType:是否已选择目录或文件。 接受目录或文件。
 - ResolveConflict:与还原的数据发生冲突时提供的说明。 接受“覆盖”或“跳过”。
 
其他参数(SourceFilePath 和 SourceFileType)只与要还原的单个文件相关。
Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -TargetStorageAccountName "TargetStorageAcct" -TargetFileShareName "DestAFS" -TargetFolder "testAzureFS_restored" -SourceFileType File -SourceFilePath "TestDir/TestDoc.docx" -ResolveConflict Overwrite
该命令返回一个要跟踪的、带有 ID 的作业,如前一部分中所示。
将 Azure 文件和文件还原到原始位置
在还原到原始位置时,无需指定目的地和目标相关的参数。 仅“ResolveConflict”必须提供。
覆盖 Azure 文件存储
Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -ResolveConflict Overwrite
覆盖 Azure 文件存储
Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -SourceFileType File -SourceFilePath "TestDir/TestDoc.docx" -ResolveConflict Overwrite
将多个文件或文件夹还原到原始或备用位置
通过将要还原的所有文件或文件夹的路径作为 MultipleSourceFilePath 参数的值传递,使用 Restore-AzRecoveryServicesBackupItem 命令。
还原多个文件
在以下脚本中,我们尝试还原 FileSharePage.png 和 MyTestFile.txt 文件 。
$vault = Get-AzRecoveryServicesVault -ResourceGroupName "azurefiles" -Name "azurefilesvault"
$Container = Get-AzRecoveryServicesBackupContainer -ContainerType AzureStorage -Status Registered -FriendlyName "afsaccount" -VaultId $vault.ID
$BackupItem = Get-AzRecoveryServicesBackupItem -Container $Container -WorkloadType AzureFiles -VaultId $vault.ID -FriendlyName "azurefiles"
$RP = Get-AzRecoveryServicesBackupRecoveryPoint -Item $BackupItem -VaultId $vault.ID
$files = ("FileSharePage.png", "MyTestFile.txt")
Restore-AzRecoveryServicesBackupItem -RecoveryPoint $RP[0] -MultipleSourceFilePath $files -SourceFileType File -ResolveConflict Overwrite -VaultId $vault.ID -VaultLocation $vault.Location
还原多个目录
在以下脚本中,我们尝试还原 zrs1_restore 和 Restore 目录 。
$vault = Get-AzRecoveryServicesVault -ResourceGroupName "azurefiles" -Name "azurefilesvault"
$Container = Get-AzRecoveryServicesBackupContainer -ContainerType AzureStorage -Status Registered -FriendlyName "afsaccount" -VaultId $vault.ID
$BackupItem = Get-AzRecoveryServicesBackupItem -Container $Container -WorkloadType AzureFiles -VaultId $vault.ID -FriendlyName "azurefiles"
$RP = Get-AzRecoveryServicesBackupRecoveryPoint -Item $BackupItem -VaultId $vault.ID
$files = ("Restore","zrs1_restore")
Restore-AzRecoveryServicesBackupItem -RecoveryPoint $RP[0] -MultipleSourceFilePath $files -SourceFileType Directory -ResolveConflict Overwrite -VaultId $vault.ID -VaultLocation $vault.Location
输出将如下所示:
WorkloadName         Operation         Status          StartTime                EndTime       JobID
------------         ---------         ------          ---------                -------       -----
azurefiles           Restore           InProgress      4/5/2020 8:01:24 AM                    cd36abc3-0242-44b1-9964-0a9102b74d57
如果要将多个文件或文件夹还原到备用位置,请通过指定目标位置相关的参数值来使用上述脚本,如将 Azure 文件还原到备用位置中所述。
后续步骤
使用 Azure 门户、 Azure PowerShell、 Azure CLI、 REST API 管理 Azure 文件备份。