Condividi tramite


Esportare/Copiare snapshot gestiti come VHD in un account di archiviazione in una regione differente con PowerShell

Questo script esporta uno snapshot gestito in un account di archiviazione in un'area diversa. Genera inizialmente l'URI SAS dello snapshot e quindi lo utilizza per copiarlo in un account di archiviazione in una regione diversa. Usare questo script per mantenere il backup dei dischi gestiti in un'area diversa per il ripristino di emergenza.

Se necessario, installare il modulo Azure PowerShell usando le istruzioni disponibili nella guida di Azure PowerShell e quindi eseguire Connect-AzAccount per creare una connessione con Azure. Inoltre, è necessario avere una chiave pubblica SSH denominata id_rsa.pub nella directory .ssh del profilo utente.

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Script di esempio

#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

Spiegazione dello script

Questo script usa i comandi seguenti per generare l'URI di firma di accesso condiviso per uno snapshot gestito e copia lo snapshot in un account di archiviazione usando l'URI di firma di accesso condiviso. Ogni comando della tabella include collegamenti alla documentazione specifica del comando.

Comando Note
Grant-AzSnapshotAccess Genera l'URI SAS per uno snapshot usato per copiarlo in un account di archiviazione.
New-AzureStorageContext Crea un contesto di account di archiviazione utilizzando il nome dell'account e la chiave. Questo contesto può essere usato per eseguire operazioni di lettura/scrittura nell'account di archiviazione.
Start-AzureStorageBlobCopy Copia il VHD sottostante di uno snapshot in un account di archiviazione

Passaggi successivi

Creare un disco gestito da un VHD

Creare una macchina virtuale da un disco gestito

Per altre informazioni sul modulo Azure PowerShell, vedere la documentazione di Azure PowerShell.

Altri esempi di script di PowerShell per macchine virtuali sono disponibili nella documentazione macchina virtuale Linux di Azure.