feat: verify scheduled backups
This commit is contained in:
+18
-6
@@ -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/<時間>
|
||||
```
|
||||
|
||||
請始終一起還原資料庫與附件,否則貼文中的附件連結可能失效。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user