如何直接将 Azure VM 磁盘上传到 Blob 存储?

How to directly upload an azure VM disk to a blob storage?

我想将 azure 虚拟机磁盘 直接导出到 azure blob 存储?我已经在网上查过了,但我找不到办法。

我可以将磁盘下载到我的本地 PC,然后上传到 blob 存储。但这需要很长时间和手动工作。所以我正在检查一种更直接的方式。也许使用 Azure 存储资源管理器?磁盘和 blob 存储在同一区域。

因为有 SAS 下载 link 的 vm 磁盘,我可以将我的问题解释为:

Is there a way to transfer a file directly to blob storage by using a url?

你有什么建议吗?

如果您知道 Azure 磁盘的 SAS 下载 link,我们可以使用 Azure CLI 命令 az storage blob copy start or command-line utility AzCopy 将磁盘作为 vhs 文件上传到 Azure blob 存储。

例如

az login

#Provide the name of your resource group where managed disk is created
resourceGroupName=myResourceGroupName

#Provide the managed disk name 
diskName=myDiskName

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

#Provide storage account name where you want to copy the underlying VHD file of the managed disk. 
storageAccountName=mystorageaccountname

#Name of the storage container where the downloaded VHD will be stored
storageContainerName=mystoragecontainername

#Provide the key of the storage account where you want to copy the VHD 
storageAccountKey=mystorageaccountkey

#Provide the name of the destination VHD file to which the VHD of the managed disk will be copied.
destinationVHDFileName=myvhdfilename.vhd

#Generate the SAS for the managed disk 
sas=$(az disk grant-access --resource-group $resourceGroupName --name $diskName --duration-in-seconds $sasExpiryDuration --query [accessSas] -o tsv)

#Copy the VHD of the managed disk to the storage account
az storage blob copy start --destination-blob $destinationVHDFileName --destination-container $storageContainerName --account-name $storageAccountName --account-key $storageAccountKey --source-uri $sas

# check copy status
az storage blob show -n $destinationVHDFileName -c $storageContainerName --account-name $storageAccountName --account-key $storageAccountKey