原因及答案
小书匠是个本地优先,去中心化,支持自定义同步的笔记知识管理系统,对于数据添加,修改都有一套不同的逻辑,特别是对文章的删除都比较谨慎,所以操作步骤比较麻烦些.
小书匠的数据存储与 git 版本管理软件类似,提供了版本管理,一般删除只是逻辑删除,想要真正删除,需要在回站里清空数据后,再到数据管理里,压缩下数据,才能真正物理删除.

小书匠存储机制
小书匠为了实现版本管理和自定义同步功能,采用了与 Git 类似的存储机制.同时为了减轻普通用户操作 Git 难度,针对文章管理方面,做了一些调整,提高用户的使用体验.
了解一下小书匠的存储机制,有利于想要更深入使用小书匠的功能,比如自定义数据同步.
Git 是一个分布式版本控制系统,用于跟踪和管理文件的变化。它最初由 Linus Torvalds 在 2005 年为 Linux 内核开发而设计。Git 的主要功能包括:
- 版本控制:记录文件的历史变更,可以回退到任意历史版本。
- 协作开发:多人可以同时在同一个项目上工作,并通过合并(merge)来整合更改。
- 分支管理:支持创建分支(branch),便于并行开发和实验性功能开发。
- 分布式:每个开发者都有完整的仓库副本,不依赖中央服务器。
Git 的核心是一个内容寻址文件系统,所有文件的历史版本都被存储在
.git/objects
目录中(称为“对象数据库”)。即使你删除了工作目录中的文件,Git 仍然保留这些文件的历史版本,以便你可以回退到之前的提交。
文章"删除"的不同阶段
删除文章
用户通过文章列表删除小书匠文章时,默认是放到回收站,这时候,文章并没有真正删除,只是添加了一个标识,表明该文章放到了回收站里.其他文章对该文章的引用,依然有效.如果您配置了自定义数据同步功能,该被删除的文章正文内容还是会同步到其他服务器上.
这时候文章的删除,对普通用户来说,只是逻辑删除,用户还可以到回收站里,取消删除,来达到还原被删除的文章
清空回收站
在回收站,把文章清空后,对普通用户来说,这是物理删除,但对小书匠应用来说,还是逻辑删除,普通用户在这台电脑上已经没办法恢复清空的文章了,但小书匠为了实现版本管理,数据同步功能,在真正的底层存储里,还会保留这些数据,直到用户执行数据库压缩功能.
压缩数据库
当执行数据库压缩时,小书匠会把用户物理删除的数据,在存储层面进行删除,类似于 Git 命令里的 git gc
, 清理未被引用的对象,及不需要的历史记录.