科技 · 實用指南
在 Syncthing 版本記錄中找出目前缺少的檔案
依月份整理原路徑目前已不存在的保留版本,按時間順序檢視,並保留無法確定的結果供後續查核。

版本記錄累積得越多,就越難察覺意外不見的檔案。這時可以問一個明確的問題:哪些路徑留有指定月份的版本,卻已不在這個資料夾中?重新命名或移動過的檔案也可能出現在結果裡,因為它的舊路徑如今已不存在。
以下輔助程式會比對所選的本機 Syncthing 資料夾,以及該執行個體傳回的版本,產生一份獨立的 HTML 報告。報告會將缺少的路徑與無法完成檢查的路徑分開列出,依封存時間排列其保留版本,再由你決定是否還原。
先確認這正是你需要的版本記錄
請使用已持有相關版本的裝置。Syncthing 的版本管理,是針對每部裝置上的各個資料夾分別設定。它會封存因其他裝置傳入變更而受影響的檔案,不會記錄在同一部裝置本機所做的編輯或刪除。
保留方式也會影響結果。依照選用的策略,版本可能已過期、經過精簡而減少,或已被其他版本取代。現在才啟用版本管理,無法重建那些較早的副本。這次檢查只涵蓋所選執行個體仍會傳回的項目,因此,空白報告不能證明從未刪除過任何檔案。
這裡的月份是指版本進入封存的時間。某個檔案可能在先前編輯後留下封存版本,過了很久才不見。無論是封存時間,還是當時的修改時間,都無法指出目前這個路徑何時消失。
核對執行個體、資料夾 ID 與現用資料夾
請在與所查詢的 Syncthing 執行個體相同的電腦及檔案系統環境中執行輔助程式。在該執行個體的網頁介面中,找出資料夾 ID 和設定的資料夾路徑。ID 不一定與畫面顯示的資料夾標籤相同。請將現用資料夾傳入 --root,不要傳入它的 .stversions 目錄。
請確認預期使用的儲存空間已掛載且可讀取,包括資料夾內另行掛載的儲存空間。從每個相關位置各開啟一個你熟悉的檔案。磁碟中斷連線後,原地可能仍留有空的掛載點目錄;僅憑路徑字串相符,不能證明預期的儲存空間確實存在。
輔助程式要求使用相符的絕對根路徑,以及 Syncthing 的 basic 檔案系統。根目錄及其上層各級目錄都必須是真正的目錄,不能是符號連結。如果設定的路徑使用 ~,請使用與 Syncthing 相同的帳號及家目錄對應關係。容器內的路徑與主機端的綁定掛載路徑不能互換;如果無法比對成功,請修正執行環境或路徑。
請在所有同步資料夾之外選擇工作目錄,並在既有目錄中選用新的輸出檔名。輔助程式只會檢查指定的根目錄,不會檢查你同步的每一個資料夾。請保持 Syncthing 運作以提供 API,並等候進行中的編輯、移動及同步作業穩定下來。結果反映的是執行期間的觀察,並非同一瞬間取得的原子快照。
儲存並檢查輔助程式
請在使用一般 basic 檔案系統的 POSIX 系統上,使用 Python 3.12 或更新版本。在純文字編輯器中,將下方完整的一行儲存為 unpack_audit.py,放在你選定的工作目錄。這一行包含輔助程式原始碼及完整性檢查;不要將這行 Python 程式碼直接貼到 Bash。執行前,請先用 python3 --version 檢查版本;若 Python 版本較舊,程式會在處理資料夾或 API 之前拒絕執行。
import base64,zlib,hashlib,sys; from pathlib import Path; data=zlib.decompress(base64.b64decode('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',validate=True)); f=Path('audit.py').open('xb') if hashlib.sha256(data).hexdigest()=='71717f0699b0ab624944f1d8746eafff0d34f08f3cde079e98278112ed51d139' else sys.exit('SHA-256 mismatch; no helper file written'); f.write(data); f.close(); print('Created audit.py for inspection; it has not been run.')
在該目錄中執行以下命令,產生可閱讀的輔助程式:
python3 unpack_audit.py
解包程式會驗證 SHA-256,且只有在同名檔案尚不存在時才建立 audit.py。它不會執行重建後的輔助程式。這個 16,912 位元組的 audit.py,其 SHA-256 必須是 71717f0699b0ab624944f1d8746eafff0d34f08f3cde079e98278112ed51d139。在提供 API 金鑰之前,請先用文字編輯器開啟檢查。
檢查程式會讀取資料夾設定與保留版本,接著檢查磁碟上的目前路徑。新產生的 HTML 檔包含完整的報告 JSON,不需要網路資源或可執行的 JavaScript。它不會還原檔案,也不會變更同步內容。如果報告中的路徑透露個人資訊,請妥善保管,不要公開。
設定 API 金鑰,避免寫入命令歷程
從這個本機執行個體的 GUI 設定中複製 API 金鑰。它是存取 API 的憑證,請勿放進命令本身、螢幕截圖或報告中。在 Bash 中,透過下方不會顯示輸入內容的提示輸入金鑰;這些命令只會將它存入目前 shell 的環境變數。
read -r -s -p 'Syncthing API key: ' SYNCTHING_API_KEY && export SYNCTHING_API_KEY
預設連線位址是 http://127.0.0.1:8384。如果使用不同的本機連接埠或可信任的 HTTPS 位址,請加上 --url,並提供該執行個體的直接位址。含有憑證或路徑前綴的網址會被拒絕;程式不會跟隨重新導向,也不會使用環境變數設定的代理伺服器。請確保 API 與受檢查的資料夾位於同一部電腦。
檢查一個 UTC 曆月
請將範例中的資料夾 ID 與絕對路徑換成自己的設定,並選擇新的輸出檔名。此範例查詢 2026 年 9 月,納入封存時間在 2026-09-01T00:00:00Z 或之後,且早於 2026-10-01T00:00:00Z 的版本。
python3 audit.py --folder 'YOUR-FOLDER-ID' --root '/absolute/path/to/Sync' --month 2026-09 --output '/absolute/path/outside/Sync/report-2026-09.html'
帶有時區偏移量的時間戳記會先轉換為 UTC,再進行比較。例如,2026-09-01T01:00:00+01:00 恰好就是本報告中 9 月的起始時刻。因此,接近月份邊界時,本地曆日可能不同;決定要檢視哪個月份時,請以顯示的 UTC 區間為準。
成功時,命令會以結束代碼 0 結束,並印出一則包含 status: written 和 counts 的簡短 JSON 訊息。請在瀏覽器中從本機開啟新產生的 HTML 檔。發生錯誤不等於結果為空。使用下列命令,從目前 shell 中移除憑證;若要再次嘗試,請重新透過隱藏輸入提示輸入金鑰。
unset SYNCTHING_API_KEY

