バックアップ
バックアップは SQLite Backup API を通じて作成されるオンライン SQLite スナップショットで、WAL でも安全に実行でき、外部ツールなしで復元できます。
バックアップモデル
バックアップはサーバー実行中に作成される SQLite データベースの一貫したスナップショットです:
POST /api/v2/backupsは SQLite Backup API を通じてスナップショットを作成します。WAL でも安全で、リーダーをブロックしません。GET /api/v2/backupsは既存のバックアップを一覧します。キャッシュの内容とログは含まれません。
各バックアップレコードは日付、サイズ、スキーマバージョン、ソース、状態を表示します。UI も同じ情報を表示し、バックアップの作成はローカルデータの読み取りを中断しません。
バックアップの対象範囲
バックアップは構造化データベース全体をカバーします: キャラクター、ペルソナ、チャットとメッセージ、ロアブック、プリセット、プロバイダー構成、プラグイン状態、設定です。含まれないもの:
cache/thumbnails/— 再生成可能で、設計上除外;- ログ — 設計上除外;
- インポートステージングディレクトリ — 設計上一時的。
files/ のオリジナルはコンテンツアドレス型で、キャッシュメンテナンスに触れられないため、スナップショット自体の一部ではありません。
復元
POST /api/v2/backups/:id/restore は安全なシーケンスに従います:
- 現在の状態の安全バックアップを作成してローテーションします。
- 選択したスナップショットを
PRAGMA quick_checkで検証します。 - SQLite Online Backup API を通じてライブデータベースにコピーします。
接続とリポジトリは開いたままです: 応答は restartRequired: false を運び、後続の読み書きは再起動なしで動作し続けます。復元に外部 SQLite ツールは一切不要です。スナップショットまたはコピーの失敗は RESTORE_FAILED を返し、安全バックアップが保持されるため、失敗した復元で現在の状態が失われることはありません。
UI では、復元は明示的な確認を要求し、整合性チェックが通る前に成功として報告されることはなく、問題が発生した場合は安全コピーへの自動復帰を提案します。最後に動作するコピーであるバックアップを削除する場合は警告されます。
安全網としてのバックアップ
同じスナップショットの仕組みが危険な操作を守ります:
- マイグレーションランナーは、テーブルを再構築または再形成するマイグレーションの前に、データが入ったデータベースのマイグレーション前バックアップを作成します。
- インポート実行は、選択したデータを書き込む前に安全バックアップを作成するため、失敗または中断されたインポートは常にロールバックできます。
- 復元は上記のとおり、常に最初に現在の状態をスナップショットします。
関連情報
- データベース自体はSQLite ストレージ。
- データベースの外にあるものはファイルと画像。
- ユーザー向けのフローはユーザーガイド に文書化されています。