是否可以列出上次修改日期大于指定日期的容器上的所有blob。
我有一个包含数百万个blob的容器,并希望将这些blob复制到备份容器中,但是不希望遍历所有blob,检查每个blob上次修改日期。
可以使用Powershell。请参阅下面的代码段。
$StorageAccountName = "AccountName"
$StorageAccountKey = "What_ever_your_key_is_123asdf5524523A=="
$Context = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
$ContainerName = "Container"
$Blobs = Get-AzureStorageBlob -Container $ContainerName -Context $Context `
| Where-Object{$_.LastModified.DateTime -gt (Get-Date).Date}
上面的命令将从午夜获得当天的blob。
然后,您可以使用Get-Date
cmdlet上的函数进一步缩小时间范围,如下所示。
$Blobs = Get-AzureStorageBlob -Container $ContainerName -Context $Context `
| Where-Object{$_.LastModified.DateTime -gt ((Get-Date).Date).AddDays(-1)}
你也可以通过管道到Sort-Object
cmdlet进行排序,如下所示,对任何属性进行排序(我在下面的例子中按日期排序)。
$Blobs = Get-AzureStorageBlob -Container $ContainerName -Context $Context `
| Where-Object{$_.LastModified.DateTime -gt (Get-Date).Date.AddDays(-1)} `
| Sort-Object -Property Date
是否可以列出上次修改日期大于指定日期的容器上的所有blob。
截至今天,这是不可能的。 Blob服务不提供查询功能。当您列出blob时,Blob服务将返回按blob名称排序的列表。
不是现在,但如果您需要此功能,可以继续按日期组织blob,方法是在名称前加上年,月和日期。然后你可以要求blob服务返回以特定前缀开头的blob名称。如果使用Azure App Service
,请查看Azure应用服务的诊断数据如何存储在blob容器中。它按年,月和日期作为前缀。