"""Резервная копия файла базы перед пакетом с записями в Jira: VACUUM INTO даёт согласованный снимок при WAL.""" from datetime import datetime from pathlib import Path def make_backup(conn, backups_dir: Path, label: str, keep: int = 30) -> Path: backups_dir = Path(backups_dir) backups_dir.mkdir(parents=True, exist_ok=True) target = backups_dir / f"{datetime.now():%Y%m%d-%H%M%S-%f}-{label}.sqlite" conn.execute("VACUUM INTO ?", (str(target),)) files = sorted(backups_dir.glob("*.sqlite")) if keep > 0: for old in files[:-keep]: old.unlink() return target