Azure VM快照复制至存储后本地下载为0字节的原因及解决方法
Azure快照本地下载0字节问题的原因及解决方法
问题原因
- Blob与下载参数不匹配:你将快照复制到存储账户时,指定的目标容器是
test、Blob名称是sample.vhd,但下载命令里用的容器是mycontainer、Blob名称是snap1,完全对应不上,导致下载了空内容。 - 异步复制未完成即下载:
az storage blob copy start是异步操作,提交后后台会持续复制数据,如果在复制完成前执行下载,会得到不完整甚至0字节的文件。 - 本地文件名缺少后缀:下载命令生成的本地路径是
c:\snapshots\snap1,没有.vhd后缀,虽不直接导致0字节,但会影响后续文件识别与使用。
解决步骤
方法一:修正下载参数,基于已复制的Blob下载
- 确认Blob复制状态:先检查存储账户
testsa中test容器下的sample.vhd是否复制完成:
az storage blob show --container-name test --name sample.vhd --account-name testsa --account-key xxxx --query properties.copy.status
返回success表示复制完成。
- 执行正确的下载命令:
$filename = 'c:\snapshots\sample.vhd' az storage blob download --container-name 'test' --name 'sample.vhd' --file $filename --account-name 'testsa' --account-key 'xxxx'
方法二:直接从快照下载到本地(跳过存储账户中转)
无需先复制到存储账户,直接通过SAS URL将快照下载到本地:
- 生成快照的SAS URL:
subscriptionId="xxxx" resourceGroupName="xxx" snapshotName="snap1" sasExpiryDuration=3600 az account set --subscription $subscriptionId sas=$(az snapshot grant-access --resource-group $resourceGroupName --name $snapshotName --duration-in-seconds $sasExpiryDuration --query [accessSas] -o tsv)
- 用AzCopy下载(大文件更稳定):
azcopy copy "$sas" "c:\snapshots\snap1.vhd"
若必须用Azure CLI,也可直接执行:
az storage blob download --source-uri $sas --file "c:\snapshots\snap1.vhd"
内容的提问来源于stack exchange,提问作者Melissa
相关产品推荐
相关产品推荐

