本文为您介绍ossfs 1.0如何精准识别Bucket中的文件与文件夹。
对象存储与传统存储核心差异
对象存储采用扁平地址空间存储数据,与传统文件系统的层级目录结构不同,其核心区别如下:
- 无层级关联:OSS Bucket中不存在真实的文件、文件夹概念,所有数据均以对象形式存储。 
- 命名规则差异: - 传统文件系统:同一目录下不允许同时存在文件a和文件夹a/。 
- 对象存储:a与a/是两个独立对象,可共存且无逻辑关联。 
 
ossfs 1.0文件系统模拟机制
当通过ossfs 1.0挂载OSS Bucket时,系统会通过以下方式模拟文件系统。
- 目录树构建:以 - /作为路径分隔符,基于对象名称构建虚拟目录结构。
- 识别逻辑:通过对象名称、Content-Type、大小及配置选项综合判断对象类型(文件/文件夹)。 
对象识别原则
若您使用ossfs 1.0、ossfs 2.0或云存储网关CSG等工具或产品挂载OSS Bucket进行使用,在OSS Bucket中创建对象时,需遵循文件系统的命名规则,避免同时出现名为a和a/的对象。
| 场景描述 | 识别结果 | 判定条件/逻辑说明 | 
| 云上仅存在对象 | 文件 | 无特殊标识的单一对象默认视为文件。 | 
| 云上仅存在对象 | 
 | 
 | 
| 云上存在对象 | 文件夹 | 通过子对象 | 
| 云上同时存在对象 | ls命令:文件夹 | Bucket中对象命名不符合文件系统规则。 | 
| stat命令:文件 | ||
| 云上存在 | 文件 | Bucket中对象命名不符合文件系统规则。 |