即使保存过程中意外关闭,也能确保文件不损坏的方法
如果保存时笔记本电脑突然关机,文档会怎么样?在 mote 中,答案是“要么处于保存前,要么处于保存后,只有这两种情况”。

保存文件的瞬间,如果电源断了,会怎么样?
通常,文件可能只保存了一半。对于一款要长期使用的编辑器,不应该发生这种事。因此,即使保存失败,mote 也会保护原始文件。
首先,它会在文档所在的文件夹中创建临时文件。写入全部内容后,将其同步到磁盘,并复制原始文件的权限。准备完成后,再把临时文件改成原来的名称。
改名操作会一次性完成。即使中途断电,留下的也只会是旧文件或新文件。不会留下只保存了一半的文件。
权限也会原样保留。因为保存是在修改内容,而不是改变谁可以读取文件。
文档的字节也不会被擅自改动。无论是 CRLF 换行符、BOM、混合使用的换行符,还是末尾换行符的有无,都会原样保存。如果打开文件后没有修改任何内容,那么再次保存时也不应该有一个字节发生变化。mote 每次发布时都会测试这一原则。
不会切断链接
即使是安全的保存方式,也不能原封不动地用于所有文件。
如果像普通文件一样替换符号链接,链接就会消失。编辑后的内容也不会反映到链接所指向的文档中。mote 会沿着链接找到并保存实际文件。链接会原样保留。
硬链接是由多个名称指向同一个文件。如果只把其中一个名称换成新文件,连接就会断开。因此,对于存在硬链接的文件,会直接在原位置覆盖写入。虽然放弃了原子性,但会通过保存前一刻创建的备份来降低风险。
不保存无法读取的文件
mote 会在保存之前先读取磁盘上的文件。
如果文件不存在,就新建文件。如果能够读取,就在备份后保存。如果文件存在但无法读取,则停止保存。
不受支持的旧编码文档或文件夹,以及没有权限访问的文件,都属于这种情况。如果把无法读取的文件显示成空白文档后再覆盖写入,连用户未能看到的内容也可能全部消失。
无法读取,也就无法创建备份。因此,不保存是保护文件的唯一方法。
不在文档旁边创建备份和草稿
保存之前的文件会备份到状态文件夹中。名称中包含文档名和保存时间。
文档名称.2026-09-07-153914.md
每份文档会保留最近的 20 个备份,并从最旧的开始删除。只看文件名就能知道备份是什么时候创建的,也可以直接使用平时使用的编辑器打开。
从未保存过的文档没有可以备份的原始文件。取而代之的是创建草稿。停止编辑 1 秒后,会在状态文件夹中保存一份副本。名称中包含时间和文档的第一个标题。
保存文件或用户丢弃文档时,草稿也会被删除。应用退出时也是如此。如果有保存位置,就保存为文件;如果没有,就保留为草稿。
因崩溃而残留的临时文件,也会在下次打开文档时清理。不过,如果创建该文件的进程仍在运行,就不会动它。因为另一个窗口可能正在保存。
/tmp 或缓存文件夹中的文档可能会在重启时消失。打开这类文档时,会显示提示,建议将其保存到其他位置。
除此之外,不会在文档文件夹中创建任何辅助文件。设置、备份、草稿以及最后打开的文件信息,全都保存在用户主目录下的状态文件夹中。没有加入需要另行保存 Markdown 无法承载的状态的功能。

当无法通过撤销恢复时,就需要备份。比如重新打开应用之后,或是过了很久才发现保存有误时。打开备份文件,就能原样查看每次保存覆盖前一刻的文档。
只有在用户允许时才会触碰文件和网络
自动保存必须在设置中由用户亲自开启。也可以选择等待多久后保存。
开启后,会在停止编辑并经过设定的时间后保存。保存方式与手动保存相同。先进行备份,创建临时文件,然后与原始文件交换。自动保存并不是一项独立的保存功能,而是代替用户启动同一次保存操作的计时器。它只在进行编辑时运行。

检查更新也必须由用户亲自开启。关闭时,mote 不会使用网络。
开启后,会在应用启动后于后台检查一次。“每天一次”并不是由应用计时,而是通过状态文件夹中的时间戳文件来保证。开启应用期间不会再次检查,也没有持续运行的计时器。
即使有新版本,也不会立即下载。只会在屏幕右下角显示通知。在用户点击之前,不会下载、安装或重启。
应用能够直接更新的格式只有 AppImage。因为只需替换一个文件即可。如果是通过 apt 或 Flatpak 安装,则只会提示适当的命令。命令由用户亲自执行。
检查更新时,只会发送平台和发布渠道信息。不会发送能够识别用户身份的信息,也不会发送当前打开的文档信息。
安全的保存,并不是永远都会成功的保存。而是即使失败,也不会丢失内容的保存。