dd Befehl bs Option am Ende der Festplatte

10

Wenn ich den ddBefehl wie folgt verwenden würde:

dd if=/dev/zero of=/dev/sdX bs=16M

Was passiert am Ende der Festplatte, wenn es sich nicht um ein genaues Vielfaches von 16 MB handelt? Bedeutet das, dass der letzte verbleibende Teil der Festplatte nicht auf Null gesetzt ist?

Ich habe in https://www.marksanborn.net/howto/wiping-a-hard-drive-with-dd/ bemerkt , dass er schreibt, dass die US-Regierung verwendet

dd if=/dev/urandom of=/dev/sda bs=8b conv=notrunc

Ist die conv=notruncOption der Weg, um sicherzustellen, dass jedes letzte Byte gelöscht wird?


quelle

Antworten:

12

Das gesamte Ausgabegerät wird gelöscht, unabhängig davon, ob seine Größe ein Vielfaches der Blockgröße ist, an die Sie übergeben, ddoder nicht.

Das notruncFlag hat keine Auswirkung, wenn die Ausgabe eine Gerätedatei ist, da das Abschneiden einer Gerätedatei keine Auswirkung hat. Wenn die Ausgabe eine reguläre Datei wäre, hätte dies zur Folge, dass die Ausgabedatei vor dem Schreiben nicht abgeschnitten wird, was bei einigen Dateisystemen bedeutet, dass die alten Daten überschrieben werden (im Gegensatz zum Schreiben neuer Datenblöcke und dem Verbleib des Restes). Dies wäre jedoch nicht nützlich, da diese Eigenschaft nicht von allen Dateisystemen garantiert wird und der Befehl außerdem nicht nur die Datei überschreibt, sondern auch so lange schreibt, bis die Ausgabediskette gefüllt ist (oder ein anderer Fehler auftritt).

Anstatt zu verwenden ddund sich Gedanken darüber zu machen, ob Sie es richtig verwenden (wie es passiert, funktioniert es in diesem speziellen Fall, aber es ist kompliziert und funktioniert manchmal nicht ), verwenden Sie einfachcat .

cat /dev/zero >/dev/sdX

Trotz der weit verbreiteten Meinung im Web gibt es absolut keine Magie dd, die es irgendwie besser geeignet macht, auf eine Festplatte zu schreiben. Die Magie liegt in den /devAkten. Jedes Tool, das mit Binärdaten umgehen kann, wie z. B. ein modernes catoder head, kann den gleichen Job ddausführen, es sei denn, Sie übergeben Flags wie seekoder skip.

Beachten Sie, dass ein von ddund gemeinsam genutztes Problem darin catbesteht, dass bei erfolgreichem Betrieb der Fehler "Kein Speicherplatz mehr auf dem Gerät" (ENOSPC) auftritt. Wenn Sie dies in ein Skript einfügen, müssen Sie entweder überprüfen, ob der Fehler ENOSPC ist, oder eine andere Methode verwenden. Eine zuverlässigere Methode besteht darin, zuerst die Größe des Geräts zu bestimmen (z. B. /proc/partitionsunter Linux) und dann mit einem Tool wie z. B. genau die richtige Anzahl von Bytes zu schreiben head.

size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX
Gilles 'SO - hör auf böse zu sein'
quelle
8

Es gibt kein Problem - ddSchreibvorgänge bis zum Ende ( No space left on device), es sei denn, die Eingabe geht zur Neige, wird durch begrenzt count=xoder es tritt ein anderer Fehler auf (z. B. fehlerhafte Sektoren, mieses Kabel usw.).

Wenn das Überschreiben eines gesamten Blockgeräts Ihr Ziel ist, shredist es einfacher zu verwenden.

shred -v -n 1 /dev/deleteme     # pseudorandom data
shred -v -n 0 -z /dev/deleteme  # zeroes

Oder cryptsetupfür zufällige Daten mit einem Überprüfungsschritt (Nullen werden zu zufälligen Daten verschlüsselt; zufällige Daten werden zurück zu Nullen entschlüsselt).

Oder blkdiscardfür SSDs.

Oder wipefswenn es nur darum geht, von vorne zu beginnen und nicht alles, was Sie jemals auf einem Laufwerk gespeichert haben, gewaltsam loszuwerden.

Frostschutz
quelle