тгТихая грань
ОПЕРАЦИЯ · РЕЗЕРВИРОВАНИЕ

Сделать резервную копию SQLite

Снять согласованную копию через SQLite Backup API.

Инструмент: Python 3 · риск: creates-output · проверено: 2026-02-21

Предварительные условия

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 может потерять подтверждённые данные.

Обратимость

Исходник не меняется.

Применимые форматы

sqlite