ossfs 1.0文件与文件夹识别机制​

本文为您介绍ossfs 1.0如何精准识别Bucket中的文件与文件夹。

对象存储与传统存储核心差异

对象存储采用扁平地址空间存储数据,与传统文件系统的层级目录结构不同,其核心区别如下:​

  • 无层级关联:OSS Bucket中不存在真实的文件、文件夹概念,所有数据均以对象形式存储​。

  • 命名规则差异:​

    • 传统文件系统:同一目录下不允许同时存在文件a和文件夹a/​。

    • 对象存储:aa/是两个独立对象,可共存且无逻辑关联。

ossfs 1.0文件系统模拟机制

当通过ossfs 1.0挂载OSS Bucket时,系统会通过以下方式模拟文件系统。

  • 目录树构建:以/作为路径分隔符,基于对象名称构建虚拟目录结构​。

  • 识别逻辑:通过对象名称、Content-Type、大小及配置选项综合判断对象类型(文件/文件夹)。

对象识别原则

重要

若您使用ossfs 1.0、ossfs 2.0或云存储网关CSG等工具或产品挂载OSS Bucket进行使用,在OSS Bucket中创建对象时,需遵循文件系统的命名规则,避免同时出现名为aa/的对象。

场景描述

识别结果

判定条件/逻辑说明

云上仅存在对象a

文件

无特殊标识的单一对象默认视为文件。

云上仅存在对象a/

  • ossfs1.91.6及后续版本

    文件夹

  • ossfs1.91.5及之前版本

    文件夹(满足任一条件)

    文件(不满足文件夹条件)

  • ossfs1.91.6及后续版本

    识别为文件夹。

  • ossfs1.91.5及之前版本

    文件夹条件:

    1. Content-Type为下列之一:

      • application/x-directory

      • httpd/unix-directory

      • binary/octet-stream

      • application/octet-stream

    2. Content-Typetext/plain且对象大小为01,同时开启complement_stat选项。ossfs 1.01.91.5版本及之后的版本默认启用该选项。文件条件:不满足上述文件夹判定条件(如 Content-Type 为image/jpeg)。文件条件:不满足上述文件夹判定条件(如 Content-Type 为image/jpeg)。文件条件:不满足上述文件夹判定条件(如 Content-Type 为image/jpeg)。

    文件条件:不满足上述文件夹判定条件(如 Content-Type 为image/jpeg)。

云上存在对象a/b,但无aa/

文件夹

通过子对象a/b的路径层级关系,推断父级a为虚拟文件夹。

云上同时存在对象aa/

ls命令:文件夹

Bucket中对象命名不符合文件系统规则。

stat命令:文件

云上存在aa/b,但无a/

文件

Bucket中对象命名不符合文件系统规则。