Das gesamte Ausgabegerät wird gelöscht, unabhängig davon, ob seine Größe ein Vielfaches der Blockgröße ist, an die Sie übergeben, dd
oder nicht.
Das notrunc
Flag 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 dd
und 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 /dev
Akten. Jedes Tool, das mit Binärdaten umgehen kann, wie z. B. ein modernes cat
oder head
, kann den gleichen Job dd
ausführen, es sei denn, Sie übergeben Flags wie seek
oder skip
.
Beachten Sie, dass ein von dd
und gemeinsam genutztes Problem darin cat
besteht, 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/partitions
unter 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