第9章 Cloudreve 核心概念解析:文件、文件块与存储策略
核心概念
Cloudreve 是一个在物理文件系统之上构建抽象层的云存储系统。本节将介绍 Cloudreve 中的几个核心概念,理解它们有助于你更好地使用 Cloudreve。
Cloudreve 的文件系统主要由文件(File)、文件块(File Blob)、元数据(Metadata)、存储策略(Storage Policy)和物理文件(Physical File)组成。其中,文件、文件块和元数据存储在数据库中,而物理文件则存储在存储策略所定义的存储提供者中。下面是一个简化的示例:
文件(File)
文件是用户在 Cloudreve 文件管理器中看到的内容,文件夹也是一种特殊的文件。
文件与文件块
一个文件可以包含一个或多个文件块,文件的实际内容存储在文件块中。
当为文件启用了版本保留功能时,每次修改文件内容都会生成一个新的文件块,旧版本的文件块仍然与该文件保持关联,用于保存版本历史。即使未启用版本保留,用户更新文件内容时 Cloudreve 也会生成新的文件块,并解除旧版本文件块的关联。
当文件生成缩略图时(仅限 Cloudreve 代理生成的情况),Cloudreve 会将缩略图数据存储在一个缩略图文件块中,并将其与该文件关联。
文件的"大小"指的是当前版本文件块的大小,文件的"已用存储"则是所有关联文件块大小之和。
文件与存储策略
每个文件还关联着一个首选存储策略:
- 对于普通文件,它仅表示新文件块的存储方式,不代表已有文件的实际存储位置。
- 对于文件夹,它表示该目录下新文件的存储策略。如果文件夹未指定存储策略,则沿用父目录的设置。
当首选存储策略不存在或不可用时,会回退使用该用户的第一个可用存储策略。
文件与元数据
一个文件可以关联零到多个元数据条目,用于记录文件的附加信息,例如媒体文件信息、EXIF 数据、缩略图状态等。
复制
用户复制文件时,文件本身及其关联的元数据会被复制生成新记录,但关联的文件块不会被复制,而是在新生成的文件中创建新的文件块关联。
文件块(File Blob)
文件块代表实际存储的数据,通过关联的存储策略和路径引用指向存储提供者上的物理文件。文件块是不可变的。一个文件块可以关联多个文件,例如文件被多次复制时,这些文件会共享同一组文件块。当文件块不再关联任何文件时,即被视为未使用,最终会被 Cloudreve 的队列调度器清理,同时删除存储提供者上对应的物理文件。
文件块的类型包括:版本、缩略图和 Live Photos。
物理文件(Physical File)
物理文件是存储提供者上的实际文件,其路径记录在文件块中。
存储策略(Storage Policy)
存储策略定义了文件的存储方式、存储提供者的配置以及文件上传和下载的配置。每个用户组会被分配一个存储策略,用户只能使用其用户组所分配的存储策略。
Pro
在 Pro 版中,一个用户组可以分配多个存储策略,用户可自由选择使用哪个存储策略。
元数据(Metadata)
元数据记录了文件的附加信息,例如媒体文件信息、EXIF 数据、缩略图状态等。每个元数据条目关联唯一的一个文件,一个文件可以拥有零到多个元数据条目。元数据包含 Name 和 Value 字段;如果名称以 sys: 开头,则表示这是系统元数据,用户无法修改。
元数据中记录的常见信息包括:
- 文件的媒体信息
- 自定义目录图标/颜色
- 缩略图状态
- 快捷方式文件对应的分享链接
- 回收站中文件的原始路径
- 回收站中文件的过期时间
- 文件标签
关于元数据的更多信息,请参阅元数据章节。
元数据可用于文件搜索。
文件权限
文件权限定义了当该文件位于共享目录的子级时,其他用户对其的访问权限。如果未设置,Cloudreve 会向上逐级查找父目录的权限设置,直到共享根目录为止。
当用户共享一个目录时,目录本身的权限会被忽略,因为用户在分享时已设置了分享链接的权限,该设置会覆盖目录的权限,但其子目录的权限仍然有效。
对于单个文件的分享,文件自身的权限设置会被忽略,使用的是分享链接的权限设置。
提示
文件权限对管理员用户组无效,管理员用户组始终拥有所有权限。