Exportar/Copiar instantâneos geridos como VHD para uma conta de armazenamento numa região diferente com o PowerShell

Este script exporta um instantâneo gerido para uma conta de armazenamento numa região diferente. Gera primeiro o URI de SAS do instantâneo e, em seguida, utiliza-o para o copiar para uma conta de armazenamento numa região diferente. Utilize este script para manter a cópia de segurança dos discos geridos numa região diferente para recuperação após desastre.

Caso seja necessário, instale o módulo Azure PowerShell com as instruções no guia do Azure PowerShell e, em seguida, execute Connect-AzAccount para criar uma ligação ao Azure. Além disso, tem de ter uma chave pública SSH com o nome id_rsa.pub no diretório .ssh do seu perfil de utilizador.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Script de exemplo

#Provide the subscription Id of the subscription where snapshot is created
$subscriptionId = "yourSubscriptionId"

#Provide the name of your resource group where snapshot is created
$resourceGroupName ="yourResourceGroupName"

#Provide the snapshot name 
$snapshotName = "yourSnapshotName"

#Provide Shared Access Signature (SAS) expiry duration in seconds e.g. 3600.
#Know more about SAS here: https://docs.microsoft.com/en-us/Az.Storage/storage-dotnet-shared-access-signature-part-1
$sasExpiryDuration = "3600"

#Provide storage account name where you want to copy the snapshot. 
$storageAccountName = "yourstorageaccountName"

#Name of the storage container where the downloaded snapshot will be stored
$storageContainerName = "yourstoragecontainername"

#Provide the key of the storage account where you want to copy snapshot. 
$storageAccountKey = 'yourStorageAccountKey'

#Provide the name of the VHD file to which snapshot will be copied.
$destinationVHDFileName = "yourvhdfilename"


# Set the context to the subscription Id where Snapshot is created
Select-AzSubscription -SubscriptionId $SubscriptionId

#Generate the SAS for the snapshot 
$sas = Grant-AzSnapshotAccess -ResourceGroupName $ResourceGroupName -SnapshotName $SnapshotName  -DurationInSecond $sasExpiryDuration -Access Read
#Create the context for the storage account which will be used to copy snapshot to the storage account 
$destinationContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey

#Copy the snapshot to the storage account 
Start-AzStorageBlobCopy -AbsoluteUri $sas.AccessSAS -DestContainer $storageContainerName -DestContext $destinationContext -DestBlob $destinationVHDFileName

Explicação do script

Este script utiliza os seguintes comandos para gerar o URI de SAS para um instantâneo gerido e copia o instantâneo para uma conta de armazenamento com o URI de SAS. Cada comando na tabela liga à documentação específica do comando.

Comando Notas
Grant-AzSnapshotAccess Gera o URI de SAS para um instantâneo que é utilizado para copiá-lo para uma conta de armazenamento.
New-AzureStorageContext Cria um contexto de conta de armazenamento com o nome e a chave da conta. Este contexto pode ser utilizado para executar operações de leitura/escrita na conta de armazenamento.
Start-AzureStorageBlobCopy Copia o VHD subjacente de um instantâneo para uma conta de armazenamento

Passos seguintes

Criar um disco gerido a partir de um VHD

Criar uma máquina virtual a partir de um disco gerido

Para obter mais informações sobre o módulo do Azure PowerShell, veja Documentação do Azure PowerShell.

Pode ver exemplos adicionais de scripts do PowerShell da máquina virtual na Documentação da VM Linux do Azure.