2013-07-30 39 views

回答

1

這是開箱即用的東西。你將不得不自己編寫一些代碼。基本上這些步驟將是:

  1. 列出備份容器中的所有斑點。 Blob列表將返回blob及其屬性。其中一個屬性是LastModifiedDate(這將以UTC表示)。
  2. 然後,您可以將您的邏輯找到已在「x」天前修改的blob。然後,您會繼續並刪除這些斑點。

一些其他的東西:

  • 您剛纔說您的備份容器包含一些VHD文件本質上屬於頁面的斑點。當你列出blob時,你也會得到blob類型,所以你可以通過blob類型進一步過濾列表(= PageBlob
  • 就自動執行進程而言,你可以將它寫入PowerShell腳本,然後使用Windows調度程序。如果您願意編寫node.js,則可以使用node.js編寫相同的邏輯並使用Windows Azure Mobile Service Scheduler。
+0

我沒有做太多的PowerShell。你有可能列出所需代碼的一些例子嗎? – user1532937

+0

您不必在PowerShell中執行此操作。您可以製作一個簡單的可執行應用程序並使用Windows Scheduler進行安排。 –

+1

感謝您的建議,但不幸的是我不是程序員。這太糟糕了Azure沒有這種任務的某種類型的調度器。 – user1532937

8

如果你可以接受使用PowerShell,那麼這將爲你做。它將註冊一個計劃作業,每天運行並刪除指定容器中的PageBlob。

$taskTrigger = New-ScheduledTaskTrigger -Daily -At 12:01AM 
Register-ScheduledJob -Name DeleteMyOldFiles -Trigger $taskTrigger -ScriptBlock { 
    $isOldDate = [DateTime]::UtcNow.AddDays(-7) 

    Get-AzureStorageBlob -Container "[YOUR CONTAINER NAME]" | 
     Where-Object { $_.LastModified.UtcDateTime -lt $isOldDate -and $_.BlobType -eq "PageBlob" } | 
     Remove-AzureStorageBlob 
} 
+0

感謝您的腳本。我無法獲得計劃部分的工作,所以我將其刪除並手動安排在Task Scheduler上。如果我有多個容器名稱會怎麼樣? – user1532937

+0

您是否使用PowerShell版本3.0?如果是這樣,那麼這個腳本將起作用。 –

1

我試圖刪除整個容器時發現此答案。利用裏克的回答爲模板,我想出了這個試驗假設確定哪個容器將被刪除:

$ctx = New-AzureStorageContext -StorageAccountName $AzureAccount ` 
           -StorageAccountKey $AzureAccountKey 

$isOldDate = [DateTime]::UtcNow.AddDays(-7) 

Get-AzureStorageContainer -Context $ctx        ` 
    | Where-Object { $_.LastModified.UtcDateTime -lt $isOldDate } ` 
    | Remove-AzureStorageContainer -WhatIf 

後來,當我滿意的是,名單應當刪除,我以前-Force以不必確認每一個刪除:

Get-AzureStorageContainer -Context $ctx        ` 
    | Where-Object { $_.LastModified.UtcDateTime -lt $isOldDate } ` 
    | Remove-AzureStorageContainer -Force 
+0

我感謝你發佈一個更簡潔的版本,我可以安排自己在任務調度器中。 –

相關問題