【问题标题】:How to create sub directory in Windows Azure blob container and rename directory如何在 Windows Azure blob 容器中创建子目录并重命名目录
【发布时间】:2015-08-02 12:09:41
【问题描述】:

如何在 Windows Azure blob 容器中创建子目录? 我知道我们可以使用像“content/2015/images/mypicture.jpg”这样的 blob 名称。

但我们需要更改父目录名称。子目录可能包含许多文件。更改子目录中的每个 blob 名称都需要时间。这个怎么做? 我已阅读以下链接。但他们没有提到如何处理重命名父目录。谢谢

Windows Azure: How to create sub directory in a blob container

How to create a sub container in azure storage location

【问题讨论】:

    标签: azure azure-blob-storage


    【解决方案1】:

    但我们需要更改父目录名称。子目录可能包含 许多文件。更改子目录中的每个 blob 名称都需要时间。 如何做到这一点?

    所以,blob 存储中有两件事:

    1. 正如您所提到的,那里没有文件夹的概念。要创建文件夹的错觉,请在 blob 名称前加上所需的文件夹。
    2. Blob 存储本身不支持重命名功能。为了完成重命名,您需要对 blob 执行 2 个操作:复制+删除。

    以下是重命名 Blob 存储中的文件夹的方法:

    1. 首先,您需要列出该文件夹中的所有 Blob。您可以使用ListBlobs 方法并将文件夹名称作为prefix 参数传入。在这里查看我的答案:How to load list of Azure blob files recursively?
    2. 接下来,您需要复制这些 blob,因为您只是重命名文件夹,您基本上可以通过将 old folder name 替换为 new folder name 来创建 blob 的新名称。
    3. 复制 blob 后,您可以再次迭代 blob 并逐个删除它们。

    您还可以结合第 2 步和第 3 步,对每个 blob 执行复制 + 删除操作。所以你遍历你的 blob 列表,首先用新名称复制它,删除它,然后移动到下一个 blob。

    最重要的是,您需要对文件夹中的每个 blob 执行 Copy+Delete 才能重命名该文件夹。

    【讨论】:

    • 谢谢。但是使用复制+删除可能会花费很多时间。一个“重命名”请求可能需要数百个“复制+删除”请求。 Azure blob 系统不支持作为窗口文件系统的目录概念,这看起来很奇怪。
    • 我同意如果你有很多 blob 可能需要很长时间。但不幸的是,截至今天,它是唯一的选择。我会建议Azure File Service,它与目录概念非常相似,但它不像今天的 blob 服务那样功能丰富。
    • 嗨 Gaurav,我们想使用像窗口文件系统一样的 Azure 存储。例如列出文件/目录、重命名文件/目录、获取目录大小……我们需要使用什么 Azure 服务?使用 Azure blob 很头疼。它需要手动使用表来记录文件树,列出所有blob来计算“目录”大小,“锁定系统”来禁止同时上传相同的文件......谢谢。
    猜你喜欢
    • 2023-04-06
    • 2011-02-06
    • 1970-01-01
    • 2012-12-12
    • 2012-12-29
    • 2015-12-19
    • 2010-10-20
    • 2017-08-25
    • 1970-01-01
    相关资源
    最近更新 更多