| doc | ||
| src | ||
| test | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| default.nix | ||
| error.txt | ||
| progress.txt | ||
| readme.md | ||
| shell.nix | ||
Storage Wipe Tool
📝 Description
Outil Rust pour l'effacement sécurisé des disques (SSD SATA, NVMe) via plusieurs méthodes. Conçu pour les techniciens en réparation PC/serveurs. Version 0.6.1 avec une interface utilisateur terminal (TUI) unique basée sur ratatui.
🎯 Objectifs
- Sécurité: Implémentation fiable des procédures d'effacement
- Simplicité: Interface intuitive pour experts techniques
- Compatibilité: Support des SSD SATA et NVMe
- Efficacité: Effacement parallèle de plusieurs disques
✨ Fonctionnalités
- Interface TUI unifiée: Une seule interface pour la sélection, le lancement et le suivi des effacements.
- Sélection interactive: Naviguez avec les flèches, sélectionnez avec la barre d'espace.
- Effacement parallèle: Les disques sélectionnés sont effacés simultanément.
- Suivi détaillé: Tableau de bord en temps réel affichant la méthode, le statut et la progression pour chaque disque.
- Détection Hotplug: Ajout et retrait de disques détectés en temps réel pendant la sélection.
- Compatibilité étendue: Support des SSD SATA et NVMe.
🔄 Stratégie d'Effacement
L'outil utilise une stratégie d'effacement hiérarchique pour garantir à la fois la rapidité et la sécurité, en priorisant les méthodes les plus efficaces et les plus sûres.
Pour les disques durs rotatifs (HDD):
- Nwipe (
nwipe --autonuke): Effacement complet et reconnu
Pour les SSD et NVMe (Disques non rotatifs):
L'outil utilise une stratégie d'effacement hiérarchique :
Pour les NVMe:
- Formatage Cryptographique (
nvme format -s 2): Efface la clé de chiffrement - Sanitize Block Erase (
nvme sanitize -a start-block-erase): Effacement physique avec surveillance de progression - Fallback SSD :
blkdiscard --secure --forcepuisblkdiscard -z --force
Pour les SSD SATA:
- Effacement sécurisé (
blkdiscard --secure --force): Méthode la plus rapide et sécurisée - Remplissage par zéros (
blkdiscard -z --force): Fallback si sécurisé non supporté
Note
: L'outil n'utilise pas
hdparm --security-erasepour des raisons de sécurité et de fiabilité.
🔄 Mode de Fonctionnement
L'application s'exécute désormais dans une interface terminal unique et interactive :
- Phase de Sélection : Une liste des disques détectés est affichée. Utilisez les flèches
haut/baspour naviguer, labarre d'espacepour sélectionner/désélectionner un ou plusieurs disques. Les disques peuvent être connectés ou déconnectés à chaud et la liste se mettra à jour automatiquement. - Phase d'Effacement : Après validation avec
Entrée, les disques sélectionnés sont effacés en parallèle. Un tableau de bord montre la progression en temps réel pour chaque opération. - Rapport Final : Une fois toutes les opérations terminées, un résumé s'affiche avec le statut de chaque disque.
- Quitter : Appuyez sur
qouCTRL-Cà tout moment pour quitter l'application.
🔧 Prérequis
- Système Linux
- Outils système: util-linux nvme-cli lsblk nwipe coreutils
🏷️ Code Directives
- KISS (Keep It Simple, Stupid)
- DRY (Don't Repeat Yourself)
- YAGNI (You Aren't Gonna Need It)
- Rust best practices
- Interface TUI avec ratatui
🔄 Nouveautés v0.6.1
- ✅ Correction de la progression simultanée : Tous les disques affichent maintenant leur progression, débit et ETA en temps réel.
- ✅ Utilisation de
stdbuf: Garantit que la sortie deblkdiscardest traitée en temps réel, résolvant les problèmes de buffering. - ✅ Taille de pas dynamique : La taille du pas de
blkdiscardest maintenant calculée en fonction de la taille du disque pour assurer un nombre de mises à jour adéquat. - ✅ Code simplifié : La logique de traitement des threads et de la TUI a été radicalement simplifiée pour plus de robustesse.
🔄 Nouveautés v0.6.0
- ✅ Réécriture complète avec une interface TUI unifiée basée sur ratatui.
- ✅ Suppression de
cliclack: L'intégralité du flux est gérée dans la TUI. - ✅ Détection Hotplug : Les disques sont détectés en temps réel dans la phase de sélection.
- ✅ Interface unique : Plus de distinction entre le mode simple et multiple.
- ✅ Aide contextuelle intégrée à l'interface.
🔄 Nouveautés v0.5.1
- ✅ Progression réelle avec suivi en temps réel via blkdiscard verbose output
- ✅ Step-based progress: 1GB pour SSD, 10GB pour NVMe
- ✅ Stratégie d'effacement simplifiée : blkdiscard pour tous les SSD/NVMe
- ✅ Suppression complète de hdparm pour des raisons de sécurité
- ✅ Fallback robuste NVMe → SSD → blkdiscard
- ✅ Support multi-langue dans la sortie verbose (FR/EN)
- ✅ Détection automatique de la taille des disques
- ✅ Progression précise basée sur la taille réelle du disque
- ✅ Gestion des barres de progression propre en cas d'échec
- ✅ Messages clairs sur les méthodes utilisées et les échecs
🔄 Nouveautés v0.5.0
- ✅ Progression réelle avec suivi en temps réel
- ✅ Step-based progress
- ✅ Stratégie d'effacement simplifiée
🔄 Nouveautés v0.4.1
- ✅ Suppression du timeout pour permettre les opérations longues
- ✅ Gestion gracieuse des erreurs "Operation not supported"
- ✅ Diagnostic des dépendances manquantes
🔄 Nouveautés v0.2.0
- ✅ Sélection multiple de disques
- ✅ Effacement parallèle avec suivi unifié
- ✅ Support complet des disques SATA et NVMe
---- DOC ---- $ sudo blkdiscard -z --step 1GB -v /dev/sda /dev/sda : 1000000000 octets remplis de zéros à partir de la position 0 /dev/sda : 1000000000 octets remplis de zéros à partir de la position 1000000000 /dev/sda : 1000000000 octets remplis de zéros à partir de la position 2000000000 /dev/sda : 1000000000 octets remplis de zéros à partir de la position 3000000000 ....