【问题记录】用坚果云同步小书匠数据库发生冲突
Contents
问题
我一直使用小书匠这款软件来编辑Markdown
文档,并且使用坚果云同步它的数据文件。在小书匠的关于窗口里边可以看到数据文件的具体路径。
我在坚果云里同步了里图中的C:UsersqlbosAppDataLocalstorywriter
目录。事实证明只要将这个目录放到另一台电脑的相同目录(仅用户名不同),就可以把一台电脑上的所有markdown
文档文件以及小书匠软件的设置都完美的迁移到另一台电脑。
小书匠这个软件是通过其内置的数据库文件来进行数据存储的,它的优点就是可以按照上述方法完整的迁移整个环境;
但是缺点也很明显,就是这些数据库文件无法被读取,无法从中取出单独的文件进行保存,当数据库文件出现问题时,无法像其他文件一样进行手动修改。
昨天在实验室的电脑打开小书匠软件,发现左侧边栏的一些写好的文档不见了,我就意识到可能是数据库文件出现了问题。晚上回到寝室,我打开寝室的电脑,发现我前一次使用电脑后没有关闭小书匠软件,就直接将电脑休眠了,可能导致了数据库文件被锁定,这期间我又使用过实验室电脑的小书匠,那么相当于出现了多端同时修改同一个文件的问题,类似于Git
当中的代码冲突。

解决方法
关闭坚果云同步
非常重要!!第一步应该是关闭同步,将两台电脑的坚果云都关闭,或者是直接断网。 如果这时没有关闭同步,会造成两边都出现一堆冲突文件。如果没有同步的话,某一端有可能还没来得及同步,这里的文件可能还是未发生冲突的,直接拷贝出来说不定就可以解决问题。
解决冲突/回退历史版本
参考了如下网页
这个链接给出的方法是手动处理冲突,大概意思就是跟git
处理冲突的方法一样。不适用,因为这个数据库文件根本没法读写,而且细碎杂乱,不知道哪个文件存的是什么。所以不可能进行手动处理,而且标记为-冲突
的文件和没有标记的文件,已经彻底混乱了,也不知道哪一个是正确的文件。
想了一下,唯一的办法就是把整个文件夹回退到之前的正常状态,之前OneDrive
出现冲突时也是这么解决的。回忆了一下时间点,其实最近三四天都没有产生新的文件,最后一次的新文件应该是9月5日写好的,那么其实我只需要回退到9月6日的状态即可。
按照上述链接的方法进行操作,也就是把9月5日之后的所有操作历史撤销。
具体操作方法如上图,一个小技巧是使用Shift
可以连续选择,不断往下翻,把日期是9月6日及9月6日以后的操作历史全部撤销。
这个时候不能打开坚果云(重要!),因为此时我们只是修复了云端的文件,但是本地的文件还是错误的,如果这时打开坚果云,会把这些错误文件上传到云,覆盖云端的正确文件,那么回退的操作就没用了。
正确的方法是: 不打开坚果云,而是从网页端直接把整个User
目录下载下来,然后放置到原本的位置。
重新打开小书匠,结果和我预期相同,我的文档又回来了!
总结
一些经验总结
- 文件发生冲突后,第一件事是关闭同步,关闭同步,关闭同步。然后到另一台同步的电脑去看,说不定那里的文件版本是前一段时间的正确版本,如果这样的话,可以直接把这个正确版本文件拷贝出来。如果同步了,那么冲突的文件就会同步到所有电脑上,就只可以在网页端找回历史版本了。
- 如果本地的文件都出现了问题,则在网页端的操作历史一栏批量撤销历史操作,回退到一个文件版本正确的时间点。
- 小书匠的数据库文件并不适合使用坚果云同步。之后准备取消对数据库文件的同步。
- 很容易发生冲突。如果其中一台电脑忘记关闭小书匠就休眠,那么这些文件就被锁定。这时在另一台电脑使用小书匠,必定发生冲突。
- 冲突不好解决。如果是word文档之类的文件,可以按照官网所说的,自己手动编辑,恢复到想要的正确状态。但是这个数据库文件是无法读写,无法编辑的,出现冲突后,唯一的办法就是把整个目录回退。
- 小书匠的文件必须另存到本地,同时备份到github之类的地方。小书匠默认是不会保存
md
文件的,所有数据都是存在自带的数据库里边。这其实很不科学,一旦数据库文件出现错误,是不可逆的。所以必须养成习惯,每次写完文档,将md
文件保存到本地目录,坚果云同步也只需要同步保存md
文件的目录即可。最好再使用git
进行管理,定期上传到github
私有仓库,以防万一。