18 lines
688 B
Python
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}')
|