为 Azure Blob 存储批量更改层

Posted

技术标签:

【中文标题】为 Azure Blob 存储批量更改层【英文标题】:Change tier in bulk for Azure blob storage 【发布时间】:2019-05-16 22:18:32 【问题描述】:

我有数千个带有给定后缀的 blob,我想批量分配给一个新层(热归档)。我知道可以手动更改门户上的层或通过指向特定 blob 的 REST 请求。有没有办法使用通配符或类似的东西批量设置层?

【问题讨论】:

【参考方案1】:

真的很简单,只有 3 行。

#Get stroage account 
$straccount = Get-AzureRmStorageAccount -Name xxxxxx -ResourceGroupName xxxxxxxxxxxxx

#Get all the blobs in container
$blobs = Get-AzureStorageBlob -Container test -Context $straccount.Context

#Set tier of all the blobs to Archive
$blobs.icloudblob.setstandardblobtier("Archive") 

只要确保容器只有块 blob,否则会出错。最后我检查了存档层仅由块 blob 支持。

https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.blob.cloudblockblob?view=azure-dotnet

希望这会有所帮助。

【讨论】:

嘿,有问题的帐户确实有附加 blob,我不想全部设置为存档,只有某些具有特定后缀的帐户 你可以做前缀。 $blob = Get-AzureStorageBlob -Container test -Context $straccount.Context -Prefix xxxxxxx 这些也应该可以工作,不测试也不推荐。 $blob = Get-AzureStorageBlob -Container test -Context $straccount.Context -Blob "*test" 我认为该代码行不通,因为您要检索到$blobs,然后使用$blob。此外,您必须遍历 $blobs 内的所有 blob 名称 - 每层更改都是单独的调用;无法通过单个操作设置容器中的所有 blob。 另外,我不太同意将这个(或任何某人不知道的编程解决方案)称为“真的像...一样简单” 需要了解 icloudblob 对象它有100多种方法。并且需要知道这是大量的网络事务(如果您有数千或数百万个 blob,可能会长时间运行)。

以上是关于为 Azure Blob 存储批量更改层的主要内容,如果未能解决你的问题,请参考以下文章

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

使用服务帐户从 Azure Blob 存储中批量删除文件

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

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

跨多个容器批量删除 blob

Azure Blob存储更改缓存时间