Wischen einer Festplatte in Teilen

2

Ich muss eine Festplatte abwischen, bevor ich sie verschenke, aber ich möchte die Möglichkeit haben, dies in Portionen zu tun, damit ich an verschiedenen Stellen in der Mitte anhalten und fortfahren kann. Wenn zum Beispiel das Löschen der Festplatte 24 Stunden dauert, ich aber nur Blöcke von 6 bis 8 Stunden pro Nacht zur Verfügung habe, möchte ich die USB-Festplatte in meinen Laptop einstecken, um über Nacht zu wischen, den Stecker herauszuziehen und meinen Laptop mitzunehmen Am Morgen, dann am nächsten Abend weitermachen, bis alles erledigt ist.

Ich benutze ddvon einem Linux-Terminal zB

$ nohup dd if=/dev/zero of=/dev/sdX bs=1M &

Ich dachte ursprünglich nur daran, den Fortschritt zu überwachen kill -USR1 ${ddpid}, den Überblick zu behalten und dann dort fortzufahren, wo ich nach Unterbrechungen aufgehört hatte. Das gefiel mir sofort nicht, da ich beim ersten Versuch die Mathematik durcheinander brachte und Zeit verlor, einen bereits abgewischten Bereich erneut abzuwischen.

Ich überlege jetzt, das Laufwerk im Voraus zu partitionieren und dann jede Partition einzeln oder paarweise zu löschen. Da es sich um eine 4-TB-Festplatte handelt, konnte ich mit die 2-TB-Grenze nicht überschreiten. Daher fdiskhabe ich gdiskneue Partitionen erstellt:

Device          Start        End   Sectors   Size Type
/dev/sdb1        2048  589826047 589824000 281.3G Linux filesystem
/dev/sdb2   589826048 1179650047 589824000 281.3G Linux filesystem
/dev/sdb3  1179650048 1769474047 589824000 281.3G Linux filesystem
/dev/sdb4  1769474048 2359298047 589824000 281.3G Linux filesystem
/dev/sdb5  2359298048 2949122047 589824000 281.3G Linux filesystem
/dev/sdb6  2949122048 3538946047 589824000 281.3G Linux filesystem
/dev/sdb7  3538946048 4128770047 589824000 281.3G Linux filesystem
/dev/sdb8  4128770048 4718594047 589824000 281.3G Linux filesystem
/dev/sdb9  4718594048 5308418047 589824000 281.3G Linux filesystem
/dev/sdb10 5308418048 5898242047 589824000 281.3G Linux filesystem
/dev/sdb11 5898242048 6488066047 589824000 281.3G Linux filesystem
/dev/sdb12 6488066048 7077890047 589824000 281.3G Linux filesystem
/dev/sdb13 7077890048 7667714047 589824000 281.3G Linux filesystem
/dev/sdb14 7667714048 7814037134 146323087  69.8G Linux filesystem

Ich ddrenne rückwärts von sdb14 nach sdb1, nur damit ich alles klarstellen kann.

Wenn ich jede Partition abgeschlossen habe, überlege ich, wieder zu fdisk / gdisk zurückzukehren und die Partition zu löschen, obwohl nicht die gesamte Festplatte gelöscht wird.

Sobald ich mit allen Partitionen fertig bin, plane ich, auch den Anfang der Festplatte zu löschen:

$ dd if=/dev/zero of=/dev/sdX bs=1M count=512

(Ich verstehe, 512 ist etwas übertrieben. Bitte geben Sie in den Kommentaren eine bessere Zahl an.)

Wird dies mein Ziel erreichen, die Festplatte Stück für Stück vollständig zu löschen, ohne dass irgendwo Lücken übersehen werden?

jia103
quelle
1
Ich würde VeraCrypt nur für eine einzelne 4-TB-Partition verwenden, den Vorgang zwischen den einzelnen Sitzungen unterbrechen und die Partition anschließend einfach entfernen. Wenn Sie die Daten verschlüsseln und dann die Partition löschen, kann nichts ohne Ihr Kennwort wiederhergestellt werden.
Ramhound
Haben Sie überprüft, ob das Laufwerk bereits ein sicheres Löschen implementiert?
Ignacio Vazquez-Abrams
Ein Hinweis zum Abrufen des Fortschritts von dd: Sie können eine neuere Version von ddmit der Option ausführen status=progressund erhalten die ganze Zeit den aktuellen Status. Die Ausgabe mit dieser Option sieht wie folgt aus : 462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s. Also keine Notwendigkeit dafür kill -USR1.
Sethos II
Wenn es sicherer wäre, / dev / urandom als Quelle zu verwenden (noch sicherer mit / dev / random, aber nicht viel sicherer und viel, viel langsamer ....).
Magnet

