Searchat — Backup & Restore Flow
Data Safety · Validation Gates · Atomic Operations
v0.4.0
| Last updated: 2026-02-03
Python 3.9+ · Parquet · FAISS · Atomic File Operations
Backup Creation Flow
1
User Initiates Backup
Triggered from Web UI or API endpoint
2
Generate Timestamp
Creates unique backup name: backup_YYYYMMDD_HHMMSS
3
Copy Data Directory
Copies conversations/*.parquet + indices/ to backup location
~/.searchat/backups/backup_YYYYMMDD_HHMMSS/
4
Copy Configuration
Backs up settings.toml, bookmarks.json, dashboards.json
5
Generate Metadata
Creates backup_metadata.json with:
• Timestamp • File count • Total size • Config hash
6
Backup Complete
Returns backup name and metadata to user
🔒 Safety Features
• No deletion of active data
• Atomic directory copy
• Metadata validation
• Indefinite retention (manual cleanup)
Restore Flow
1
User Selects Backup
Chooses backup from list with timestamp + metadata
🛡️ Automatic Pre-Restore Backup
System automatically creates backup of current state before restore:
backup_pre_restore_YYYYMMDD_HHMMSS/
Validation Gate #1: Backup Exists
Checks if backup directory and metadata.json exist
❌ Validation Failed
Return error: "Backup not found or corrupted"
Validation Gate #2: Structure Check
Verifies presence of:
• data/ directory
• conversations/*.parquet files
• indices/embeddings.faiss
❌ Validation Failed
Return error: "Invalid backup structure"
Validation Gate #3: Integrity Check
Validates parquet file integrity + metadata consistency
❌ Validation Failed
Return error: "Corrupted backup data"
2
Atomic Restore
Replaces active data/ with backup data/
Uses atomic directory swap operation
3
Restore Configuration
Restores settings.toml if included in backup
4
Reload Search Engine
Reinitializes search engine with restored data
5
Restore Complete
System now running with restored data
<5s
Backup Time
<10s
Restore Time
3
Validation Gates
Auto
Pre-Restore Backup