Zum Inhalt
HDDLab Datenrettung · Danziger Str. 78a, 10405 BerlinMo–Fr 10–18 Uhr · 030-44041476 · info@hddlab.de

Wissen

Wipe-Station selbst bauen: Festplatten automatisch löschen – nach der Suche nach wichtigen Dateien

Ein Stapel alter Festplatten, die gelöscht und weitergegeben werden sollen – und irgendwo darauf vielleicht noch die Steuerunterlagen von 2019. Dieser Ratgeber zeigt, wie Sie aus einem USB-Stick und einem freien Linux eine Station bauen, die jede Festplatte zuerst nach wichtigen Dateien durchsucht, nur die unbedenklichen löscht, das Ergebnis prüft und für jede Platte einen Bericht schreibt.

, Laborleiter ·

Kurz gesagt: Ein USB-Stick mit SystemRescue 13.02 und einem einzigen Bash-Skript genügt. Nach dem Einschalten findet der Stick alle Laufwerke im Rechner, sucht darauf nach Dateien aus einer Liste, lässt jedes Laufwerk mit einem Treffer in Ruhe, überschreibt die übrigen gleichzeitig mit Nullen, liest sie danach vollständig zurück und bewertet den Zustand anhand der SMART-Werte vor und nach dem Löschen. Kein Tastendruck nötig. Am Ende liegt für jede Platte ein Bericht auf dem Stick.

Wichtig, bevor Sie weiterlesen: Diese Station löscht alle Laufwerke des Rechners, an dem sie startet – außer dem Stick selbst. Ein versehentlicher Start am Arbeits- oder Familien-PC vernichtet dessen Daten. Benutzen Sie einen eigenen Rechner nur zum Löschen, beschriften Sie den Stick deutlich und probieren Sie alles zuerst mit einer leeren Testplatte aus. Das Skript ist ohne Gewähr.

Wofür so eine Station gut ist

In unserem Labor gehen regelmäßig ganze Kisten mit gebrauchten Festplatten zur Löschung. Zwei Dinge sind dabei immer wieder dieselben:

  • Niemand will vor jeder Platte sitzen. Einstecken, einschalten, weggehen – und später nachsehen, was herausgekommen ist.
  • Manchmal soll vorher noch etwas gerettet werden. „Auf einer der Platten müssten noch die Rechnungen sein“ – nur auf welcher? Wer erst löscht und dann sucht, hat verloren.

Daraus ergeben sich die Anforderungen an die Station:

  1. Start vom Stick, dann Löschen, Prüfen und SMART-Bewertung jedes Laufwerks.
  2. Kein einziger Tastendruck vom Einschalten bis zum Ergebnis.
  3. Auf dem Bildschirm sichtbar, wenn ein Laufwerk hängt oder langsam schreibt oder liest.
  4. Keine Auswahl: Alle angeschlossenen Laufwerke werden gleichzeitig bearbeitet, ob zwei oder acht.
  5. Vor dem Löschen wird nach den gesuchten Dateien gesucht. Ein Treffer genügt, und dieses Laufwerk wird nicht gelöscht.

Was Sie brauchen

Was Empfehlung
Linux-System SystemRescue 13.02 (August 2026, Linux-Kernel 6.18 LTS), kostenlos, Download. Enthält bereits smartctl, ntfs-3g, ntfsundelete, blkid, dd und cmp.
USB-Stick ab 4 GB; der Stick wird komplett überschrieben
Schreibprogramm Rufus unter Windows, Modus „ISO-Abbild“ (nicht „DD-Abbild“) – nur so bleibt der Stick beschreibbar, und nur dann können Skript und Berichte darauf liegen
Rechner ein ausgemusterter PC mit mehreren SATA-Anschlüssen; zusätzlich gehen USB-Dockingstationen, NVMe-Steckplätze und SAS-Controller
Skript wipe-station-autorun.sh (Bash, rund 250 Zeilen, siehe unten)

So funktioniert die Station

