是否可以列出上次修改日期的Azure Blob>一些日期

时间:2017-06-27 10:22:35

标签: c# azure azure-storage-blobs

是否可以列出上次修改日期大于指定日期的容器上的所有blob。

我有一个包含数百万个blob的容器,并希望将这些blob复制到备份容器中,但是不要遍历所有blob,检查每个blob的最后修改日期。

3 个答案:

答案 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已经写过的日期按日期组织斑点。