2013-07-30 30 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

我感谢你发布一个更简洁的版本,我可以安排自己在任务调度器中。 –

相关问题