使用 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 文件。