Sauvegarder et restaurer la base de données

IsoFind stocke l'ensemble des données analytiques dans une base SQLite locale. Cette page couvre les deux méthodes de sauvegarde disponibles, les chemins de stockage sur le système de fichiers, la procédure de restauration, la migration automatique du schéma entre versions, et la sauvegarde chiffrée disponible avec la protection avancée.

Les fichiers de la base de données

IsoFind utilise plusieurs bases de données SQLite distinctes, chacune avec un rôle précis. Elles sont toutes stockées dans le dossier de données utilisateur d'IsoFind.

Fichier Contenu Critique
isofind.db Base principale : échantillons, données isotopiques, méthodes, CRM, standards, archives, purifications, pipelines, publications, logs d'audit. Contient 24 tables. Oui
workflows.db Workflows Nexus sauvegardés, états des sessions. Selon usage
fractionation_database.db Base des coefficients de fractionnement isotopique de référence. Non (reconstituable)
users.db Comptes utilisateurs, sessions, codes de récupération (mode multi-utilisateurs uniquement). Selon mode

Emplacement sur le système de fichiers

Tous les fichiers de données persistants sont dans le dossier applicatif IsoFind, séparé du répertoire d'installation du logiciel. Ce dossier est préservé lors des mises à jour.

SystèmeChemin
Windows %LOCALAPPDATA%\IsoFind\
Linux ~/.local/share/isofind/
macOS ~/Library/Application Support/isofind/

Les sauvegardes sont automatiquement placées dans le sous-dossier backups\ de ce même répertoire.

Pour localiser rapidement le dossier de données sur Windows, taper %LOCALAPPDATA%\IsoFind directement dans la barre d'adresse de l'Explorateur de fichiers.

Sauvegarde manuelle depuis l'interface

La méthode de sauvegarde la plus directe est l'export depuis le menu de gestion de la base de données :

Menu Données Sauvegarder base locale

IsoFind génère une copie de isofind.db horodatée dans le dossier backups\. Le nom du fichier suit le format isofind_YYYYMMDD_HHMMSS.db. Cette opération est non destructive et peut être effectuée à tout moment, même pendant une session de travail active.

La même opération est accessible via l'API locale :

GET /api/database/backup

Cette route retourne le fichier de sauvegarde directement en téléchargement.

Menu de sauvegarde de la base de données IsoFind Figure 1 : Menu de gestion de la base de données avec l'option de sauvegarde.

Sauvegarde chiffrée (protection avancée)

Lorsque la protection de base de données est activée au niveau Avancé, IsoFind peut créer des sauvegardes chiffrées avec AES-256-GCM. La clé de chiffrement est dérivée du mot de passe maître via PBKDF2-HMAC-SHA256 avec 600 000 itérations et un sel aléatoire de 32 octets.

Menu Protection Sauvegarde chiffrée

La procédure demande le mot de passe maître, puis crée le fichier chiffré dans backups\ avec l'extension .protected.bak. Le format du fichier est :

