ОПЕРАЦИЯ · РЕЗЕРВИРОВАНИЕ
Сделать резервную копию SQLite
Снять согласованную копию через SQLite Backup API.
Предварительные условия
Python 3 со sqlite3; example.sqlite; backup.sqlite не существует; исходная база доступна для чтения.
Команда
python3 - <<'PY'
import sqlite3
from pathlib import Path
p = Path("example.sqlite").resolve()
with open("backup.sqlite", "xb"): pass
src = sqlite3.connect(p.as_uri() + "?mode=ro", uri=True)
dst = sqlite3.connect("backup.sqlite")
try:
src.backup(dst, pages=128)
print(dst.execute("PRAGMA integrity_check").fetchone()[0])
finally:
dst.close(); src.close()
PYОбъяснение аргументов
mode=ro не создаёт отсутствующий источник; xb резервирует новое имя. Backup API учитывает WAL.
Ожидаемый результат
Самостоятельная backup.sqlite; при сбое результат не считайте готовым.
Проверка
Ожидается ok; дополнительно сравните контрольные запросы, допустив изменения живого источника.
Распространённые ошибки
- Простое копирование основного файла при активном WAL может потерять подтверждённые данные.
Обратимость
Исходник не меняется.