2012-08-24 89 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每小時更新一次)並按 資源分組。如果你自動化了這個,它不會太糟糕。 這會給你一個被訪問過的所有資源的列表 。