如何快速删除Azure Blob Storage中含300万+Blob的虚拟文件夹
高效批量删除Azure Blob Storage虚拟文件夹下的海量Blob
这种百万级Blob的批量删除场景我太熟悉了,Storage Explorer的单线程删除完全扛不住,给你分享几个亲测好用的高效方案:
1. 用AzCopy(最快最推荐)
AzCopy是微软官方的高性能数据传输工具,专门针对海量Blob场景做了并行处理优化,速度比Storage Explorer快N个量级。
操作步骤:
- 先安装AzCopy(官网直接下载即可,无需复杂配置)
- 打开命令行,运行删除命令:
# 用Azure AD认证(已登录Azure账号时用这个) azcopy rm "https://<你的存储账户名>.blob.core.windows.net/<容器名>/<虚拟文件夹路径>/*" --recursive=true # 用SAS Token认证(无AD权限时用这个) azcopy rm "https://<你的存储账户名>.blob.core.windows.net/<容器名>/<虚拟文件夹路径>/*?<你的SAS Token>" --recursive=true
提示:不确定路径是否正确的话,可以先用
azcopy list命令预览要删除的Blob范围,避免误删。
2. PowerShell脚本(适合自定义逻辑)
如果你需要加一些自定义过滤规则(比如只删特定后缀的Blob),PowerShell脚本会更灵活。注意不要一次性加载所有Blob到内存,用分页处理避免内存溢出:
# 替换成你的存储账户、容器和虚拟文件夹路径 $storageAccountName = "your-storage-account" $containerName = "your-container" $virtualFolderPrefix = "your-virtual-folder-path/" # 登录Azure账户(未登录时执行) Connect-AzAccount # 获取存储上下文 $ctx = New-AzStorageContext -StorageAccountName $storageAccountName -UseConnectedAccount # 分页批量删除,每次处理1000个Blob $continuationToken = $null do { $blobs = Get-AzStorageBlob -Container $containerName -Context $ctx -Prefix $virtualFolderPrefix -MaxCount 1000 -ContinuationToken $continuationToken if ($blobs.Count -gt 0) { $blobs | Remove-AzStorageBlob -Force $continuationToken = $blobs[$blobs.Count - 1].ContinuationToken } } while ($continuationToken -ne $null)
3. Azure CLI(简洁高效)
如果你习惯用CLI命令,Azure CLI的delete-batch命令也能快速搞定:
# 用Azure AD认证 az storage blob delete-batch --account-name <你的存储账户名> --source <容器名> --pattern "<虚拟文件夹路径>/*" # 用SAS Token认证 az storage blob delete-batch --account-name <你的存储账户名> --source <容器名> --pattern "<虚拟文件夹路径>/*" --sas-token "<你的SAS Token>"
4. Blob生命周期管理(非紧急场景首选)
如果这些Blob不是需要立即删除的,比如可以等1-2天,推荐用生命周期管理规则,让Azure后台自动处理,完全不用手动跑脚本:
- 登录Azure门户,找到你的存储账户
- 进入「数据管理」下的「生命周期管理」
- 点击「添加规则」,设置规则名称
- 在「Blob类型」里选择要删除的Blob类型(比如块Blob)
- 在「筛选器」里设置「前缀匹配」为你的虚拟文件夹路径(比如
your-virtual-folder-path/) - 在「动作」里添加「删除」,设置等待时间(比如1天后删除)
- 保存规则,Azure会自动在指定时间后批量删除匹配的Blob
注意事项:
- 删除前一定要确认前缀路径正确,避免误删其他Blob
- 如果Blob在归档层,需要先还原到热层/冷层才能删除,生命周期规则也支持自动还原后删除
- 批量删除操作是不可逆的,建议先备份重要Blob或者小范围测试
内容的提问来源于stack exchange,提问作者user4856537
相关产品推荐
相关产品推荐

