是否可以列出上次修改日期大于指定日期的容器上的所有blob。
我有一个包含数百万个blob的容器,并希望将这些blob复制到备份容器中,但是不要遍历所有blob,检查每个blob的最后修改日期。
答案 0 :(得分:3)
是否可以在上次修改的容器中列出所有blob 日期大于指定日期。
截至今天,这是不可能的。 Blob服务不提供查询功能。当您列出blob时,Blob服务将返回一个按blob名称排序的列表。
不是现在,但如果您需要此功能,可以继续按日期组织blob,方法是在名称前加上年,月和日期。然后你可以要求blob服务返回以特定前缀开头的blob名称。如果使用Azure App Service
,请查看Azure应用服务的诊断数据如何存储在blob容器中。它以年,月和日为前缀。
答案 1 :(得分:1)
可以使用Powershell进行操作。请参见下面的代码段。
statisticalModeling
上述命令将从午夜开始获取当天的Blob。
然后您可以使用install.packages('statisticalModeling')
library(statisticalModeling)
cmdlet上的功能进一步缩小时间范围,如下所示。
$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}
您还可以通过以下方式将其通过管道传递到Get-Date
cmdlet来对任何属性进行排序(我在下面的示例中按日期进行了排序)。
$Blobs = Get-AzureStorageBlob -Container $ContainerName -Context $Context `
| Where-Object{$_.LastModified.DateTime -gt ((Get-Date).Date).AddDays(-1)}
答案 2 :(得分:0)
如果您查看REST API documentation,则没有参数可以过滤日期/时间。因此,执行此操作的唯一方法是列出所有斑点,然后根据您的条件进行过滤(这也由Mustafa Salmans回答完成),或者按照Gaurav Mantri已经写过的日期按日期组织斑点。