功能價格文件部落格
取得 mote
← 部落格
工程·2026年9月3日·閱讀時間 5 分鐘

即使儲存途中關閉,也能避免檔案損毀的方法

如果在儲存的瞬間筆記型電腦關機,文件會怎麼樣?在 mote 中,答案是「要麼是儲存前,要麼是儲存後,兩者之一」。

m
mote
狀態資料夾中的備份清單。儲存前一刻的檔案會以文件名稱和易於辨識的時間保留下來,文件資料夾中則不會產生任何東西。
狀態資料夾中的備份清單。儲存前一刻的檔案會以文件名稱和易於辨識的時間保留下來,文件資料夾中則不會產生任何東西。

在儲存檔案的瞬間,如果電源中斷,會怎麼樣?

一般來說,檔案可能只儲存了一半。長期使用的編輯器不該發生這種事。因此,即使儲存失敗,mote 也會保護原始檔案。

首先會在與文件相同的資料夾中建立暫存檔。寫入全部內容後,將其同步至磁碟,並複製原始檔案的權限。準備完成後,再把暫存檔重新命名為原本的名稱。

重新命名的操作會一次完成。即使途中電源中斷,留下的也只會是舊檔案或新檔案。不會留下只儲存了一半的檔案。

權限也會維持不變。因為儲存是變更內容,而不是變更誰可以讀取檔案。

文件的位元組也不會被改動。CRLF 換行、BOM、混合使用的換行,以及最後一行是否有換行,都會原樣儲存。如果開啟檔案後什麼都沒有修改,那麼即使再次儲存,也不應有任何一個位元組發生變化。mote 每次發布時都會測試這項原則。

不會讓連結中斷

即使是安全的儲存方式,也不能原封不動地套用到所有檔案。

如果像一般檔案一樣替換符號連結,連結就會消失。編輯的內容也不會反映到連結原本指向的文件。mote 會沿著連結找到並儲存實際檔案。連結則會原樣保留。

硬連結是由多個名稱指向同一個檔案。如果只把其中一個名稱換成新檔案,連結關係就會中斷。因此,有硬連結的檔案會在原位置覆寫。雖然放棄了原子性,但會透過儲存前一刻建立的備份來降低風險。

不會儲存無法讀取的檔案

mote 在儲存前會先讀取磁碟上的檔案。

如果檔案不存在,就建立新檔案。如果能夠讀取,就先備份再儲存。如果檔案存在但無法讀取,便會停止儲存。

不支援其編碼的舊文件或資料夾,以及沒有權限的檔案,都屬於這種情況。如果把無法讀取的檔案當成空白文件顯示後再覆寫,連使用者未能看見的內容也可能全部消失。

無法讀取時,也無法建立備份。因此,不進行儲存是保護檔案的唯一方法。

不會在文件旁建立備份與草稿

儲存前的檔案會備份到狀態資料夾。名稱中會包含文件名稱與儲存時間。

文件名稱.2026-09-07-153914.md

每份文件會保留最近的 20 個備份,並從最舊的開始刪除。只看檔名就能知道備份是在何時建立,也可以直接用平常使用的編輯器開啟。

從未儲存過的文件沒有可供備份的原始檔。這時會改為建立草稿。停止編輯 1 秒後,便會在狀態資料夾中儲存一份副本。名稱中會包含時間與文件的第一個標題。

儲存檔案或使用者捨棄文件時,草稿也會被刪除。應用程式結束時也是如此。如果有儲存位置,就儲存為檔案;如果沒有,就保留為草稿。

因當機而留下的暫存檔,也會在下次開啟文件時清理。不過,如果建立該檔案的程序仍在執行,就不會動它。因為其他視窗可能正在進行儲存。

/tmp 或快取資料夾中的文件可能會在重新啟動時消失。開啟這類文件時,會顯示提示,請使用者將其儲存到其他位置。

除此之外,不會在文件資料夾中建立任何輔助檔案。設定、備份、草稿,以及最後開啟的檔案資訊,全都儲存在使用者家目錄的狀態資料夾中。沒有加入任何需要另行儲存無法包含在 Markdown 中之狀態的功能。

開啟暫存資料夾中的文件時出現的橫幅——在「重新啟動後可能會消失,請儲存到其他位置」的文字旁,有另存新檔與繼續編輯按鈕
開啟暫存資料夾中的文件時出現的橫幅——在「重新啟動後可能會消失,請儲存到其他位置」的文字旁,有另存新檔與繼續編輯按鈕

當無法透過復原回到原本狀態時,就會需要備份。例如重新開啟應用程式之後,或過了很久才發現儲存錯誤時。開啟備份檔案,即可原樣查看每次儲存覆寫前一刻的文件。

只有在使用者允許時,才會存取檔案與網路

必須由使用者在設定中自行開啟自動儲存。也可以選擇儲存前的等待時間。

開啟後,停止編輯並經過設定的時間,就會進行儲存。儲存方式與手動儲存相同。會先備份、建立暫存檔,再替換原始檔案。自動儲存並不是另一套儲存功能,而是一個代替使用者啟動相同儲存流程的計時器。只有在進行編輯時才會運作。

設定卡片的一般分頁——有自動儲存開關,其下方是自動儲存延遲時間(秒)1,最底下一列則有啟動時檢查更新開關。此畫面中兩者都處於關閉狀態
設定卡片的一般分頁——有自動儲存開關,其下方是自動儲存延遲時間(秒)1,最底下一列則有啟動時檢查更新開關。此畫面中兩者都處於關閉狀態

檢查更新也必須自行開啟。關閉時,mote 不會使用網路。

開啟後,會在應用程式啟動後於背景檢查一次。「每天一次」不是由應用程式計時,而是透過狀態資料夾中的時間戳記檔案來維持。應用程式持續開啟期間不會再次檢查,也沒有持續運作的計時器。

即使有新版本,也不會立即下載。只會在畫面右下角顯示通知。在使用者點擊之前,不會下載、不會安裝,也不會重新啟動。

應用程式能夠自行更新的格式只有 AppImage。因為只要替換一個檔案即可完成。如果是透過 apt 或 Flatpak 安裝,則只會提示適當的命令。命令要由使用者自行執行。

檢查更新時,只會傳送平台與發布管道。不會傳送可識別使用者身分的資訊,或目前開啟的文件資訊。

安全的儲存並不是永遠都會成功的儲存,而是即使失敗也不會遺失資料的儲存。

← 較舊以檔案為真相來源,只儲存我實際輸入的位元組較新 →為了避免 git checkout 後文件變空,我們不看時間,而是比較位元組
透過 RSS 持續關注。
只留下文字。
繁體中文
© 2026 mote