feat: verify scheduled backups

This commit is contained in:
2026-07-19 05:48:12 +08:00
parent 44cd7a48ee
commit 808deaba97
5 changed files with 62 additions and 7 deletions
+18 -6
View File
@@ -13,15 +13,27 @@
- `hub.db`:由正在執行的 SQLite 資料庫建立的一致性備份。
- `uploads.tar.gz`Hub 本機上傳的附件。
`data/backups/` 已由 Git 排除。請將備份複製到另一台主機或加密的雲端儲存;只留在同一台機器不算完整備份
每次備份都會執行 SQLite `integrity_check`、驗證附件壓縮檔,並在 `SHA256SUMS` 記錄雜湊。`data/backups/` 已由 Git 排除。
可設定保留與異地複製(例如掛載的 NAS、加密磁碟或 rclone 掛載點):
```bash
BACKUP_RETENTION_DAYS=30 BACKUP_OFFSITE_DIR=/mnt/nas/mebbling ./scripts/backup.sh
```
在 WSL 主機安裝每日 03:15 排程:
```bash
./scripts/install-backup-cron.sh
```
## 還原
1. 停止服務:`docker compose down`
2. 備份目前的 `data/hub.db``public/uploads/`,以免操作失誤。
3. 將選定備份中的 `hub.db` 覆蓋為 `data/hub.db`
4. 解開附件:`tar -xzf data/backups/<時間>/uploads.tar.gz -C public`
5. 重新啟動:`docker compose up -d`
先在非正式環境執行還原演練;腳本會驗證雜湊、停止服務、保留原本資料庫副本、還原資料庫與附件後重新啟動:
```bash
CONFIRM_RESTORE=YES ./scripts/restore.sh data/backups/<時間>
```
請始終一起還原資料庫與附件,否則貼文中的附件連結可能失效。