Files
simkeep/scripts/backup.py
T
2026-10-06 15:49:27 +08:00

18 lines
688 B
Python

import os
import sqlite3
from datetime import datetime, timezone
from pathlib import Path
root=Path(__file__).resolve().parent.parent
source=Path(os.getenv('SIMKEEP_DB',str(root/'data'/'simkeep.db'))).resolve()
if not source.is_file():
raise SystemExit('数据库尚未创建')
directory=source.parent/'backups'
directory.mkdir(mode=0o700,exist_ok=True)
target=directory/f"simkeep-{datetime.now(timezone.utc).strftime('%Y%m%d-%H%M%S-%f')}.db"
fd=os.open(target,os.O_WRONLY|os.O_CREAT|os.O_EXCL,0o600)
os.close(fd)
with sqlite3.connect(f'{source.as_uri()}?mode=ro',uri=True) as original,sqlite3.connect(target) as backup:
original.backup(backup)
print(f'备份完成:{target}')