2012-08-24 96 views
2

我开发的应用程序基本上允许用户上传内容并存储在Azure Blob存储中。删除一段时间内未触发的Azure blob存储内容

由于内容的性质是为了在用户之间快速共享,所以许多内容在一段时间后很快就不会变动。但是对于一些内容可以反复使用。

为了阻止blob存储空间规模的空前增长,我计划编写基本上可以找到任何未使用一段时间的blob并将其从存储中删除的工具。

如果是标准文件系统,我可以使用“上次访问时间”来指示上次使用的时间文件的时间。但是,我似乎无法找到blob的相似属性来确定上次访问时间。

因此,有没有人遇到过这种情况,最好的办法是什么? 还是我太关心这个了?

任何意见或建议,非常感谢。

谢谢你在先进。

回答

-2

您可以使用块和页面blob Properties.LastModifiedUtc来获取上次修改日期。使用页面或块blob,您需要使用GetBlockBlobReference或GetPageBlobReference API以及FetchAttributes()来获取blob引用,然后您可以查找LastModifiedUtc。

例如带座BLOB这里是代码片段:

CloudBlockBlob blockBlob = container_name.GetBlockBlobReference(uri.ToString()); 
blockBlob.FetchAttributes(); 
// blockBlob.Properties.LastModifiedUtc will return the last modified date for the blob. 
+0

lastmodifieddate是不一样的LastAccessTime。所以我不能真正使用它。 – heisthedon

+1

如此处所述http://msdn.microsoft。com/en-us/library/windowsazure/ee773165上次访问blob可能不可用。如果你可以添加你自己的元数据并保持你的blob,你一定可以实现它。 – AvkashChauhan

+1

有一个相当复杂的方法来实现这一点。如果您在存储帐户上启用存储分析,然后通过日志进行分析(在$ logs blob容器中提供),以查找上次访问blob的时间。 –

4

,我只能看到处理这两种方式:

  1. 接待的访问BLOB这样,他们必须打一个服务到 获得具有SAS签名的Blob URL。这样你可以计数和 监视哪些blob被访问。删除一段时间后 较低/无法访问的较旧斑点。这需要关闭 公共访问权限,以便人们不能只是绕过你的SAS签名。
  2. 打开存储分析并监控GET请求。例如, 必须解析一个月的所有GET访问,例如($ logs每小时更新一次)并按 资源分组。如果你自动化了这个,它不会太糟糕。 这会给你一个被访问过的所有资源的列表 。