PowerShell を使用して Azure ファイル共有をバックアップする
この記事では、Azure Backup Recovery Services コンテナーを通して Azure Files のファイル共有をバックアップするために Azure PowerShell を使用する方法を説明します。
この記事では、以下の方法について説明します。
- PowerShell を設定し、Recovery Services プロバイダーを登録します。
- Recovery Services コンテナーを作成する。
- Azure ファイル共有のバックアップを構成する。
- バックアップ ジョブを実行します。
開始する前に
Recovery Services コンテナーについての詳細情報を確認します。
Azure ライブラリの Az.RecoveryServices コマンドレット リファレンスのリファレンスを確認します。
次に示す Recovery Services の PowerShell オブジェクト階層を確認します。
PowerShell のセットアップ
Note
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
Note
現在、Azure PowerShell では、時間単位のスケジュールを使用したバックアップ ポリシーはサポートされていません。 この機能を活用するには、Azure portal を使用してください。 詳細情報
PowerShell を次のように設定します。
Azure PowerShell の最新バージョンをダウンロードしてください。
Note
Azure ファイル共有のバックアップに必要な最小 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
: 新しいバックアップ ポリシーを作成します。 入力として、スケジュールおよびアイテム保持のポリシー オブジェクトを指定します。
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 ファイル共有の保護を有効にできます。
バックアップ ポリシーを取得する
Get-AzRecoveryServicesBackupProtectionPolicy を使用して、関連するポリシー オブジェクトをフェッチします。 このコマンドレットを使用して、ワークロードの種類に関連付けられているポリシーを表示したり、特定のポリシーを取得したりできます。
ワークロードの種類のポリシーを取得する
次の例では、ワークロードの種類が AzureFiles であるポリシーを取得します。
Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureFiles"
次のように出力されます。
Name WorkloadType BackupManagementType BackupTime DaysOfWeek
---- ------------ -------------------- ---------- ----------
dailyafs AzureFiles AzureStorage 1/10/2018 12:30:00 AM
Note
PowerShell の [BackupTime] フィールドのタイムゾーンは UTC です。 Azure portal 上でバックアップ時刻が表示されるときに、時刻はローカル タイム ゾーンに調整されます。
特定のポリシーを取得する
次のポリシーでは、dailyafs という名前のバックアップ ポリシーを取得します。
$afsPol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "dailyafs"
保護を有効にし、ポリシーを適用する
Enable-AzRecoveryServicesBackupProtection を使用して、保護を有効にします。 ポリシーがコンテナーに関連付けられると、ポリシーのスケジュールに従ってバックアップがトリガーされます。
次の例では、ポリシー dailyafs を使用して、ストレージ アカウント testStorageAcct の Azure ファイル共有 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 ファイル共有のバックアップでの重要な変更について説明します。
Azure ファイル共有のバックアップを有効にするときに、ユーザーは顧客にファイル共有名をエンティティ名として与え、バックアップ項目が作成されます。 バックアップ項目の名前は、Azure Backup サービスによって作成される一意の識別子です。 通常、識別子はユーザーフレンドリ名です。 しかし、ファイル共有を削除して同じ名前で別のファイル共有を作成できるという論理的な削除のシナリオを処理するために、Azure ファイル共有の一意の ID を ID とすることになりました。
各項目の一意の ID を把握するには、backupManagementType および WorkloadType に関連するフィルターを指定して Get-AzRecoveryServicesBackupItem コマンドを実行することで、関連するすべての項目を取得します。 次に、返された PowerShell オブジェクトまたは応答の名前フィールドを確認します。
項目を一覧表示したうえで、応答の名前フィールドからそれらの一意の名前を取得することをお勧めします。 この値を Name パラメーターで使用して、項目をフィルター処理します。 または、FriendlyName パラメーターを使用して、項目とその ID を取得します。
重要
PowerShell が Azure ファイル共有のバックアップ用の最小バージョン (Az. RecoveryServices 2.6.0) にアップグレードされていることを確認します。 このバージョンでは、FriendlyName フィルターが Get-AzRecoveryServicesBackupItem コマンドを使用できます。
Azure ファイル共有の名前を FriendlyName パラメーターに渡します。 ファイル共有の名前を Name パラメーターに渡した場合、このバージョンでは、FriendlyName パラメーターに名前を渡すよう求める警告がスローされます。
最小バージョンをインストールしないと、既存のスクリプトでエラーが発生する可能性があります。 次のコマンドを使用して、PowerShell の最小バージョンをインストールしてください。
Install-module -Name Az.RecoveryServices -RequiredVersion 2.6.0
オンデマンド バックアップをトリガーする
Backup-AzRecoveryServicesBackupItem を使用して、保護されている Azure ファイル共有のオンデマンド バックアップを実行します。
- Get-AzRecoveryServicesBackupContainer を使用して、バックアップ データを保持するコンテナー内のコンテナーからストレージ アカウントを取得します。
- バックアップ ジョブを開始するには、Get-AzRecoveryServicesBackupItem を使用して、Azure ファイル共有に関する情報を取得します。
- 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 ファイル共有スナップショットは、バックアップの実行中に使用されます。 通常、ジョブは、コマンドからこの出力が返されるまでに終了します。
次のステップ
- Azure portal での Azure Files のバックアップについて学習します。
- Azure Automation Runbook を使用してバックアップをスケジュールする方法については、GitHub のサンプル スクリプトを参照してください。