Retour aux projets

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

PythonSSH/ParamikoSCPFlaskSQLiteCryptography (AES-256-GCM)GzipWatchdog
PythonSSH/ParamikoSCPFlaskSQLiteCryptography (AES-256-GCM)GzipWatchdog

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

python
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

python
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.

Retour aux projets