使用 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.windows.net/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:還原資料發生衝突時的指示。 可接受的值為 Overwrite 或 Skip。
使用參數執行 Cmdlet,如下所示:
Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -TargetStorageAccountName "TargetStorageAcct" -TargetFileShareName "DestAFS" -TargetFolder "testAzureFS_restored" -ResolveConflict Overwrite
此命令會傳回具識別碼可供追蹤的作業,如下列範例所示。
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:選取目錄或檔案。 可接受的值為 Directory 或 File。
- ResolveConflict:還原資料發生衝突時的指示。 可接受的值為 Overwrite 或 Skip。
其他參數 (SourceFilePath 和 SourceFileType) 僅涉及您要還原的個別檔案。
Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -TargetStorageAccountName "TargetStorageAcct" -TargetFileShareName "DestAFS" -TargetFolder "testAzureFS_restored" -SourceFileType File -SourceFilePath "TestDir/TestDoc.docx" -ResolveConflict Overwrite
此命令會傳回包含可追蹤識別碼的作業,如之前章節所示。
將 Azure 檔案共用和檔案還原至原始位置
還原至原始位置時,無需指定與目的地和目標相關的參數。 僅必須提供 ResolveConflict。
覆寫 Azure 檔案共用
Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -ResolveConflict Overwrite
覆寫 Azure 檔案
Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -SourceFileType File -SourceFilePath "TestDir/TestDoc.docx" -ResolveConflict Overwrite
還原多個檔案或資料夾至原始或替代位置
使用 Restore-AzRecoveryServicesBackupItem 命令,方法是將您要還原的所有檔案或資料夾路徑做為 MultipleSourceFilePath 參數的值傳遞。
還原多個檔案
在下列指令碼中,我們會嘗試還原 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 檔案。