備份與還原 - MiCat-S/Mi302 GitHub Wiki
Mi302 每天自動備份資料庫和設定檔。這一頁說明備份了什麼、放在哪裡、怎麼手動備份和下載,以及怎麼還原。
備份了什麼
每次備份產生兩個檔案,檔名裡的時間相同:
| 檔案 | 內容 |
|---|---|
mi302-年月日-時分秒.db |
資料庫 library.db 的完整複本 |
mi302-年月日-時分秒.yaml |
設定檔 config.yaml 的複本 |
例如 mi302-20260927-031500.db 和 mi302-20260927-031500.yaml。
資料庫裡有:
- 使用者帳號、密碼雜湊,以及播放器的登入狀態。
- 觀看紀錄、播放進度、我的最愛。
- 115 登入狀態:cookie 和 115 開放平台的 token。
- 網頁上建立的 API 金鑰。
- 115 同步的對照表和進度。
- 媒體資訊、演職人員和他們的中文名、學到的片頭片尾。
- 媒體庫的項目,以及伺服器 ID(播放器靠它認得這台伺服器)。
不在備份裡的:
- 上傳的媒體庫封面(
data/images/)。 - 日誌(
data/logs/)。 - 媒體資料夾裡的東西:strm、nfo、海報、字幕、
X-mediainfo.json。strm 可以用全量同步重新產生,刮削出來的 nfo 和海報要自己另外備份。
放在哪裡
備份放在資料資料夾(server.data_dir)底下的 backups:
| 安裝方式 | 位置 |
|---|---|
| 一鍵安裝(Linux) | /opt/mi302/config/data/backups |
| 一鍵安裝(macOS) | ~/Mi302/config/data/backups |
| 手動用 Python | 啟動 Mi302 的資料夾底下的 data/backups |
實際位置顯示在「設定」→「備份」卡片上。
自動備份
- Mi302 啟動後先檢查一次,之後每小時檢查一次,距離上次備份滿 24 小時就備份一份。所以第一次啟動後馬上就有第一份。
- 備份時不必停止 Mi302。它用 SQLite 的線上備份,還沒寫回主檔的資料也包含在內。
- 備份出來的資料庫如果缺少必要的資料表,就不保存,免得用壞掉的備份把舊的好備份擠掉。
- 自動備份失敗時,日誌裡會記「自動備份失敗」和原因。
保留幾份
「設定」→「備份」的「保留幾份」(server.backup_keep)預設 7,可以填 0 到 90,改完按頁面下方的「儲存設定」。
- 每次備份完,只留最新的幾份,較舊的
.db和.yaml一起刪掉。改小之後,多出來的在下一次備份時刪除。 - 填 0 就不自動備份。仍然可以手動備份,手動的備份留最新 7 份。
手動備份與下載
在「設定」→「備份」卡片:
- 按「立即備份」馬上備份一份,完成後顯示「已備份:」和檔名。
- 下面的清單列出每份備份的時間、檔名、大小,有設定檔的標「含設定檔」。
- 按下載圖示下載資料庫;按「yaml」下載同一時間的設定檔。
只有管理員登入後才能備份和下載,API 金鑰不行。也可以直接從上面的資料夾複製檔案。
還原
- 停止 Mi302。
- 把
data資料夾裡的library.db換成要還原的.db,並刪掉library.db-wal、library.db-shm。 - 需要的話,把同一時間的
.yaml換成config.yaml。 - 啟動 Mi302。
Linux 上用一鍵安裝的例子(把檔名換成你要還原的那份):
mi302 stop
cd /opt/mi302/config
mkdir -p data/before-restore
mv data/library.db* data/before-restore/ # 現在的資料庫先移到旁邊,也順便移走 -wal、-shm
cp data/backups/mi302-20260927-031500.db data/library.db
cp data/backups/mi302-20260927-031500.yaml config.yaml # 要連設定一起還原時才做
mi302 start
- macOS 用一鍵安裝的,把
/opt/mi302/config換成~/Mi302/config。 - 手動用 Python 的,先停掉 Mi302(在執行的終端機按 Ctrl+C,或
sudo systemctl stop mi302),data和config.yaml在你啟動 Mi302 的資料夾。 - 這些檔案屬於執行 Mi302 的帳號。請用那個帳號操作;用
sudo複製的話,之後要把擁有者改回來,例如sudo chown 帳號 data/library.db config.yaml,不然 Mi302 寫不進去。 - 資料庫、備份和設定檔只有執行 Mi302 的帳號讀得到(權限 600):裡面有 115 的登入狀態和密碼。別的帳號要讀,自己用
sudo。
還原之後:
- 帳號、密碼、觀看紀錄和 115 登入都回到備份時的狀態,備份之後的觀看紀錄會不見。
- 如果備份裡的 115 登入已經失效(例如被同類型的其他登入踢掉),重新掃碼登入。
- 115 同步從備份時的進度繼續:下一次增量同步讀那之後的生活事件;隔太久、事件已經超出 115 保留的範圍時,自動改跑全量。
- 還原設定檔的話,媒體庫、同步任務和其他設定也回到備份時的樣子。
安全
備份裡有敏感資料,請當成密碼保管,不要傳給別人或放到公開的地方:
.db裡有 115 的登入 cookie,拿到的人可以用你的 115 帳號。另外還有密碼雜湊、播放器的登入 token 和 API 金鑰。.yaml是設定檔的複本,可能有明碼:users底下的密碼、MoviePilot 的密碼和 API 令牌、p115.cookies、api_keys。
下載到自己電腦的備份用完就刪掉。設定檔裡哪些資料是明碼,見設定檔參考。