Application de Sauvegarde
Durée
3 mois
Équipe
Projet universitaire - Équipe de 4 étudiants
Mon Rôle
Developpeur principal - Architecture systeme, gestion versions, chiffrement, interface web
Technologies Utilisées
Contexte
Projet BUT Informatique visant a creer un systeme de sauvegarde robuste pour proteger les donnees contre les ransomwares et erreurs utilisateur, avec retention de 30 jours.
Objectifs
Developper un systeme de sauvegarde automatique, securise via SSH, avec gestion intelligente de versions, compression gzip (70% reduction), deduplication par hash SHA256 et chiffrement AES-256-GCM.
Approche Technique
Architecture client-serveur avec daemon de surveillance (watchdog) sur le client, transfert SSH/SCP securise, traitement serveur (compression + chiffrement + deduplication), stockage SQLite des metadonnees et interface web Flask pour monitoring et restauration.
Architecture
Client: daemon watchdog, SSH/SCP via Paramiko. Serveur: process_file.py pour traitement, version_manager.py pour gestion versions/deduplication, encryption.py pour AES-256-GCM, app.py Flask pour interface web (dashboard, restauration, API REST), SQLite pour metadonnees, systemd service pour automatisation.
Compétences Développées
Python avancé & Architecture système
Architecture client-serveur avec daemon watchdog, transferts SSH/SCP via Paramiko, et automatisation systemd.
Cryptographie & Sécurité
Chiffrement AES-256-GCM avec dérivation PBKDF2, compression gzip (70% réduction), et déduplication par hash SHA256.
Flask & API REST
Interface web Flask avec dashboard temps réel, API REST pour consultation et restauration de versions, authentification intégrée.
Base de données SQLite
Stockage des métadonnées de versions avec timestamps, gestion de la rétention 30 jours, et requêtes optimisées.
Extraits de Code
Gestion de versions avec compression et chiffrement
Loading...
Ce code implemente la gestion de versions avec deduplication intelligente. Chaque fichier est hache (SHA256), compare a la version actuelle, puis compresse (gzip 70%), chiffre (AES-256-GCM) et stocke de maniere dedupliquee. Si le meme hash existe deja, le fichier est reutilise (economie d'espace). Les metadonnees sont enregistrees dans SQLite avec timestamp pour retention 30 jours.
API Flask pour restauration de versions
Loading...
Cette API Flask expose des endpoints REST pour consulter l'historique des versions et restaurer des fichiers. GET /api/files/<path>/versions retourne toutes les versions avec metadonnees (timestamp, tailles, hash). POST /api/restore gere la restauration complete: recuperation depuis dedup_store, dechiffrement AES-256-GCM, decompression gzip et ecriture du fichier restaure. L'interface web utilise ces endpoints pour permettre la restauration point-in-time.
Résultats & Bilan
Systeme production-ready avec 80-90% de reduction d'espace disque (compression gzip 70% + deduplication), interface web fonctionnelle avec dashboard temps reel, API REST complete, tests automatiques d'integrite et restauration, retention 30 jours.
Réflexion & Apprentissages
Projet enrichissant qui m'a permis d'approfondir mes competences en architecture systeme, securite (SSH, chiffrement), optimisation (compression + deduplication) et developpement web. La gestion de versions avec retention m'a particulierement forme aux problematiques de stockage et recuperation de donnees.