PowerShell を使用して Azure Files を復元する

この記事では、Azure Powershell を使用して、Azure Backup サービスによって作成された復元ポイントから、ファイル共有全体または特定のファイルを復元する方法について説明します。

ファイル共有全体を復元することも、共有上の特定のファイルを復元することもできます。 元の場所に復元することも、代わりの場所に復元することもできます。

警告

PowerShell のバージョンが、AFS バックアップ用の "Az.RecoveryServices 2.6.0" のための最小バージョンにアップグレードされていることを確認してください。 詳細については、この変更の要件の概要が記載されているこのセクションを参照してください。

注意

Azure Backup では、PowerShell を使用して、元の場所または別の場所への複数のファイルやフォルダーの復元をサポートするようになりました。 方法については、ドキュメントのこのセクションを参照してください。

復旧ポイントをフェッチする

Get-AzRecoveryServicesBackupRecoveryPoint を使用して、バックアップされた項目のすべての復旧ポイントを一覧表示します。

スクリプトの説明:

  • 変数 $rp は、過去 7 日間に選択したバックアップ項目の復旧ポイントの配列です。
  • この配列は時間の逆順で並べ替えられています。最新の復旧ポイントのインデックスは 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 を指定できます。

次のようにパラメーターを指定してコマンドレットを実行します。

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 コマンドレットで使用されるのと同じパスです。
  • 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

前のセクションで示したように、このコマンドは追跡する必要がある 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 を復元し、ディレクトリを復元しようとしています。

$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 portal での Azure Files の復元について学習します