開啟教學前端

程式、設定與案件資料,分開備份與還原

本專案持久資料是JSON檔,不是SQLite或MySQL;只依這份實際實作操作。使用虛構案件;私有備份不得放進frontend、公開ZIP或AI對話。

1.先記錄,再停止自己的後端

在service-site根目錄執行node backend/manage.mjs inspect,記案件筆數、時間點、兩筆案件id、主旨、serviceId、狀態與內部備註。預設資料位置backend/.data;自訂DATA_DIR時inspect與備份都必須指定同一位置。

回到自己的伺服器終端Ctrl+C停止,確定沒有繼續寫入。--stopped是你已停止的確認,不是自動停止功能。密碼、Cookie、session與真實秘密不進備份;另行安全管理,還原時重新設定練習密碼。

2.建立新的私有備份目錄

node backend/maintenance.mjs backup --source . --out ../private-backup-L26 --stopped
node backend/maintenance.mjs verify --backup ../private-backup-L26

自訂資料位置加--data /自己真正的私有資料目錄。目的必須全新且在來源之外,工具拒絕覆寫;不要為了重跑而刪唯一備份。

備份包含program/的前端、後端及HTML指南;private-data/的cases.json與services.json;manifest.json記每檔雜湊、來源、時間、筆數及兩案比較欄位。這個manifest本身含內部資料,不可公開。

3.還原到另一個全新位置

node backend/maintenance.mjs restore --backup ../private-backup-L26 --out ../restore-L26

切換到restore-L26,依START_HERE.html設定新的練習密碼,以PORT=8781及PUBLIC_ORIGIN=http://127.0.0.1:8781啟動。把還原副本frontend/config.js的apiBase改成http://127.0.0.1:8781;只改副本,不覆寫原正常環境。

比較還原後案件數與兩案欄位,再實際登入、讀同案、送一筆帶獨特主旨的新詢問、更新狀態、保存備註;登出後匿名管理讀寫仍應401。新增測試案後筆數增加是合理變化,先比較備份時間點再進行新寫入。

4.故障:只有程式,沒有案件資料

node backend/maintenance.mjs simulate-program-only --backup ../private-backup-L26 --out ../fault-backup-L26
node backend/maintenance.mjs verify --backup ../fault-backup-L26

第二行必須失敗並指出缺少private-data檔。不能修改manifest把缺檔藏掉,不能拿空資料冒充還原成功。回到正常備份還原新位置、重驗筆數與兩案;故障副本保留作證據。

自己留下證據

版本識別、原資料位置、停止時間、備份時間與目錄、實際命令、雜湊驗證、還原位置、前後筆數、兩案比較及重啟後讀寫結果。未做的帳號、公開環境、裝置檢查保持待完成。

未做的公開部署、帳號與裝置驗收保持待測。