文件库FRS存储格式

FRS是系统后台文件存储规范,本文定义了详细的存储格式。

frs是润普公司制定一个开放的文件存储系统规范,支持元数据、版本、回收站、缓存等功能,并提供开源的python访问操作库。

1   配置文件说明

文件库配置文件 frs.conf 用于文件库的虚拟文件系统同实际文件库系统的路径映射,存放在实例自身的当前目录。默认的配置文件,已经可满足大多数的应用需求。

文件格式为windows标准ini文件格式,包括cache、root、site三节。

1.1   [cache]: 对缓存区的设置

cache节设置文件库缓存区根路径的存放路径:

[cache]
path=%(APP_HOME)s/var/frs-cache

缓存内容通常是现有内容转换生成的。 比如上传图片会自动生成不同大小的缩略图,这些缩略图就是保存在缓存区的。

缓存内容对存储介质的可靠性要求不高,也不必对缓存文件进行备份。

1.2   [root]:路径映射

root节定义了文件库和文件系统之间的路径映射关系。root节典型如下:

[root]
/audio= /var/frs/audio
/video= /var/frs/vidio
/members= /var/frs/members

上述定义了三个根点在文件系统中的路径,每行的含义是:

文件库根结点 = 文件系统的路径

上述配置,可以建立一个抽象于具体文件系统位置的一个虚拟文件系统(VFS = Virtual File System)。

1.3   [site]保留项

暂时无用。

2   存储目录结构概览

文件库的每个实体(包括文件和目录),都包含文件自身和元数据两个文件,存放的位置为:

sample                        -> 主文件
.frs/                         -> 文件库的附加特殊文件夹
        metadata.json           -> 文件组成信息

典型的文件夹结构:

|-- everydo-frs                               #frs根目录
|   `-- ..
|        f1.txt                               # 文件库的文件
|         d1/                                  # 文件库的文件夹
|         .frs/                                # 文件库的附件特殊文件夹(隐藏)
|              f1.txt/
|                   metadata.json              # 元数据
|                   archived/                  # 存档文件
|                         1                     # 版本号
|                         2
|                             ....
|              .frsremoved/                    # 删除的文件(回收站)
|                   2005-10-09-10-23-21/       # 某次删除的文件
|                        f3.txt                # 删除的f2
|                        f4.txt
|                        d2.txt
|                        .frs/                 # 文件的附件文件
|                             ....
|                   2005-10-09-12-32-02/       # 某次删除的文件
|                        f5.txt
|                        .frs/
|                             ....
|
|
`-- everydo-frscache                           #frs缓存根目录
    `-- ..
        |-- agent.txt
        |   `-- .frs.mime_text_html            #缓存文件夹
        |       `-- transformindex.html
        |-- hello.rst
        |   `-- .frs.mime_text_pdf             #缓存文件夹
        |       `-- transformindex.pdf

3   元数据的存放

元数据以json格式存放在metadata.json这个文件中.

典型的元数据格式:

{
    "main": {
        "id": 1231243112,
        "contenttype": "File",
        "mimetype": "application/pdf",
        "stati": [
            "visible.default",
            "modify.default"
        ]
    },

    "dublin": {
        "description": "收集知识管理相关的资料、电子书籍等",
        "language": "zh",
        "created": "2003-08-20 15:05:27",
        "effective": "2006/12/30 18:35:55.479 GMT+8",
        "title": "资料库",
        "modified": "2006-12-30 10:35:55",
        "subjects": [
            "知识管理理念",
            "知识管理系统",
            "其他"
        ],
        "creators": [
            "users.panjy"
        ]
    }
}

3.1   主数据

main里面存放的是主数据。

contenttype

用来指定类型,取值包括如下几种:

  • Folder: 文件夹
  • File: 文件
  • Image: 图片
  • Document: 文档
mimetype
文件的mime类型,如纯文本文件是text/plain,html是text/html
stati

是文件的状态, 可如下取值

  • 保密性状态
    • visible.default(非保密)
    • visible.private(保密)
  • 发布状态
    • modify.default(普通)
    • modify.archived(已发布)
id
文件的内部id,这是一个整数,全文件库唯一,用于搜索. 导入系统的时候, 在系统内部自动更新.
keys
对于排序文件夹,这里是文件夹内容的文件名
hidden_keys
文件夹中, 在导航栏目上不需要显示的条目

3.2   dublin

这里存放的是国际标准都柏林核心集:

  • creators 创建者
  • title 标题
  • subjects 分类
  • description 描述
  • created 创建时间
  • modified 修改时间
  • effective 生效时间
  • expires 失效时间
  • publisher 发布者
  • contributors 贡献者
  • identifier 标识
  • language 语言
  • rights 版权

4   版本的存放

存放位置:

f1.txt                               # 文件库的文件
d1/                                  # 文件库的文件夹
.frs/                                # 文件库的附件特殊文件夹(隐藏)
     f1.txt/
          archived/                  # 存档文件
                   1                 #版本号
                   .
                   .
                   100               #版本号
                   ...

5   缓存文件的存放

存放位置:

`-- everydo-frscache                           #frs缓存根目录
    `-- ..
        |-- agent.txt
        |   `-- .frs.mime_text_html            #缓存文件夹
        |       `-- transformindex.html
        |-- hello.rst
        |   `-- .frs.mime_text_pdf             #缓存文件夹
        |       `-- transformindex.pdf

6   删除文件的位置

存放位置:

f1.txt                               # 文件库的文件
 d1/                                  # 文件库的文件夹
 .frs/                                # 文件库的附件特殊文件夹(隐藏)
         ....
      .frsremoved/                    # 删除的文件(回收站)
           2005-10-09-10-23-21/       # 某次删除的文件
                f3.txt                # 删除的f2
                f4.txt
                d2.txt
                .frs/                 # 文件的附件文件
                     ....
           2005-10-09-12-32-02/       # 某次删除的文件