OctetsContenu
4Longueur du nonce (big-endian)
12Nonce GCM aléatoire
resteDonnées chiffrées (base SQLite + tag d'authentification GCM)

Le tag d'authentification GCM garantit que toute modification du fichier chiffré sera détectée à la restauration. Une sauvegarde altérée ne peut pas être restaurée silencieusement.

La sauvegarde chiffrée ne peut être restaurée qu'avec le mot de passe maître exact utilisé lors de sa création. Ce mot de passe n'est pas récupérable. Conserver le mot de passe maître dans un gestionnaire de mots de passe indépendant du poste IsoFind.

Restaurer une sauvegarde

Restauration standard

Pour restaurer une sauvegarde non chiffrée, fermer IsoFind, remplacer le fichier isofind.db dans le dossier de données par la copie souhaitée, puis relancer IsoFind.

La restauration est également disponible depuis l'interface :

Menu Fichier Gestion BDD Restaurer

Ou via l'API :

POST /api/database/restore
La restauration remplace la base de données active. Toutes les données créées après la date de la sauvegarde sont perdues. IsoFind crée automatiquement une sauvegarde de sécurité de la base courante (fichier .before_restore.bak) avant d'écraser, permettant un retour arrière en cas d'erreur.

Restauration d'une sauvegarde chiffrée

Depuis le menu Protection, l'option de restauration chiffrée demande le chemin du fichier .protected.bak et le mot de passe maître. IsoFind déchiffre le contenu en mémoire, vérifie le tag d'authentification GCM, puis écrit la base restaurée sur le disque après avoir sauvegardé la base courante.

Migration automatique du schéma

À chaque démarrage, IsoFind vérifie la conformité du schéma de la base de données par rapport à la version attendue. Cette vérification est effectuée par le module db_migration.py avant l'initialisation du backend.

La stratégie de migration est non destructive : les colonnes manquantes sont ajoutées via ALTER TABLE ADD COLUMN, les tables absentes sont recréées intégralement. Aucune donnée existante n'est supprimée ni modifiée. Cette migration silencieuse garantit la compatibilité ascendante lors d'une mise à jour du logiciel.

Les 24 tables de isofind.db sont vérifiées à chaque démarrage. Si une colonne a été ajoutée dans une nouvelle version d'IsoFind, elle est créée automatiquement avec sa valeur par défaut sans intervention de l'utilisateur.

La migration automatique du schéma signifie que les sauvegardes d'anciennes versions d'IsoFind sont restaurables sans manipulation manuelle. La base est mise à niveau au démarrage suivant la restauration.

Bonnes pratiques de sauvegarde

Pour les laboratoires avec des données critiques ou sensibles, quelques règles simples permettent de minimiser le risque de perte :

Effectuer une sauvegarde manuelle avant toute opération de masse (import CSV volumineux, normalisation globale, suppression de projet). Ces opérations modifient de nombreuses lignes en une seule passe et ne sont pas réversibles autrement.

Conserver les sauvegardes hors du poste IsoFind, sur un support distinct (serveur réseau, disque externe, stockage chiffré). Le dossier backups\ est sur le même disque que la base active : un incident matériel affecte les deux simultanément.

Pour les déploiements en contexte sensible (forensique, défense, traçabilité réglementée), utiliser la sauvegarde chiffrée plutôt que la copie brute. Un fichier .protected.bak est illisible sans le mot de passe maître, même en cas d'accès physique au support.

Le niveau de protection Avancé active les sauvegardes automatiques planifiées. À ce niveau, IsoFind crée une sauvegarde chiffrée à intervalle régulier sans intervention manuelle, et l'événement est consigné dans l'audit trail.

Récupérer des données après une erreur

Si des données ont été supprimées accidentellement, plusieurs chemins de récupération existent selon le cas.

Les échantillons supprimés via le menu d'archivage ne sont pas détruits immédiatement : ils sont déplacés dans les tables archive_samples et archive_isotope_data de la base. Ils sont accessibles et restaurables depuis le module Archives d'IsoFind sans avoir à toucher à la base directement.

Les suppressions définitives (depuis le module Archives ou via suppression directe) ne sont récupérables que depuis une sauvegarde antérieure. La procédure est de restaurer la sauvegarde sur un poste de test, d'exporter les échantillons concernés en CSV depuis cette instance, puis de les réimporter dans la base courante.

La sauvegarde de sécurité .before_restore.bak créée automatiquement avant chaque restauration permet un retour arrière immédiat si la restauration produit un résultat inattendu.

Vérification de l'intégrité

L'intégrité de la base peut être vérifiée depuis l'interface de protection :

Menu Protection Vérifier l'intégrité

IsoFind exécute la commande SQLite PRAGMA integrity_check sur la base active et affiche le résultat. Une base saine retourne ok. Si des erreurs sont détectées, restaurer la sauvegarde la plus récente.

Cette vérification est également disponible depuis l'API :

GET /api/protection/logs/verify

Cette route vérifie la cohérence de la chaîne HMAC-SHA256 de l'audit trail (chaque entrée de log est liée cryptographiquement à la précédente). Un audit trail intact confirme qu'aucune entrée n'a été supprimée ou modifiée après enregistrement.