SystemRescue bringt eine eingebaute Funktion mit, die eigene Skripte beim Start ausführt: autorun. Liegt auf dem Stick im Ordner autorun eine Datei namens autorun, startet SystemRescue sie nach dem Hochfahren automatisch und wartet danach nicht auf eine Taste (Option ar_nowait, seit Version 9.05 Standard). Beschrieben ist das im SystemRescue-Handbuch zu autorun. Der Ablauf:

  1. Der PC startet vom Stick. Das Startmenü von SystemRescue wählt nach seiner Wartezeit selbst den Standardeintrag.
  2. autorun startet das Skript. Das Skript startet sich sofort als eigener Systemdienst neu (systemd-run), damit autorun nicht auf das Ende warten muss und es nicht abbricht.
  3. Die Anzeige springt auf Konsole 8, Bildschirmschoner und Energiesparen werden abgeschaltet.
  4. Laufwerke finden: alle beschreibbaren Laufwerke außer dem Boot-Stick, virtuellen Laufwerken (loop, zram) und CD-Laufwerken. Den Stick erkennt das Skript an seinem Einhängepunkt /run/archiso/bootmnt und am Datenträgernamen RESCUE….
  5. Schutz prüfen und Dateien suchen. Laufwerke mit Treffer werden ausgeschlossen.
  6. Liste auf dem Bildschirm und 10 Sekunden Countdown. Das ist keine Auswahl, sondern die letzte Warnung.
  7. Für jedes Laufwerk gleichzeitig: SMART vorher, Überschreiben mit Nullen, vollständiges Zurücklesen und Vergleich, SMART nachher, Bewertung, Bericht.
  8. Danach bleibt die Station aktiv: Ein neu eingestecktes Laufwerk (Hot-Swap-SATA oder USB-Dock) wird ohne Neustart bearbeitet. Bereits gelöschte Laufwerke erkennt das Skript an der Seriennummer und löscht sie in derselben Sitzung kein zweites Mal.

Schritt für Schritt: den Stick einrichten

  1. SystemRescue-ISO herunterladen, mit Rufus im Modus ISO-Abbild auf den Stick schreiben.
  2. Stick neu einstecken. Er erscheint als Laufwerk mit dem Namen RESCUE1302.
  3. Ordner autorun anlegen und das Skript als autorun (ohne Dateiendung) hineinlegen.
  4. Optional: search.txt und nowipe.txt ins Hauptverzeichnis des Sticks.

So sieht der Stick danach aus:

RESCUE1302/
├── autorun/
│   └── autorun        ← das Skript
├── search.txt         ← gesuchte Dateien, eine Maske je Zeile (optional)
├── nowipe.txt         ← Seriennummern, die nie gelöscht werden (optional)
├── wipe-reports/      ← legt das Skript selbst an: Berichte und log.csv
└── sysresccd/ …       ← SystemRescue selbst, nicht verändern

Bitte den Startparameter copytoram nicht verwenden: Dann ist der Stick nach dem Start nicht mehr eingehängt, und die Berichte landen nur im Arbeitsspeicher.

Das Skript: die wichtigsten Teile

Das vollständige Skript steht zum Download. Alle Schwellenwerte stehen als Variablen am Anfang und lassen sich anpassen. Hier die Kernstücke.

Neustart als eigener Dienst auf Konsole 8 – damit autorun sofort fertig ist und das Skript unabhängig weiterläuft:

if [ "${1:-}" != run ]; then
  systemd-run --unit=wipestation --property=TTYPath=/dev/tty8 \
    --property=StandardOutput=tty --property=StandardError=tty \
    /bin/bash "$BOOT/autorun/autorun" run
  exit 0
fi

Laufwerke finden, den Stick auslassen:

lsblk -dnpo NAME,TYPE,RO | while read -r d t ro; do
  [ "$t" = disk ] && [ "$ro" = 0 ] || continue
  case $d in /dev/loop*|/dev/zram*|/dev/sr*) continue ;; esac
  [ "$d" = "/dev/$BOOTDISK" ] && continue
  lsblk -no LABEL "$d" | grep -q '^RESCUE' && continue
  echo "$d"
