如何在Azure Cloud Shell中从Blob存储将文件复制到$HOME目录
将Azure Blob存储文件复制到Azure Cloud Shell的$HOME目录
方案一:使用AzCopy(修复常见错误)
AzCopy出错大多是权限不足或路径格式问题,按以下步骤操作:
- 生成Blob或容器的SAS令牌(在Azure门户中找到目标Blob/容器,选择“生成SAS”,勾选读取权限,设置有效期)
- 执行复制命令:
- 复制单个文件:
azcopy copy "https://<存储账户名>.blob.core.windows.net/<容器名>/<文件名>?<你的SAS令牌>" "$HOME/<保存的文件名>" - 复制整个容器内容(递归):
azcopy copy "https://<存储账户名>.blob.core.windows.net/<容器名>?<你的SAS令牌>" "$HOME/<目标文件夹名>" --recursive
- 复制单个文件:
方案二:使用Azure PowerShell Cmdlet(更贴合PowerShell环境)
适合PowerShell新手,直接用Azure模块实现:
# 配置参数(替换为你的实际信息) $storageAccountName = "your-storage-account" $resourceGroupName = "your-resource-group" $containerName = "your-container" $blobName = "target-file.txt" # 单个文件名,复制容器则留空并加-Recurse # 构造目标路径 $destPath = Join-Path -Path $HOME -ChildPath $blobName # 获取存储账户上下文 $storageCtx = (Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName).Context # 复制Blob到$HOME目录 Get-AzStorageBlobContent -Container $containerName -Blob $blobName -Destination $destPath -Context $storageCtx
如果要复制整个容器,修改最后一行:
Get-AzStorageBlobContent -Container $containerName -Destination "$HOME/container-files" -Context $storageCtx -Recurse
注意事项
- 确保当前Cloud Shell的账户拥有Blob存储的读取权限(如Storage Blob Data Reader角色)
- Blob名称区分大小写,输入时需与Azure门户中一致
- SAS令牌需包含读取权限且未过期,生成时不要勾选不必要的权限
内容的提问来源于stack exchange,提问作者Chhaya
相关产品推荐
相关产品推荐

