Système de backup incrémental avec chiffrement AES-256
Project description
🔐 MyBackup — Système de backup incrémental intelligent
Table des matières
- Fonctionnalités
- Prérequis
- Installation rapide
- Initialisation
- Utilisation
- Configuration avancée
- Comment ça marche
- Sécurité
- Dépannage
- Roadmap
- Contribution
- Licence et auteur
- Remerciements
🎯 Fonctionnalités
- Backup incrémental : sauvegarde uniquement les fichiers modifiés depuis la dernière version
- Chiffrement : AES-256-GCM (authentifié)
- Compression : Zstandard (zstd)
- Surveillance en temps réel (watch) / intervalle configurable
- Destinations multiples : disque externe, NAS, partition, clé USB, cloud chiffré
- Versioning : historique par fichier (versions datées)
- CLI moderne (Typer + Rich) avec options dry-run et verbose
- Restauration granulaire : par fichier, dossier, date ou version
📋 Prérequis
- Python 3.10+
- Systèmes supportés : Windows 10/11, macOS (Intel/Apple Silicon) et distributions Linux modernes
- Destination de backup : disque externe, NAS, partition séparée, clé USB, etc.
🚀 Installation rapide
- Cloner le dépôt :
git clone https://github.com/stephdeve/backup-system.git
cd backup-system
- Créer et activer un environnement virtuel :
- Windows PowerShell :
python -m venv venv
.\venv\Scripts\Activate.ps1
- Windows CMD :
python -m venv venv
.\venv\Scripts\activate.bat
- macOS / Linux (bash, zsh) :
python -m venv venv
source venv/bin/activate
- Installer les dépendances et le package en mode dev :
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install -e .
⚙️ Initialisation
Initialiser MyBackup (crée configuration, DB et clé de chiffrement) :
mybackup init
Ceci crée (chemin selon OS) :
- Windows :
%USERPROFILE%\.mybackup\config.yamlet%USERPROFILE%\.mybackup\backups.db - macOS / Linux :
~/.mybackup/config.yamlet~/.mybackup/backups.db - Un emplacement de stockage sur la ou les destinations configurées
Important : sauvegardez votre clé de chiffrement ! Sans elle, la restauration est impossible.
📖 Utilisation
Configurer les sources et destinations
Ajouter des dossiers à sauvegarder (exemples Windows et POSIX) :
# Windows
mybackup add "C:\Users\VotreNom\Documents" --exclude "*.tmp,~*,desktop.ini"
# macOS / Linux
mybackup add "/home/votreuser/Documents" --exclude "*.tmp,~*,.DS_Store"
Configurer la destination :
# Disque externe (Windows)
mybackup config set destination "D:\Backups"
# NAS (Windows UNC)
mybackup config set destination "\\192.168.1.100\backups"
# Destination POSIX (macOS / Linux)
mybackup config set destination "/mnt/backups"
Afficher la configuration :
mybackup config show
Lancer un backup
Backup de toutes les sources :
mybackup backup
Backup d'une source particulière :
mybackup backup --source "C:\Users\VotreNom\Documents" # Windows
mybackup backup --source "/home/votreuser/Documents" # macOS / Linux
Simulation (dry-run) :
mybackup backup --dry-run --verbose
Statut et historique
Afficher le statut :
mybackup status
Affiche : nombre de fichiers sauvegardés, espace utilisé / économisé, dernier backup, sources.
Lister les versions d'un fichier :
mybackup list "C:\Users\VotreNom\Documents\rapport.pdf"
# ou
mybackup list "/home/votreuser/Documents/rapport.pdf"
Restaurations
Restaurer la dernière version d'un fichier :
mybackup restore --file "C:\Users\VotreNom\Documents\important.docx"
# ou
mybackup restore --file "/home/votreuser/Documents/important.docx"
Restaurer à une date spécifique :
mybackup restore --file "C:\Users\VotreNom\Documents\rapport.pdf" --date 2026-01-15
Restaurer une version précise :
mybackup restore --file "C:\Users\VotreNom\app.py" --version 3
Restaurer vers un autre emplacement :
mybackup restore --file "C:\Users\VotreNom\doc.txt" --destination "C:\Restored\doc.txt"
# ou
mybackup restore --file "/home/votreuser/doc.txt" --destination "/home/votreuser/Restored/doc.txt"
Restaurer tout un dossier :
mybackup restore --directory "C:\Users\VotreNom\Documents" --destination "C:\Restored"
# ou
mybackup restore --directory "/home/votreuser/Documents" --destination "/home/votreuser/Restored"
Lister tous les fichiers disponibles pour restauration :
mybackup restore --list
Nettoyage / Rétention
Conserver N jours et un nombre de versions par fichier :
mybackup clean --keep-days 30 --keep-versions 10
# Simulation
mybackup clean --dry-run
🔧 Configuration avancée
Fichier de configuration :
- Windows :
%USERPROFILE%\.mybackup\config.yaml - macOS / Linux :
~/.mybackup/config.yaml
Exemple structure :
version: '1.0.0'
created_at: '2026-01-20T14:30:00'
encryption:
algorithm: AES-256-GCM
key: 'VOTRE_CLE_SECRETE_ICI'
compression:
enabled: true
algorithm: zstd
level: 3 # 1 (rapide) à 22 (max compression)
sources:
- path: C:\Users\VotreNom\Documents
exclude: ['*.tmp', '~*', 'desktop.ini']
added_at: '2026-01-20T14:35:00'
destinations:
primary: D:\Backups
secondary: null
watch:
enabled: true
interval: 300 # secondes
realtime: true
retention:
keep_days: 30
keep_versions: 10
auto_clean: false
Modifier via CLI :
mybackup config set compression.level 5
mybackup config set retention.auto_clean true
mybackup config set watch.interval 600
Ou éditer directement le fichier de config selon votre OS (ex. ~/.mybackup/config.yaml ou %USERPROFILE%\.mybackup\config.yaml).
📊 Comment ça marche (aperçu technique)
Pour chaque fichier :
- Calcul du hash SHA-256 (détecte modifications)
- Compression Zstandard (zstd)
- Chiffrement AES-256-GCM (Cryptography.io)
- Stockage du binaire chiffré (.enc) sur la destination
- Enregistrement des métadonnées dans la base SQLite (hash, taille, timestamp, version)
Structure sur destination (exemple) :
D:\Backups\
├── a3f5c892e1b4...enc (version 1 de app.py)
├── d9g3h456f2c8...enc (version 2 de app.py)
└── ...
La DB contient : chemin original, version, hash, tailles (original/compressé/chiffré), timestamps, ratio de compression.
🔒 Sécurité
- Algorithme : AES-256-GCM (authentifié)
- Bibliothèque : cryptography (best-effort FIPS-aware usage)
- Clé : stockée dans le fichier de configuration par défaut — sauvegardez-la hors-site !
Sauvegarde de la clé (exemples) :
- Windows PowerShell :
copy $env:USERPROFILE\.mybackup\config.yaml F:\backup_key.yaml
- macOS / Linux :
cp ~/.mybackup/config.yaml /mnt/secure/backup_key.yaml
Sans la clé : restauration impossible. Conservez plusieurs copies sécurisées.
Intégrité : vérification SHA-256 avant et après chiffrement ; corruption détectée à la restauration.
🐛 Dépannage rapide
- "MyBackup n'est pas initialisé" → exécuter
mybackup init - "Destination manquante" →
mybackup config set destination "D:\Backups"(ou chemin POSIX) - "Clé de chiffrement invalide" → restaurer votre config depuis votre copie de sauvegarde
- Backup lent : diminuer la compression (niveau 1), désactiver la compression ou exclure plus de fichiers
- Permission denied : vérifier permissions (NTFS sur Windows, permissions POSIX sur macOS/Linux)
📈 Roadmap
Sprint 2 (prévu)
- Daemon de surveillance en arrière-plan
- Backup automatique toutes les 5 minutes
- Notifications d'erreur
- Commande
mybackup watch
Futurs
- Priorisation intelligente (IA)
- Dashboard web (FastAPI)
- Support multi-plateformes (Windows, macOS, Linux) -- améliorations en cours
- Intégration cloud chiffrée
🤝 Contribution
Ce projet est un projet personnel d'apprentissage — suggestions et contributions bienvenues. Ouvrez une issue ou une PR avec des propositions concrètes.
📄 Licence
MIT License — utilisation libre.
👨💻 Auteur
StephDev — Développeur (Cotonou, Bénin). Projet réalisé dans le cadre d'un apprentissage Python avancé.
🙏 Remerciements
- cryptography.io
- Zstandard (zstd)
- Typer & Rich
- Watchdog
⚡ Quick Start (résumé)
# 1. Installer
python -m venv venv
# Windows PowerShell
.\venv\Scripts\Activate.ps1
# macOS / Linux
source venv/bin/activate
pip install -r requirements.txt
pip install -e .
# 2. Initialiser
mybackup init
# 3. Configurer
# Windows
mybackup add "C:\Users\VotreNom\Documents"
mybackup config set destination "D:\Backups"
# macOS / Linux
mybackup add "/home/votreuser/Documents"
mybackup config set destination "/mnt/backups"
# 4. Backup
mybackup backup
# 5. Restaurer
mybackup restore --file "C:\Users\...\fichier.txt" # ou chemin POSIX
<<<<<<< HEAD Vos données sont maintenant protégées. 🎉
Vos données sont maintenant protégées. 🎉
0d82b3e2327da458013841402feabe552baef083
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cryptbackup-1.0.4.tar.gz.
File metadata
- Download URL: cryptbackup-1.0.4.tar.gz
- Upload date:
- Size: 35.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5717b161fef9b1b17e309eea946cb5ef5e1c347b6987eb0ddb357eecc90b3514
|
|
| MD5 |
f27db8ff535cec1f8b3fcbbaf8f6fe28
|
|
| BLAKE2b-256 |
a3f2df7fc129f37ec5d85be08ae288a07d868f1a8424666d3dc608e0829fa9a5
|
File details
Details for the file cryptbackup-1.0.4-py3-none-any.whl.
File metadata
- Download URL: cryptbackup-1.0.4-py3-none-any.whl
- Upload date:
- Size: 41.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6b44abc1cc27905dacb3dae370127cb9a73174813239e0c2a8e096dc3f0c1c5
|
|
| MD5 |
1fa99a4c349ad71246f0c4e7c1d26c60
|
|
| BLAKE2b-256 |
0f7db5859fd88eea26b3f0b85bcbab36777969aa16f5803c8cb184fd8e94bb33
|