使用 PowerShell 还原 Azure 文件
本文介绍如何使用 Azure PowerShell 从 Azure 备份服务所创建的还原点来还原整个文件共享或特定文件。
可以还原整个文件共享,或共享中的特定文件。 可以还原到原始位置或备用位置。
警告
确保 PowerShell 版本已升级到 AFS 备份的最低版本“Az.RecoveryServices 2.6.0”。 有关详细信息,请参阅概述此更改的要求的部分。
注意
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
选择相关的恢复点之后,将文件共享或文件还原到原始位置或备用位置。
将 Azure 文件共享还原到备用位置
使用 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 文件。