1 个不稳定版本

0.4.0 2020年2月18日

#88#移动

GPL-3.0-only

115KB
2K SLoC

MSDB - 移动安全数据库

msdb 是一个用户友好、直观且独立的数据库。 asciicast

入门指南

先决条件

  • rustc 已安装(编译)。建议使用夜间版,稳定版也应该可以工作。

  • libsodium 已安装。MSDB 依赖于 sodiumoxide,它是 libsodium 的 rust 绑定。

编译

cargo build --release

运行

命令行界面

./msdb 将启动命令行界面

执行脚本文件

./msdb -i SCRIPTNAME 将执行脚本中的命令

简单用户指南

一个图中的结构

structure

命令参考

命令脚本中的命令和 cli 中的命令遵循相同的结构

COMMAND [COMMAND ARGUMENTS]

命令脚本中的每一行都将被视为一条命令。

创建数据库 / 解密(加载)数据库 / 退出 / 登出

只有这些命令可以在不加载任何数据库的情况下执行。

  • createDATABASENAME

    通过指定名称创建数据库。

  • decryptDATABASENAME

    解密数据库并将其加载到缓存中。

  • exit

    丢弃缓存中的所有内容并停止数据库。

  • logout

    类似于 exit 但命令行界面不会退出。

创建(删除/修改)结构 / 对象 / 单元

  • newstruct STRUCTNAME

    创建一个新的结构

  • newOBJECTNAME

    创建一个新的对象(仅在您处于结构内部时工作)

  • newCELLNAME CELLTYPE CELLCONTENT

    创建一个新的单元(仅在您处于对象内部时工作)

    可用的单元类型 & 单元内容

    1. TYPE = literal; CONTENT = utf-8 中的任何内容

    2. TYPE = blob; CONTENT = 任何文件名(文件内容将写入数据库)

    3. 类型 = link;内容 = 另一个单元标识符 / 另一个字段标识符 / /另一个单元标识符 / 另一个结构标识符 / /另一个字段标识符 / /另一个单元标识符

    4. 类型 = revlink;内容 = link相同

  • alter CELLNAME CELLTYPE CELLCONTENT [WIP]

    更改单元内容/单元类型(仅当您处于对象内部时有效)

  • delCELLNAME CELLTYPE CELLCONTENT

    删除单元(仅当您处于对象内部时有效)

  • delOBJECTNAME / STRUCTNAME

    删除对象/结构。请注意,由于性能问题,对象中的单元可能无法删除。如果您愿意牺牲性能以最小化数据库存储,请使用 wipe

  • wipeOBJECTNAME

    删除对象及其相关所有单元

选择(取消选择)结构/对象/单元

  • selectSTRUCTNAME/OBJECTNAME/CELLNAME

    选择一个结构/对象/单元(当您处于数据库根目录时将选择结构,当您处于结构中时将选择对象等)

  • leave

    deselect a structure/object/cell(在结构内部取消选择结构等)

列出/查询单元

  • ls

    列出对象内部的单元/结构内部的对象/数据库内部的存储结构

  • read CELLNAME [WIP]

    输出单元内容(仅当您处于对象内部时有效)

  • pwd

    显示当前位置

写入磁盘/从磁盘读取

请注意,由于性能问题,msdb 不会自动写入和/或与磁盘同步,这意味着您在数据库中所做的一切都是临时的。您需要以下命令来手动执行。

  • sync

    将数据库更改写入磁盘

  • loadCELLNAME

    明确指定要加载到缓存中的单元。通常,由于性能较慢,对象内部的单元不会自动加载。

危险/调试

除非您绝对确定自己在做什么,否则不应使用以下命令。

  • unloadSTRUCTURENAME

    明确从缓存中删除结构。可能会提高性能。

  • setpropNAME VALUE

    创建/修改元数据属性。如果当前位置在数据库根目录,它将写入主要元数据;如果在结构中,它将写入结构元数据;如果在对象中,它将写入单元列表元数据;如果在单元中,它将写入字段元数据。

  • getprop

    查看元数据属性

脚本命令

  • outputOUTFILE

    将命令结果输出写入 OUTFILE。

特别说明:如果您正在使用命令脚本,请注意,如果您留下可选参数为空(例如,解密时的数据库密码),msdb 将提示您输入参数。

支持

您可以使用 Github Issues 来报告错误。请注意,当前应用程序仍处于早期阶段,可能存在许多错误。

许可证

本项目仅根据 GNU General Public License v3.0 许可。

依赖

~22MB
~157K SLoC