我计划通过关闭我的虚拟机然后将 vhd 文件从生产容器复制到备份容器来备份我的 azure vhd 文件。如何自动删除备份容器中一周前的 vhd 文件?
问问题
8172 次
3 回答
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
}
于 2013-07-30T22:59:33.937 回答
1
这是开箱即用的东西。您必须自己编写一些代码。基本上这些步骤是:
- 列出备份容器中的所有 Blob。Blob 列表将返回 Blob 及其属性。其中一个属性是
LastModifiedDate
(这将是 UTC)。 - 然后,您可以使用您的逻辑来查找“x”天前已修改的 blob。然后,您将继续删除这些 blob。
其他几件事:
- 您提到您的备份容器包含一些本质上是页 blob 的 VHD。当您列出 blob 时,您还将获得 blob 类型,因此您可以按 blob 类型 (=
PageBlob
)进一步过滤列表 - 就自动化过程而言,您可以在 PowerShell 脚本中编写它,然后使用 Windows 调度程序对其进行调度。如果您喜欢编写 node.js,您可以使用 node.js 编写相同的逻辑并使用 Windows Azure Mobile Service Scheduler。
于 2013-07-30T15:09:11.840 回答
1
我在尝试删除整个容器时找到了这个答案。使用 Rick 的回答作为模板,我想出了这个试验假设来确定哪些容器将被删除:
$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
于 2017-02-14T18:58:41.760 回答