done

Löschen und Prüfen. Geschrieben wird in Blöcken zu 4 MB unter Umgehung des Zwischenspeichers (oflag=direct). Am Ende meldet dd „No space left on device“ – das ist das erwartete Ende des Laufwerks. Danach wird das ganze Laufwerk zurückgelesen und Byte für Byte mit Nullen verglichen:

dd if=/dev/zero of="$d" bs=4M oflag=direct conv=fsync status=none
blockdev --flushbufs "$d"; echo 3 > /proc/sys/vm/drop_caches
cmp -n "$(blockdev --getsize64 "$d")" "$d" /dev/zero   # 0 = überall Nullen

SMART vorher und nachher. Hinter USB-Adaptern sieht smartctl die Werte oft erst mit -d sat; das Skript versucht es dann automatisch:

smartctl -x "$d" > vorher.txt
grep -qiE 'Unknown USB bridge|specify device type' vorher.txt && smartctl -x -d sat "$d" > vorher.txt

Was auf dem Bildschirm zu sehen ist

Die Anzeige wird alle 5 Sekunden neu aufgebaut. Für jedes Laufwerk stehen Modell und Größe, die Phase (LÖSCHEN oder PRÜFEN), der Fortschritt in Prozent und das aktuelle Tempo. Das Tempo misst das Skript nicht über dd, sondern direkt beim Kernel in /sys/block/<laufwerk>/stat – dort steht, wie viele Sektoren geschrieben und gelesen wurden.

Zustand Bedingung Farbe Variable
normal Tempo ab 40 MB/s grün SLOW_MBS=40
LANGSAM Tempo der letzten 5 Sekunden unter 40 MB/s gelb, Zahl der Messungen und Mindesttempo landen im Bericht SLOW_MBS
HÄNGT 60 Sekunden kein Fortschritt rot, mit Sekundenzähler STALL_SEC=60
abgebrochen 15 Minuten kein Fortschritt Laufwerk wird aufgegeben, Ergebnis HUNG GIVEUP_SEC=900

Langsame Phasen bleiben im Bericht stehen, auch wenn das Laufwerk danach wieder schnell wird. Am Ende steht für jedes Laufwerk ein Gesamturteil – grün ALLES IN ORDNUNG, gelb ACHTUNG oder rot SCHLECHT – und darunter die einzelnen Punkte mit [!!] (gelb) oder [XX] (rot).

Wann ein Laufwerk als schlecht gilt

Das Gesamturteil richtet sich nach dem schlechtesten Einzelpunkt: Ein roter Punkt genügt für „SCHLECHT“. Weil SMART zweimal gelesen wird, fällt auch auf, wenn ein Laufwerk während des Löschens neue defekte Sektoren bekommt – ein deutliches Zeichen, dass es nicht mehr weitergegeben werden sollte.

Prüfung Gelb Rot
SMART-Gesamtstatus nicht lesbar (Adapter ohne SMART) nicht PASSED / nicht OK
Attribut mit Schwellwert-Überschreitung in der Vergangenheit FAILING_NOW
5 Reallocated Sectors / 196 Reallocation Events 1–49 ab 50
197 Pending, 198 Uncorrectable, 187 Reported Uncorrect – ab 1
Anstieg von 5, 187, 197 oder 198 während des Tests – jeder
10 Spin Retry Count ab 1 –
199 CRC-Fehler (meist Kabel oder Adapter) ab 1 –
SMART-Fehlerprotokoll ab 1 Eintrag –
Temperatur (194/190) über 55 °C –
NVMe Critical Warning – ungleich 0x00
NVMe Media and Data Integrity Errors – ab 1
NVMe Percentage Used 80–99 % ab 100 %
NVMe Available Spare unter 50 % 10 % oder weniger
SAS Grown Defect List 1–49 ab 50
Schreib- oder Lesefehler, keine Nullen bei der Prüfung, Hänger – ja
langsame Phasen beim Löschen oder Prüfen ja –

