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

Mik*_*e U 5 c# azure azure-storage-blobs

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

我有一个包含数百万个 blob 的容器,想将这些 blob 复制到备份容器,但不想遍历所有 blob,检查每个 blob 的上次修改日期。

Mus*_*lam 6

可以使用 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}
Run Code Online (Sandbox Code Playgroud)

上面的命令将从午夜开始获取当天的 blob。

然后,您可以使用 cmdlet 上的功能Get-Date进一步缩小时间范围,如下所示。

$Blobs = Get-AzureStorageBlob -Container $ContainerName -Context $Context `
| Where-Object{$_.LastModified.DateTime -gt ((Get-Date).Date).AddDays(-1)}
Run Code Online (Sandbox Code Playgroud)

您还可以通过管道传输到 cmdlet 来对此进行排序,Sort-Object如下所示,以对任何属性进行排序(我在下面的示例中按日期进行排序)。

$Blobs = Get-AzureStorageBlob -Container $ContainerName -Context $Context `
| Where-Object{$_.LastModified.DateTime -gt (Get-Date).Date.AddDays(-1)} `
| Sort-Object -Property Date
Run Code Online (Sandbox Code Playgroud)


Gau*_*tri 5

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

截至今天,这是不可能的。Blob 服务不提供查询功能。当您列出 blob 时,Blob 服务将返回一个按 blob 名称排序的列表。

不是现在,但是如果您需要此功能,您可能希望通过在名称前加上年、月和日期来按日期组织 Blob。然后,您可以要求 blob 服务返回以特定前缀开头的 blob 名称。如果使用Azure App Service,请查看 Azure 应用服务的诊断数据如何存储在 blob 容器中。它以年、月和日为前缀。