从 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 的永久删除日期

从 Azure Blob 存储批量插入时出现 ERRORFILE 问题

有没有办法从本地 Azure Blob 存储批量插入?

跨多个容器批量删除 blob

Azure SQL - 从 Azure 文件而不是 Blob 批量插入

下载后如何从 azure blob 存储中删除文件