Die Schwellen für umgelagerte Sektoren und Temperatur stehen als REALLOC_WARN, REALLOC_BAD und TEMP_WARN am Anfang des Skripts. Was die einzelnen Attribute bedeuten, erklärt die Übersicht der SMART-Attribute bei Wikipedia.

Erst suchen, dann löschen

Ein Laufwerk, auf dem auch nur eine gesuchte Datei gefunden wird, wird nicht gelöscht. Alle anderen Laufwerke laufen normal weiter.

Was gesucht wird, steht in search.txt im Hauptverzeichnis des Sticks – eine Maske pro Zeile, Groß- und Kleinschreibung egal, # leitet einen Kommentar ein:

# Rechnungen und Buchhaltung
Rechnung*
*.qbw
*Vertrag*.pdf
# ganze Ordner: Masken mit / gelten für den vollständigen Pfad
*/Projekte/*

Fehlt die Datei oder ist sie leer, wird nicht gesucht.

So wird gesucht:

  • Jede Partition wird nur lesend eingehängt. NTFS zuerst mit dem Kernel-Treiber ntfs3, notfalls mit ntfs-3g -o ro,norecover, damit auch ein „schmutzig“ heruntergefahrenes Windows nicht verändert wird.
  • Vorhandene Dateien: find -iname bzw. -ipath über die ganze Partition, höchstens eine Stunde je Partition (SEARCH_TIMEOUT).
  • Gelöschte Dateien auf NTFS: ntfsundelete --scan --match durchsucht die Einträge der Master File Table (SEARCH_DELETED=1).
  • Übersprungen werden Auslagerungsbereiche, LVM, RAID-Mitglieder, LUKS, BitLocker und ZFS.

Was Sie sehen: einen grünen Block „GESCHÜTZT – WIRD NICHT GELÖSCHT“ mit Grund und den ersten fünf Fundstellen. Die vollständige Liste liegt auf dem Stick unter wipe-reports/…_FOUND_<Seriennummer>.txt.

Laufwerke auch ohne Suche schützen – jede der drei Möglichkeiten genügt:

  • eine Datei oder ein Ordner NOWIPE, NO_WIPE, DO_NOT_WIPE oder NICHT_LOESCHEN (beliebige Endung) im Hauptverzeichnis einer Partition;
  • ein Datenträgername, der NOWIPE, NO_WIPE, KEEP oder NICHT_LOESCHEN enthält;
  • die Seriennummer des Laufwerks als Zeile in nowipe.txt auf dem Stick.

Berichte und Protokoll

Alle Berichte schreibt das Skript auf den Stick in den Ordner wipe-reports. Lässt sich der Stick nicht beschreiben, landen sie im Arbeitsspeicher und sind nach dem Ausschalten weg – dann erscheint ein gelber Hinweis.

Datei Inhalt
JJJJMMTT-HHMM_<Modell>_<Seriennummer>.txt Gesamturteil, alle Prüfpunkte, vollständige SMART-Ausgabe nachher und vorher
…_FOUND_<Seriennummer>.txt alle Fundstellen der Suche, auch gelöschte Dateien mit Inode-Nummer
log.csv eine Zeile je Laufwerk: Datum; Modell; Seriennummer; Größe; OK / WARN / BAD / HUNG / PROTECTED; Bericht

Die log.csv öffnet jede Tabellenkalkulation. Sie eignet sich als Löschprotokoll für einen ganzen Stapel.

Was wir geprüft haben – und was Sie selbst prüfen sollten

Das Skript haben wir in einer Testumgebung mit Laufwerksabbildern geprüft:

Test Ergebnis
Syntaxprüfung mit ShellCheck (Stufe „warning“) ohne Befund
Vier Abbilder gleichzeitig, zwei davon mit Zufallsdaten gelöschte Abbilder vollständig Nullen, Berichte und log.csv angelegt
Datei Users/Kunde/Projekte/Rechnung_2023.PDF, Maske rechnung* gefunden, Laufwerk geschützt, die anderen gelöscht
Markierungsdatei Nicht_Löschen.TXT (andere Schreibweise) gefunden, Laufwerk geschützt
Datenträgername MY KEEP erkannt, Laufwerk geschützt
Seriennummer in nowipe.txt mit Windows-Zeilenenden und Leerzeichen erkannt

Auf Ihrer Hardware ist es trotzdem ein neues Skript. Machen Sie den ersten Durchlauf mit einer leeren Testplatte, legen Sie bei einem zweiten Durchlauf eine Datei aus Ihrer search.txt darauf und prüfen Sie, dass die Platte geschützt bleibt. Besonders unterschiedlich verhalten sich USB-Adapter verschiedener Hersteller.

Grenzen der Station

  • Es wird alles gelöscht, was nicht geschützt ist. Ein Fehler in der search.txt – ein Tippfehler, eine zu enge Maske – kostet Daten.
  • Gesucht wird nur nach Dateinamen, nicht nach Inhalten.
  • Verschlüsselte Partitionen (BitLocker, LUKS) werden nicht durchsucht. Findet sich auf so einem Laufwerk sonst nichts, wird es gelöscht. Wer verschlüsselte Laufwerke im Stapel hat, sollte sie über nowipe.txt oder eine Markierung schützen.
  • Gelöschte Dateien findet die Station nur auf NTFS und nur, solange der Eintrag in der Master File Table noch nicht überschrieben ist.
  • Ein hängendes Laufwerk lässt sich nicht immer stoppen. Steckt ein Prozess im Kernel fest, hilft auch kill -9 nicht. Das Laufwerk bleibt dann als „HÄNGT“ stehen, die anderen arbeiten weiter.
  • Versteckte Bereiche. Einmaliges Überschreiben über die normale Schnittstelle erreicht nur den Bereich, den das Laufwerk nach außen meldet. Eine Host Protected Area (HPA), ein Device Configuration Overlay (DCO) und Sektoren in der Defektliste bleiben unberührt. Ob eine HPA eingerichtet ist, zeigt hdparm -N /dev/sdX. Warum das wichtig ist, steht in unserem Beitrag zur Datenlöschung.
  • SSD und NVMe. Bei Flash-Speichern erreicht Überschreiben die Reserve- und umgelagerten Blöcke nicht. Für SSDs sind die eingebauten Löschbefehle das Mittel der Wahl: hdparm --security-erase bzw. ATA Sanitize für SATA-SSDs, nvme format oder nvme sanitize für NVMe. Die aktuelle NIST-Richtlinie SP 800-88 Rev. 2 (September 2025) empfiehlt solche „Purge“-Verfahren, wo immer möglich, statt reinem Überschreiben. Mehrfaches Überschreiben verlangt die Richtlinie nicht mehr – für Festplatten ist ein vollständiger, geprüfter Durchgang der Maßstab.

Wann Sie besser ein Labor beauftragen

Für ein paar Platten aus dem eigenen Keller ist die Station eine gute Lösung. Ein Labor ist die bessere Wahl, wenn

  • Sie eine Löschbescheinigung je Seriennummer brauchen, etwa für einen Datenschutzbeauftragten oder Auftraggeber;
  • Laufwerke nicht mehr sauber laufen – dann liefert Überschreiben keine Sicherheit, und sie sollten per Degausser gelöscht und zerlegt werden;
  • SSDs, Notebooks mit verlöteten Speichern oder verschlüsselte Laufwerke dabei sind;
  • vor dem Löschen Daten gerettet werden müssen, die sich nicht einfach kopieren lassen.

Wir löschen Festplatten mit vollständiger Prüfung für 0,95 € je Laufwerk und bescheinigen jede Seriennummer. Festplatten, die entsorgt werden sollen, löschen und vernichten wir kostenlos.

Quellen und weiterführende Links

Lieber löschen lassen?

Wir löschen Festplatten mit Prüfung und Bescheinigung je Seriennummer – oder vernichten sie kostenlos nach der Löschung.

Löschung anfragen030-44041476

Laufwerk nachschlagen

Modell, Platinennummer oder Artikelnummer der externen Festplatte