No description
Find a file
2025-07-23 22:38:03 +02:00
doc new version 2025-07-22 21:40:53 +02:00
src final version 2025-07-23 22:38:03 +02:00
test first commit 2025-06-21 17:12:55 +02:00
.gitignore first commit 2025-06-21 17:12:55 +02:00
Cargo.lock second working version ratatui 2025-07-23 21:17:52 +02:00
Cargo.toml final version 2025-07-23 22:38:03 +02:00
default.nix new version 2025-07-22 21:40:53 +02:00
error.txt final version 2025-07-23 22:38:03 +02:00
progress.txt final version 2025-07-23 22:38:03 +02:00
readme.md final version 2025-07-23 22:38:03 +02:00
shell.nix final version 2025-07-23 22:38:03 +02:00

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:

  1. Formatage Cryptographique (nvme format -s 2): Efface la clé de chiffrement
  2. Sanitize Block Erase (nvme sanitize -a start-block-erase): Effacement physique avec surveillance de progression
  3. Fallback SSD : blkdiscard --secure --force puis blkdiscard -z --force

Pour les SSD SATA:

  1. Effacement sécurisé (blkdiscard --secure --force): Méthode la plus rapide et sécurisée
  2. Remplissage par zéros (blkdiscard -z --force): Fallback si sécurisé non supporté

Note

: L'outil n'utilise pas hdparm --security-erase pour 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 :

  1. Phase de Sélection : Une liste des disques détectés est affichée. Utilisez les flèches haut/bas pour naviguer, la barre d'espace pour 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.
  2. 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.
  3. Rapport Final : Une fois toutes les opérations terminées, un résumé s'affiche avec le statut de chaque disque.
  4. Quitter : Appuyez sur q ou CTRL-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 de blkdiscard est traitée en temps réel, résolvant les problèmes de buffering.
  • Taille de pas dynamique : La taille du pas de blkdiscard est 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 ....