为什么我的 Azure Blob 存储容器中存在重复文件夹?

Why do duplicate folders exist in my Azure blob storage container?

我知道 Azure blob 存储不使用实际的文件夹结构,但想不出更好的方式来描述它。

我们看到的问题是在打开服务器资源管理器(在 Visual Studio 中)浏览我们的 blob 存储容器时。我们按文件夹分隔客户端资源和数据,因此在本例中我们有一个名为 productdata/Client_5/testimage.jpg.

的 blob

问题是这个 Client_5 文件夹在检查我们的 blob 存储时出现了两次。到目前为止,我已经仔细检查了两个文件夹中没有奇怪的特殊字符,并仔细检查了区分大小写。除了实际内容外,这两条路径完全相同。我们的应用程序对此没有问题,因为路径仍然与它试图获取的资源完全相同。 (例如,由于文件夹的名称完全相同,<a href="https://myazureaccount.blob.core.windows.net/productdata/Client_5/image.jpg" rel="nofollow">https://myazureaccount.blob.core.windows.net/productdata/Client_5/image.jpg</a> 仍然会将我们带到我们需要的地方。)当我们使用服务器资源管理器来在 Azure 上查看我们的 blob,因为我们有两个文件夹位置要检查。这很可能也是 Visual Studio 服务器资源管理器中的一个错误。

如果其他人遇到过此问题,欢迎提供任何信息。我在网上搜索时找不到关于该主题的任何内容,但我想我会 post 这里的问题以供参考。此外,我将很快联系 Azure 支持人员,看看他们是否可以对此有所了解,并且 post 稍后我会从他们那里获得什么信息。

Azure blob storage没有文件夹的概念,只有容器,可以模拟文件夹设置博客名称保存如'folder/img.png ',但 folder/ 是 blob 名称的一部分。

此外,我曾经使用过存储资源管理器,试试这个:http://azurestorageexplorer.codeplex.com/releases/view/125870

Blob 存储确实没有文件夹的概念,但建立在它之上的 API 有。我在其他工具中也看到过完全相同或相似的问题:Microsoft Azure Storage Explorer 甚至 Azure Portal。我试图更深入,当我执行时:

CloudBlobContainer.ListBlobs(null, useFlatBlobListing: false)

它还返回了重复的目录。准确地说,它返回了具有相同 Prefix 的多个 CloudBlobDirectory 实例的列表。听起来像个错误。现在,如果一个工具使用这种方法来获取目录列表,它将失败。如果该工具使用平面列表并在其逻辑中构建文件夹结构,那应该没问题。

很难说这种行为的原因是什么。在我的例子中,blob 存储中的文件是由 Azure 数据工厂 activity 使用并发选项复制的,但我不确定这是否是规则。

顺便说一句,在我的例子中,Microsoft Azure 存储资源管理器只显示了部分文件夹子集,这比显示重复的目录要糟糕得多,所以我切换到上面提到的 Azure 资源管理器,它值得推荐。

我遇到了一个问题,即“文件夹”名称看起来完全相同,但仔细检查后有一个尾随 space。

因为文件夹在 blob 存储中并不真正存在并且 space 是一个有效值,所以名称中可能有尾随或前导 space。