Something went wrong. Try again.
Monorepo for wisp.place. A static site hosting service built on top of the AT Protocol.
Something went wrong. Try again.
815 B · 21 lines
Python
12345678910111213141516171819202122#!/usr/bin/env python3"""Keep an atomic, consistent local recovery copy without stopping monitoring."""
import osimport pathlibimport shutilimport sqlite3
os.umask(0o077)root = pathlib.Path("/opt/wisp-status")backup = root / "backup"backup.mkdir(mode=0o700, exist_ok=True)with sqlite3.connect(f"file:{root}/data/gatus.db?mode=ro", uri=True) as source: with sqlite3.connect(backup / "gatus.next.db") as target: source.backup(target) if target.execute("PRAGMA integrity_check").fetchone()[0] != "ok": raise RuntimeError("backup integrity check failed")os.replace(backup / "gatus.next.db", backup / "gatus.db")for name in ("config.yaml", "secrets.env", "compose.yaml"): shutil.copy2(root / name, backup / name)print("status database and configuration backup verified")