この記事では、Azure PowerShell を使用して Azure Backup Recovery Services コンテナーを介して Azure Files をバックアップする方法について説明します。
[前提条件]
Azure Files をバックアップする前に、次の前提条件が満たされていることを確認します。
Recovery Services コンテナーについての詳細情報を確認します。
Azure ライブラリの Az.RecoveryServices コマンドレット リファレンスのリファレンスを確認します。
次に示す Recovery Services の PowerShell オブジェクト階層を確認します。
PowerShell のセットアップ
注
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
注
現在、Azure PowerShell では、時間単位のスケジュールを使用したバックアップ ポリシーはサポートされていません。 Azure portal を使用してこの機能を適用します。 詳細情報
PowerShell を次のように設定します。
Azure PowerShell の最新バージョンをダウンロードしてください。
注
Azure Files のバックアップに必要な最小 PowerShell バージョンは、Az.RecoveryServices 2.6.0 です。 最新バージョンまたは少なくとも最小バージョンは、既存のスクリプトの問題を回避するのに役立ちます。 次の PowerShell コマンドを使用して、最小バージョンをインストールしてください。
Install-module -Name Az.RecoveryServices -RequiredVersion 2.6.0
次のコマンドを使用して、Azure Backup 用の PowerShell コマンドレットを検索します。
Get-Command *azrecoveryservices*
Azure Backup、Azure Site Recovery、Recovery Services コンテナーの別名とコマンドレットを確認します。 表示例を次に示します。 これはコマンドレットの完全な一覧ではありません。
Connect-AzAccount を使用して Azure アカウントにサインインします。
表示される Web ページで、アカウントの資格情報を入力するように求められます。
または、 -Credential を使用して、Connect-AzAccount コマンドレットのパラメーターとしてアカウントの資格情報を含めることもできます。
クラウド サービス プロバイダー (CSP) パートナーがテナントに代わって作業している場合は、顧客をテナントとして指定します。 彼らのテナント ID またはテナントプライマリ ドメイン名を使用します。 たとえば、Connect-AzAccount -Tenant "fabrikam.com" 。
1 つのアカウントが複数のサブスクリプションを持つことができるため、使用するサブスクリプションをアカウントに関連付けます。
Select-AzSubscription -SubscriptionName $SubscriptionName
Azure Backup を初めて使用する場合、Register-AzResourceProvider コマンドレットを使用して Azure Recovery Services プロバイダーをサブスクリプションに登録します。
Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
プロバイダーが正常に登録されたことを確認します。
Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
コマンド出力で、RegistrationState が Registered に変わっていることを確認します。 変わっていない場合は、Register-AzResourceProvider コマンドレットをもう一度実行します。
Recovery Services コンテナーを作成する
Recovery Services コンテナーは Resource Manager のリソースであるため、リソース グループ内に配置する必要があります。 既存のリソース グループを使用することも、New-AzResourceGroup コマンドレットを使ってリソース グループを作成することもできます。 リソース グループを作成するときは、その名前と場所を指定します。
Recovery Services コンテナーを作成するには、次の手順に従います。
既存のリソース グループがない場合は、 New-AzResourceGroup コマンドレットを使用して新しいリソース グループを作成します。 この例では、リソース グループを米国西部リージョンに作成します。
New-AzResourceGroup -Name "test-rg" -Location "West US"
New-AzRecoveryServicesVault コマンドレットを使用して、コンテナーを作成します。 リソース グループに使用したのと同じコンテナーの場所を指定します。
New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
サブスクリプション内のコンテナーの表示
サブスクリプション内のコンテナーをすべて表示するには、Get-AzRecoveryServicesVault を使用します。
Get-AzRecoveryServicesVault
次のように出力されます。 出力には、関連付けられているリソース グループと場所が表示されます。
Name : Contoso-vault
ID : /subscriptions/1234
Type : Microsoft.RecoveryServices/vaults
Location : WestUS
ResourceGroupName : Contoso-docs-rg
SubscriptionId : 1234-567f-8910-abc
Properties : Microsoft.Azure.Commands.RecoveryServices.ARSVaultProperties
コンテナーのコンテキストを設定する
このコンテナー オブジェクトを変数に格納し、そのコンテナーのコンテキストを設定します。
Azure Backup コマンドレットの多くは、入力として Recovery Services コンテナー オブジェクトを必要とするので、コンテナー オブジェクトを変数に格納すると便利です。
コンテナーのコンテキストとは、コンテナーで保護されるデータの種類です。 これは、Set-AzRecoveryServicesVaultContext を使用して設定します。 コンテキストが設定されると、それが後続のすべてのコマンドレットに適用されます。
次の例では、testvault
のボールト コンテキストを設定します。
Get-AzRecoveryServicesVault -Name "testvault" | Set-AzRecoveryServicesVaultContext
コンテナー ID をフェッチする
コンテナーのコンテキストの設定は、Azure PowerShell のガイドラインに従って廃止される予定です。 代わりに、次のようにコンテナー ID を格納またはフェッチし、関連するコマンドに渡すことができます。 コンテナーのコンテキストを設定していない場合または特定のコンテナーに対して実行するコマンドを指定する場合は、次のように関連するすべてのコマンドにコンテナー ID を -vaultID
として渡します。
$vaultID = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault" | select -ExpandProperty ID
New-AzRecoveryServicesBackupProtectionPolicy -Name "NewAFSPolicy" -WorkloadType "AzureFiles" -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultID $vaultID
バックアップ ポリシーを構成する
バックアップ ポリシーでは、バックアップのスケジュール、およびバックアップの復旧ポイントを保持する期間を指定します。
バックアップ ポリシーは、少なくとも 1 つのアイテム保持ポリシーと関連付けられています。 保持ポリシーは、復旧ポイントを保持する期間を定義します。 日単位、週単位、月単位、年単位の保持期間でバックアップを構成することができます。 複数のバックアップ ポリシーを使用して、時間単位の保持期間でバックアップを構成することもできます。
重要
バックアップ ポリシーには、次のコマンドレットが使用されます。
-
Get-AzRecoveryServicesBackupRetentionPolicyObject
を使用して、既定のバックアップ保持ポリシーを表示します。 -
Get-AzRecoveryServicesBackupSchedulePolicyObject
を使用して、既定のバックアップ スケジュール ポリシーを表示します。 -
New-AzRecoveryServicesBackupProtectionPolicy
: 新しいバックアップ ポリシーを作成します。 入力として、スケジュールおよびアイテム保持のポリシー オブジェクトを指定します。
バックアップ レベルの選択:
Azure Files スナップショット バックアップ用に 1 日に複数のバックアップを構成するバックアップ ポリシーを作成するには、次のコマンドレットを実行します。
スケジュール ポリシー オブジェクトを取得します。
$schPol=Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType AzureFiles -BackupManagementType AzureStorage -ScheduleRunFrequency Hourly $schPol
出力例:
ScheduleRunFrequency : Hourly ScheduleRunDays : ScheduleRunTimes : ScheduleInterval : 8 ScheduleWindowStartTime : 12/22/2021 8:00:00 AM ScheduleWindowDuration : 16 ScheduleRunTimeZone : India Standard Time
必要に応じて、スケジュールのさまざまなパラメーターを設定します。
$schpol.ScheduleInterval=4 $schpol.ScheduleWindowDuration=12
前の構成では、午前 8 時から午後 8 時 (午前 8 時 + 12 時間) までの期間で、1 日に 4 回のバックアップをスケジュールすることができます。 次のコマンドレットで説明されているように、タイム ゾーンを設定することもできます。
$timeZone= $timeZone=Get-TimeZone -ListAvailable |Where-Object{$_.Id-match "Russia Time Zone 11"} $schPol.ScheduleRunTimeZone=$timeZone.Id
日単位のスケジュールを含むポリシーを作成するには、次のコマンドレットを実行します。
$UtcTime = Get-Date -Date "2019-03-20 01:30:00Z" $UtcTime = $UtcTime.ToUniversalTime() $schpol.ScheduleRunTimes[0] = $UtcTime
次のコマンドレットを使用して、保持ポリシー オブジェクトをフェッチします。
$retPol=Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType AzureFiles -BackupManagementType AzureStorage -ScheduleRunFrequency Hourly
必要に応じて保持期間の値を設定します。
$retPol.DailySchedule.DurationCountInDays=15
New-AzRecoveryServicesBackupProtectionPolicy を使用して、新しいバックアップ ポリシーを作成します。
前に設定したスケジュールと保持ポリシーのオブジェクトを、入力として渡すことができます。
New-AzRecoveryServicesBackupProtectionPolicy -Name "FilesPolicytesting" -WorkloadType AzureFiles -RetentionPolicy $retpol -SchedulePolicy $schpol
出力には、ポリシーの構成が表示されます。
Name WorkloadType BackupManagementType ScheduleFrequency BackupTime WindowStartTime Interval WindowDuration TimeZone (UTC) (Hours) ---- ------------ -------------------- ----------------- ------------ --------------- -------- -------------- -------- FilesPolicy testing AzureFiles AzureStorage Hourly 12/22/2021 8:00:00 AM 4 12 Russia Time Zone 11
バックアップの有効化
バックアップ ポリシーを定義したら、ポリシーを使用して Azure Files の保護を有効にすることができます。
バックアップ ポリシーを取得する
Get-AzRecoveryServicesBackupProtectionPolicy を使用して、関連するポリシー オブジェクトをフェッチします。 このコマンドレットを使用して、ワークロードの種類に関連付けられているポリシーを表示したり、特定のポリシーを取得したりできます。
ワークロードの種類のポリシーを取得する
次の例では、ワークロードの種類が AzureFiles であるポリシーを取得します。
Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureFiles"
出力例:
Name WorkloadType BackupManagementType BackupTime DaysOfWeek
---- ------------ -------------------- ---------- ----------
dailyafs AzureFiles AzureStorage 1/10/2018 12:30:00 AM
注
PowerShell の [BackupTime] フィールドのタイムゾーンは UTC です。 Azure portal 上でバックアップ時刻が表示されるときに、時刻はローカル タイム ゾーンに調整されます。
特定のポリシーを取得する
次のポリシーでは、dailyafs という名前のバックアップ ポリシーを取得します。
$afsPol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "dailyafs"
保護を有効にし、ポリシーを適用する
Enable-AzRecoveryServicesBackupProtection を使用して、保護を有効にします。 ポリシーがコンテナーに関連付けられると、ポリシーのスケジュールに従ってバックアップがトリガーされます。
次の例では、ポリシー dailyafs を使用して、ストレージ アカウント testStorageAcct の Azure Files testAzureFS の保護を有効にします。
Enable-AzRecoveryServicesBackupProtection -StorageAccountName "testStorageAcct" -Name "testAzureFS" -Policy $afsPol
コマンドは、保護の構成ジョブが完了するまで待機し、次の例のような出力を提供します。
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- -----
testAzureFS ConfigureBackup Completed 11/12/2018 2:15:26 PM 11/12/2018 2:16:11 PM ec7d4f1d-40bd-46a4-9edb-3193c41f6bf6
ストレージ アカウントのファイル共有の一覧を取得する方法の詳細については、 この記事を参照してください。
重要な注意: バックアップ項目の識別
このセクションでは、一般提供に備えて Azure Files のバックアップに関する重要な変更について説明します。
Azure Files のバックアップを有効にすると、ユーザーはエンティティ名としてファイル共有名を取得し、バックアップ項目が作成されます。 バックアップ項目の名前は、Azure Backup サービスによって作成される一意の識別子です。 通常、識別子はユーザーフレンドリ名です。 ファイル共有が削除され、同じ名前の新しい共有が作成される論理的な削除シナリオを処理するために、Azure Files で一意の ID が使用されるようになりました。
各項目の一意の ID を把握するには、backupManagementType および WorkloadType に関連するフィルターを指定して Get-AzRecoveryServicesBackupItem コマンドを実行することで、関連するすべての項目を取得します。 次に、返された PowerShell オブジェクトまたは応答の名前フィールドを確認します。
項目を一覧表示したうえで、応答の名前フィールドからそれらの一意の名前を取得することをお勧めします。 この値を Name パラメーターで使用して、項目をフィルター処理します。 または、FriendlyName パラメーターを使用して、項目とその ID を取得します。
重要
Azure Files のバックアップ用に PowerShell が最小バージョン (Az.RecoveryServices 2.6.0) にアップグレードされていることを確認します。 このバージョンでは、FriendlyName フィルターが Get-AzRecoveryServicesBackupItem コマンドを使用できます。
Azure Files の名前を FriendlyName パラメーターに渡します。 ファイル共有の名前を Name パラメーターに渡すと、このバージョンでは FriendlyName パラメーターに名前を渡すよう警告が表示されます。
最小バージョンをインストールしないと、既存のスクリプトでエラーが発生する可能性があります。 次のコマンドを使用して、PowerShell の最小バージョンをインストールしてください。
Install-module -Name Az.RecoveryServices -RequiredVersion 2.6.0
オンデマンド バックアップをトリガーする
保護された Azure Files のオンデマンド バックアップを実行するには、 Backup-AzRecoveryServicesBackupItem コマンドレットを使用します。
- Get-AzRecoveryServicesBackupContainer を使用して、バックアップ データを保持するコンテナー内のコンテナーからストレージ アカウントを取得します。
- バックアップ ジョブを開始し、 Get-AzRecoveryServicesBackupItem を使用して Azure Files に関する情報を取得します。
- Backup-AzRecoveryServicesBackupItem を使用して、オンデマンド バックアップを実行します。
次のようにしてオンデマンド バックアップを実行します。
$afsContainer = Get-AzRecoveryServicesBackupContainer -FriendlyName "testStorageAcct" -ContainerType AzureStorage
$afsBkpItem = Get-AzRecoveryServicesBackupItem -Container $afsContainer -WorkloadType "AzureFiles" -FriendlyName "testAzureFS"
$job = Backup-AzRecoveryServicesBackupItem -Item $afsBkpItem
このコマンドでは、次の例に示すように、追跡する必要がある ID を持つジョブが返されます。
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- -----
testAzureFS Backup Completed 11/12/2018 2:42:07 PM 11/12/2018 2:42:11 PM 8bdfe3ab-9bf7-4be6-83d6-37ff1ca13ab6
Azure Files スナップショットは、バックアップの作成中に使用されます。 通常、ジョブは、コマンドからこの出力が返されるまでに終了します。
次のステップ
- Azure PowerShell を使用して Azure Files を復元する方法。
- Azure portal、Azure CLI、REST API を使用して Azure Files を復元します。
- Azure portal、Azure PowerShell、Azure CLI、REST API を使用して Azure Files のバックアップを管理します。
- Azure Automation Runbook を使用してバックアップをスケジュールするための GitHub のサンプル スクリプト。