分別檢視缺少的路徑與無法確定的結果
先核對報告中的資料夾與月份,再依時間順序檢視缺少的項目。每個項目描述的是一個封存版本,其原始相對路徑在檢查時不存在。在認定是非預期的遺失之前,請先在現用資料夾中搜尋是否有重新命名或移動後的副本。
表格會分別計算不重複的路徑數與保留版本數。同一個缺少的路徑出現兩列,代表一個路徑、兩個版本,並不代表兩次刪除。Complete report JSON 也包含目前存在的路徑、原始 versionTime 與 modTime 值、轉換後的 UTC 時間、size、current_path_state 及 state_reason。
也請逐一檢視所有 unknown 項目。無法讀取的路徑,或不受支援的上層路徑解析情況,都不能貿然判定為缺少。請解決指出的存取或路徑問題,再次執行並產生新的報告。如果最末端路徑本身有符號連結,即使連結目標無法使用,也會視為 present;這不代表已確認目標的內容。
若缺少項目為零,但仍有 unknown 項目,代表那些路徑的檢查仍未有定論。若兩者皆為零,表示這次成功完成的檢查,在所選時間範圍內傳回的版本中,沒有發現缺少的路徑。這個結果無法說明已過期的版本記錄、其他裝置上的版本,或從未出現在這份封存記錄中的缺少檔案。
先處理失敗原因,再下結論
如果發生連線或驗證錯誤,請確認本機執行個體正在運作、GUI 位址正確,且金鑰屬於該執行個體。如果根目錄不相符,請一併核對資料夾 ID 與設定的路徑。如果磁碟無法使用或目錄無法讀取,請先恢復存取能力;不要只為了讓檢查繼續,就建立一個空目錄來代替。
回應格式錯誤、不受支援的路徑或時間戳記,以及非預期的資料夾設定,都會讓檢查停止,不會產生空白清單。API 或根目錄錯誤會以結束代碼 1 結束,並提供具體錯誤;命令語法錯誤則以結束代碼 2 結束。請先解決錯誤,再選擇新的輸出檔名。既有報告會予以保留。如果寫入失敗,可能會留下未完成的新檔案:再次嘗試前,請檢查或移除該檔案,或改用其他檔名。
如果檔案在執行期間發生變動,請等作業穩定後重新檢查。對任何可疑項目採取行動之前,請立即再確認一次。先前儲存的報告無法告訴你,檔案後來是否已經回到原位。
只還原你已確認選用的版本
檢查缺少的路徑,並確認需要某一份保留副本後,請在 Syncthing 中開啟同一個資料夾的 Restore Versions。使用 Filter by name 和 Filter by date 找到項目,再核對路徑及選取的版本,然後才按下 Restore。請將實際時間戳記與報告比對;不要假設 GUI 顯示的日期採用與報告相同的 UTC 月份邊界。
請在預期的現用路徑檢查還原後的檔案,並查看 Syncthing 是否顯示任何還原錯誤。還原較舊版本前,也要考量現有內容。HTML 檢查報告不會選取任何待還原項目,也無法判定哪一份封存副本才適合你的工作需求。
Restorething 已經具備檢查原路徑是否存在,以及依日期模擬還原的功能,這些既有成果值得註明。本指南另外提供聚焦的檢視流程:涵蓋單一 UTC 月份內所有傳回的版本、檢查目前缺少的路徑、依時間順序整理成 HTML,並明確保留無法確定的結果。在審慎選定版本後,仍可使用原生還原功能。
已完成哪些檢查
本文刊載的輔助程式已在 Python 3.12.14/Linux 環境中,使用本機 HTTP 測試伺服器及實際的暫存檔案,通過 28 次命令列執行與 29 組斷言。檢查涵蓋從 API 到 HTML 的流程、UTC 邊界與奈秒排序、不重複路徑數與版本數的區別、檔名跳脫處理、missing/present/unknown 路徑,以及不能被當成空白結果的失敗情況。解包程式另通過三項獨立的子行程案例:精確重建但不執行、拒絕損毀資料,以及保留既有的輔助程式。
未測試實際運作中的 Syncthing 執行個體、原生還原 GUI、Windows 或 macOS。權限拒絕是透過注入方式模擬,並未用作業系統的存取規則進行測試。這些檢查無法證明程式能防範同時發生的檔案系統或掛載變更。報告無法判斷路徑為何消失、區分移動與刪除,或復原已過期的版本。