2012-05-03 151 views
17

我只是想清理一个Azure Blob容器(dump,zap,del )。我怎样才能做到这一点?如何清洁Azure存储Blob容器?

注意:该容器由IIS(运行Webrole)日志(wad-iis-logfiles)使用。

+0

这个问题的答案[这里](https://stackoverflow.com/questions/10426213/how-to-clean-an-azure吸留斑点容器)。 – joanlofe

回答

0

使用天青CLI 2.0 A一个衬里:

az storage blob delete-batch --account-name <storage_account_name> --source <container_name> 

替代<storage_account_name><container_name>由你的情况适当的值。

您可以通过运行看commnand的帮助:

az storage blob delete-batch -h 
4

如果你的意思是你想删除一个容器。我想建议您检查http://msdn.microsoft.com/en-us/library/windowsazure/dd179408.aspx以查看删除容器操作(垃圾收集过程中容器及其中包含的任何Blob是否稍后被删除)是否可以满足要求。

+0

这种方法的问题在于,如果在创建具有相同名称的新容器之前找不到容器,Webrole会崩溃。 –

+0

在这种情况下,您唯一的选择是列出容器中的所有项目,并一次删除一个项目。 – knightpfhor

+0

@knightpfhor这就是我使用Azure存储浏览器(来自Neudesic)所做的。但是,尽管我可以选择一个组来一起删除,但速度很慢。 –

20

只有一种批量删除斑点的方法,那就是删除整个容器。正如你所说,在删除容器和再次使用容器名称之间有一段延迟。

您唯一的选择是一次删除一个。如果您可以从存储blob的同一个数据中心执行删除操作,则会比在本地运行删除操作快。这可能意味着编写代码(或者你可以将RDP加入你的一个实例并安装云资源管理器)。如果您正在编写代码,那么您可以通过并行删除项目来加快整个过程。同样的事情也该会的工作:

Parallel.ForEach(myCloudBlobClient.GetContainerReference(myContainerName).ListBlobs(), x => ((CloudBlob) x).Delete()); 
+2

作品非常好 - 谢谢!一个修正是将文件作为平面文件返回,以防文件夹被使用:'Parallel.ForEach(blobContainer.ListBlobs(useFlatBlobListing:true),x =>((CloudBlob)x).Delete());' – Eleasar

+0

是的,你是对的,那肯定是更安全的选择。 – knightpfhor

1

对于这种情况,更好的选择是,以确定容器中找到的项目列表中。然后从容器中删除每个项目。这是最好的选择。如果删除容器,你应该有一个运行时错误,下一次上...

10

在2016年最简单的方法是使用Microsoft Azure Storage Explorer IMO。

  1. 下载Azure存储资源管理器,并安装它
  2. 登录与相应的Microsoft帐户
  3. 浏览到你想清空的选择
  4. 单击所有按钮
  5. 单击删除容器按钮

Screenshot

+0

HOW在这里非常重要 - 您必须点击加载更多,直到您到达最后一页的blob,然后点击全选。然后删除。 –

+1

@RobertoBonini添加了这些步骤。我记得我不需要继续加载直到结束。 – gldraphael

+0

选择全部可以为“全部在页面”和“全部缓存”完成,无需加载所有页面。伟大的工具btw,感谢分享这个信息。 –

3

如果你有兴趣的CLI方式,那么下面这段代码将会帮助你:

for i in `az storage blob list -c "Container-name" --account-name "Storage-account-name" --account-key "Storage-account-access-key" --output table | awk {'print $1'} | sed '1,2d' | sed '/^$/d'`; do az storage blob delete --name $i -c "Container-name" --account-name "Storage-account-name" --account-key "Storage-account-access-key" --output table; done 

它首先获取容器斑点的列表,并删除它们一个接一个。

3

如果您使用可访问该存储帐户的spark(HDInsight)群集,则可以在命令行上使用HDFS命令;

hdfs dfs -rm -r wasbs://[email protected]_name.blob.core.windows.net/path_goes_here

真正的好处是,集群是不可能往下走,如果你有它运行的画面,这时你会不会,而你删除掉失去您的会话。