Azure Blob存储创建文件夹层级时生成意外根目录链接问题
Azure Blob上传后层级出现根目录跳转链接问题
问题现象
现有Python脚本用于将文件上传至Azure Blob存储的指定文件夹层级,目标路径规则为顶层文件夹名/年/月/日/文件名.json,参考路径示例:data/Scanner/2022/07/15/scanner23_30_45_21.json。
脚本可根据当前日期自动生成对应层级路径,文件上传功能可正常运行,但上传完成后,文件夹结构的每一层都会额外出现一个指向容器层级根目录的链接,异常效果如下:
初步猜测该问题与Blob服务底层采用扁平存储方案、而非原生层级化存储的特性有关。
问题复现代码
import os from pathlib import Path from datetime import datetime import json from azure.storage.blob import BlobClient # 生成带时间戳的文件名 datetime_string = datetime.utcnow().strftime("%Y_%m_%d-%I_%M_%S_%p") # 按年、月维度生成存储路径层级 year_utc = datetime.utcnow().strftime("%Y") month_utc = datetime.utcnow().strftime("%m") filename_prefix =f"Scanner/{year_utc}/{month_utc}/{datetime_string}.json" data = json.dumps("test_content_of_file",indent = 4) blob = BlobClient.from_connection_string(conn_str="Connectionstringetc", container_name="data", blob_name= filename_prefix) blob.upload_blob(data, overwrite=False)
原因说明
- 猜测方向完全准确:Azure普通Blob存储默认使用扁平命名空间,底层不存在真实的“文件夹”实体,各类存储浏览工具中展示的文件夹结构,是根据Blob名称里的
/分隔符虚拟拆分出来的路径节点,并非存储账户中真实存在的目录对象。 - 看到的每层根目录跳转链接,不是代码上传生成的真实文件,是存储浏览工具(包括Azure门户内置存储浏览面板、Azure官方存储资源管理器等)的内置UI渲染逻辑:当检测到虚拟路径分段没有对应的零字节目录占位Blob时,工具会自动生成这类导航节点,模拟传统文件系统的层级跳转交互,这类节点不占用存储容量,也不会影响实际Blob的访问路径正确性。
- 上述上传代码本身无逻辑错误,只要最终上传的Blob完整路径符合预期,这些跳转项只是前端展示的UI元素,不属于存储数据异常。
- 如果需要原生支持真实目录结构、消除这类虚拟导航节点,可以在创建存储账户时开启分层命名空间(ADLS Gen2模式),开启后存储会原生支持目录实体,浏览时就不会出现这类自动生成的跳转占位节点。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

