从 Azure 存储 Blob 中批量删除“x”天前的对象
Posted
技术标签:
【中文标题】从 Azure 存储 Blob 中批量删除“x”天前的对象【英文标题】:To delete objects from an Azure Storage Blob in bulk which are 'x' days older 【发布时间】:2019-06-11 10:36:32 【问题描述】:我希望从 azure 存储 blob 中删除早于“x”天的所有文件。我正在尝试以下代码但无法正常工作:
$StorageAccountName = '<name>'
$StorageAccountKey = '<key>'
$Ctx = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
Get-AzureStorageBlob -Container "reports" -Context $Ctx -Blob *.csv
where $_.LastModified -le (get-date).AddDays(-30) | Remove-AzureStorageBlob
我参考了以下文档,但查询不适用于条件删除。 link
【问题讨论】:
【参考方案1】:我建议你使用新的 azure powershell 模块AZ。
安装新的AZ模块后,试试下面的代码:
$accountname="xx"
$accountkey="xxx"
$ctx = New-AzStorageContext -StorageAccountName $accountname -StorageAccountKey $accountkey
Get-AzStorageBlob -Container "aa1" -Blob *.jpg -Context $ctx | where $_.LastModified -le (Get-Date).AddDays(-1) | Remove-AzStorageBlob
代码运行后,您可以在azure portal上查看或使用Get-AzStorageBlob
cmdlet查看是否所有指定的文件都被删除。在我的情况下,所有文件的日期
【讨论】:
【参考方案2】:Azure 存储具有“管理 Azure Blob 存储生命周期”功能。 https://docs.microsoft.com/en-us/azure/storage/blobs/storage-lifecycle-management-concepts
对于您的测试用例,您可以直接参考 https://docs.microsoft.com/en-us/azure/storage/blobs/storage-lifecycle-management-concepts#powershell
$action = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction Delete -daysAfterModificationGreaterThan 2555
【讨论】:
【参考方案3】:谢谢伊万。我将我的脚本与您的脚本进行了比较,发现在出现问题的 where 条件之前我缺少一个管道。放置管道后,我可以根据条件删除文件。不需要去 AzureAz。 现在正在运行的脚本是:
$StorageAccountName = 'xx' $StorageAccountKey = 'yyy'
$ctx = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
Get-AzureStorageBlob -Container "abc" -Blob *.pdf -Context $ctx |其中 $_.LastModified -le (Get-Date).AddDays(-4) |删除-AzureStorageBlob
【讨论】:
以上是关于从 Azure 存储 Blob 中批量删除“x”天前的对象的主要内容,如果未能解决你的问题,请参考以下文章
从 Azure Blob 存储批量插入时出现 ERRORFILE 问题