【问题标题】:Copying multiple files from Azure Blob Storage从 Azure Blob 存储复制多个文件
【发布时间】:2014-05-10 09:17:55
【问题描述】:

我们正在对 Azure Blob 存储中的目录结构进行建模。我希望能够将文件夹中的所有文件复制到本地目录。有什么方法可以一次从 blob 存储中复制多个匹配模式的文件,还是我必须单独获取这些文件?

【问题讨论】:

    标签: azure azure-blob-storage


    【解决方案1】:

    您可能已经知道,blob 存储仅支持 1 级层次结构:您有 blob 容器(文件夹),每个容器都包含 blob(文件)。那里没有文件夹层次结构的概念。创建文件夹层次结构错觉的方法是通过称为blob prefix 的东西。例如,看下面的截图:

    在上图中,您会看到 images blob 容器下的两个文件夹:16x1624x24。在云中,blob 名称包括这些文件夹名称。所以 blob 存储中 24x24 文件夹中的 AddCertificate.png 文件的名称是 24x24/AddCertificate.png

    现在谈到您的问题,您仍然需要下载单个文件,但存储客户端库允许您执行的是按 blob 前缀获取 blob 列表。因此,如果您想下载文件夹24x24 中的所有文件(或者换句话说,您想下载所有前缀为24x24 的blob),您将首先列出前缀为24x24 的blob,然后单独下载每个blob。在本地计算机上,您可以通过前缀名称创建一个文件夹。

    【讨论】:

    • 您在 Windows 资源管理器中从何处获得此 blob 容器?它是否仅适用于本地 blob 存储?
    • 哦 .. 这是一个名为 Azure Management Studio (cerebrata.com) 的工具的屏幕截图。它是用于管理 Windows Azure 的基于桌面的工具。他们还有一个名为 Azure Explorer 的免费工具,用于管理 blob。
    • 谢谢,它看起来不错,我想知道是否有人会提供用于管理 azure 或任何其他云提供商的网络驱动程序。
    • 你很幸运 :) ... 看看 Gladinet。他们的工具允许您将云存储帐户安装为网络驱动器。虽然我没有尝试过,所以我不知道该工具是否与 Windows Azure 存储中的最新更改保持同步。
    【解决方案2】:

    您可以参考下面的代码作为示例参考((它是用 javascript 编写的,但您可以轻松地将逻辑映射到任何语言)。此代码由 Microsoft 维护。

    https://github.com/WindowsAzure/azure-sdk-tools-xplat/blob/master/lib/commands/storage.blob._js#L144 https://github.com/WindowsAzure/azure-sdk-tools-xplat/blob/master/lib/commands/storage.blob._js#L689

    第二个链接解释了如何解析 blob 前缀并从中获取文件夹层次结构。 它还展示了如何使用多线程下载 blob 并使用 MD5 确保 blob 的完整性。

    仅包括处理包含前缀的 blob 路径的高级代码。完整实现请参考上面的链接,我不能在这里复制粘贴整个实现。

    if (!fileName) {
      var structure = StorageUtil.getStructureFromBlobName(specifiedBlobName);
      fileName = structure.fileName;
      fileName = utils.escapeFilePath(fileName);
      structure.dirName = StorageUtil.recursiveMkdir(dirName, structure.dirName);
      fileName = path.join(structure.dirName, fileName);
      dirName = '.'; //FileName already contain the dirname
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-18
      • 2021-07-29
      • 1970-01-01
      • 2018-05-18
      • 2019-04-01
      • 2017-05-06
      • 2020-03-23
      • 1970-01-01
      • 2023-01-20
      相关资源
      最近更新 更多