Antworten:

0

Über den Anfang der Platte. Die erste Partition beginnt im Sektor 2048. Sektoren sind nummeriert von 0. Die bereitgestellte gdiskAusgabe gibt es nicht explizit an, aber ich kann berechnen, dass Ihre Festplatte Sektoren der Größe verwendet 512B. Es gibt also 2048Sektoren von 512Bytes vor der ersten Partition. Dieser Befehl füllt sie mit Nullen:

dd if=/dev/zero of=/dev/sdX bs=512 count=2048

Wird dies mein Ziel erreichen, die Festplatte Stück für Stück vollständig zu löschen, ohne dass irgendwo Lücken übersehen werden?

Ich habe die Zahlen analysiert - es gibt keine Lücken zwischen Partitionen. Aber! Das GPT-Schema platziert die Backup-Partitionstabelle ganz am Ende des Datenträgers und benötigt 33Sektoren. Zusätzlich können Partitionierungswerkzeuge das Ende der letzten Partition irgendwie ausrichten (obwohl die ungerade Anzahl 146323087darauf hindeutet, dass dies hier nicht der Fall ist). Sie sollten diesen Bereich also auch über die letzte Partition hinaus abdecken:

dd if=/dev/zero of=/dev/sdX bs=512 seek=7814037135

Erwarten Sie, dass dieser Befehl fast sofort das Ende des Datenträgers erreicht.

Datenträgeroperationen verwenden Cache, daher sollten Sie syncnach alledem ausgeführt werden. Normalerweise wird der gesamte Cache geleert, wenn Sie ordnungsgemäß herunterfahren. Wenn Sie den Datenträger jedoch früher vom Computer trennen (USB trennen), gehen möglicherweise einige Änderungen verloren. Hoffen wir, dass Sie nach dem Löschen bestimmter Partitionen niemals die Verbindung auf diese Weise getrennt haben.

Danach wird Ihre gesamte Festplatte auf Null gesetzt. Das sollte reichen (lies dies und das ). Wenn es sich bei der Festplatte um eine SSD handelte, kann dies auf eine Abnutzungsbereinigung zurückzuführen sein. aber ich schätze 4 TB hier ist HDD, also gibt es kein Problem.

Kamil Maciorowski
quelle
1

Eine andere Alternative zur @KamilMaiorowski-Lösung wäre, ein Dateisystem auf / dev / sdX zu erstellen und dann leere Dateien darauf zu schreiben. Auf diese Weise können Sie auf halbem Weg anhalten und nach Belieben fortfahren, indem Sie entweder an die Datei anhängen oder eine neue schreiben. Sobald auf der Festplatte nicht mehr genügend Speicherplatz für weitere Dateien vorhanden ist, sind Sie fertig. Sie können die Dateien auch von der Festplatte löschen, sobald Sie dies getan haben.

Um dies zu tun (von einer bootfähigen Festplatte)

mkfs.ext4 /dev/sdX
mkdir /tmp/tempdisk
mount /dev/sdX /tmp/tempdisk
dd if=/dev/zero of=/tmp/tempdisk/file0.zero
Davidgo
quelle
Dies scheint ein guter Versuch zu sein, aber im Allgemeinen bin ich aus der Perspektive der Gründlichkeit noch nicht überzeugt. Unter der Annahme einer Sektorgröße von 4 KB, wenn ich zufällig Strg + C drücke, als dd in Byte 0 eines bestimmten Sektors schrieb, bleiben meiner Meinung nach 4095 Bytes unzugänglichen und nicht gelöschten Speichers übrig, der der Datei 0.zero zugewiesen, aber nie verwendet wurde und daher nicht auf Null gesetzt.
jia103
Nein, das würden Sie nicht - da die Blockgröße eines Schreibvorgangs 4 KB beträgt, wird der Schreibvorgang bei Byte 1 nicht auf die Festplatte geschrieben. Das heißt, Sie sprechen einen guten Punkt an - Sie sollten die Option bs = 4096 (oder einige) durchlaufen ein Vielfaches davon), um sicherzustellen, dass dd in Blöcken arbeitet, die ein Vielfaches der Sektorgröße sind.
Davidgo