如何删除azure容器中的旧文件
我计划通过关闭vm,然后将vhd文件从生产容器复制到备份容器来备份azure vhd文件。如何自动删除备份容器中一周前的vhd文件?这是一个现成的功能。您必须自己编写一些代码。基本上,这些步骤是:如何删除azure容器中的旧文件,azure,backup,storage,blob,containers,Azure,Backup,Storage,Blob,Containers,我计划通过关闭vm,然后将vhd文件从生产容器复制到备份容器来备份azure vhd文件。如何自动删除备份容器中一周前的vhd文件?这是一个现成的功能。您必须自己编写一些代码。基本上,这些步骤是: 列出备份容器中的所有blob。Blob列表将返回Blob及其属性。其中一个属性将是LastModifiedDate(这将是UTC格式) 然后,您可以将逻辑放在查找“x”天前修改过的blob上。然后,您将继续删除这些blob 还有几件事: 您提到备份容器包含一些VHD,它们本质上是页面blob。列出b
LastModifiedDate
(这将是UTC格式)- 您提到备份容器包含一些VHD,它们本质上是页面blob。列出blob时,还将获得blob类型,以便可以按blob类型(
)进一步筛选列表PageBlob
- 就自动化进程而言,您可以在PowerShell脚本中编写此脚本,然后使用Windows Scheduler进行调度。如果您喜欢编写node.js,那么可以使用node.js编写相同的逻辑,并使用WindowsAzure移动服务调度器李>
$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
}
我在尝试删除整个容器时找到了这个答案。使用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
我对powershell做的不多。您是否有可能列出一些所需代码的示例?您实际上不必在PowerShell中执行此操作。您可以使用Windows Scheduler制作一个简单的可执行应用程序并进行调度。谢谢您的建议,但不幸的是,我不是程序员。Azure没有用于此任务的某种类型的计划程序,这太糟糕了。感谢您提供的脚本。我无法使计划部分正常工作,所以我将其剥离,并在TaskScheduler上手动计划。如果我有多个容器名称怎么办?您是否使用PowerShell 3.0版?如果是这样的话,那么这个脚本就可以了。我很感谢你发布一个更精简的版本,我可以在任务调度器中安排自己。