Würde
dd if=/dev/zero of=somepartition bs=512
auch Partitionen löschen nach somepartition
oder stoppen am Ende von somepartition
?
Würde
dd if=/dev/zero of=somepartition bs=512
auch Partitionen löschen nach somepartition
oder stoppen am Ende von somepartition
?
Antworten:
dd
dd
ist ein sehr mächtiges aber auch gefährliches Werkzeug. Es macht, was Sie es sagen, ohne Fragen zu tun. Also, wenn Sie sagen, es soll die Familienbilder abwischen, ... und es ist ein kleiner Tippfehler weg.
Aber wenn Sie überprüfen und überprüfen, können Sie es verwenden.
dd if=/dev/zero of=somepartition bs=512
oder ich würde vorschlagen
dd if=/dev/zero of=/dev/sdxn bs=4096
Wo x
ist der Laufwerksbuchstabe und n
ist die Partitionsnummer und Blockgröße 4096 Bytes beschleunigt den Schreibvorgang.
In diesem Fall ist es wichtig, dass Sie auf eine Partition schreiben . Wenn Sie auf das gesamte Laufwerk (die Laufwerkskopfstelle) schreiben, wird das gesamte Laufwerk /dev/sdx
überschrieben. Das Schreiben auf die Partition wird jedoch am Ende der Partition unterbrochen und die dahinter liegenden Partitionen bleiben erhalten. (Ich habe es jetzt auf einem USB-Stick in Lubuntu 16.04 LTS getestet , also weiß ich, dass es so funktioniert.)
Es gibt eine Ausnahme für eine erweiterte Partition (die ein Container für logische Partitionen ist, um mehr als vier Partitionen in einer MSDOS-Partitionstabelle zu haben). Dies ist im folgenden Link beschrieben,
Kann ich mit dd ein Image einer 'erweiterten' Partition erstellen?
Es gibt aber auch ein anderes Problem. Ich habe Ihren Befehl in einer Testumgebung getestet und nur ein Kibibyte (1024 Byte) gelesen, als ich wollte, dass es ein Image einer erweiterten Partition erstellt.
Ich habe auch dies jetzt auf einem USB-Stick in Lubuntu 16.04 LTS getestet, und dies gilt sowohl für das Schreiben als auch für das Lesen. Nur das erste Kibibyte wird überschrieben.
Zusammenfassend funktioniert das Überschreiben von Primärpartitionen und logischen Partitionen entsprechend der Hauptbeschreibung in dieser Antwort. Verwenden Sie diese Methode jedoch nicht zum Überschreiben einer erweiterten Partition, da nur das erste Kibibyte überschrieben wird. Die logischen Partitionen der erweiterten Partition werden nicht mehr über die Partitionstabelle gefunden, die darin gespeicherten Daten sind jedoch noch vorhanden.
dd
und dass es riskant ist, so dass Sie sehr vorsichtig sind, wenn Sie es benutzen. Viel Glück :-) Im Allgemeinen sollten Sie immer eine Sicherungskopie aller Dateien haben, die Sie sich nicht leisten können, zu verlieren.
Schreibvorgänge auf ein Partitionsgerät werden nicht außerhalb dieser Partition mit dd oder etwas anderem geschrieben. Sie müssten ein Volldiskettengerät verwenden, um einen Effekt außerhalb einer einzelnen Partition zu erzielen.
(Vorsichtsmaßnahme: Es sei denn, Ihre Festplatte verfügt über eine Partitionstabelle mit überlappenden Partitionen. Dies sollte niemals passieren.)
Ich denke, Ihre Frage basiert auf einem grundlegenden Missverständnis darüber, wie dd
(und tatsächlich Unix-ähnliche Betriebssysteme im Allgemeinen) funktionieren:
dd
kann nicht überschreiben benachbarte Partitionen, einfach weil dd
Überschreiben nicht Partitionen, Periode .
dd
schreibt einfach in dateien . Das ist es.
Nun, wenn Sie übergeben dd
eine Datei , die darstellt , mehrere Partitionen, dann dd
überschreibt diese Datei . In diesem Fall wird jedoch nicht dd
über das Ende der Partition hinaus geschrieben. dd
schreibt immer noch bis zum Ende der Datei und nur bis zum Ende der Datei.
Wenn Sie jedoch dd
eine Datei übergeben, die nur eine Partition darstellt, dd
wird nicht über das Ende dieser Partition hinaus geschrieben. Auch das hat nichts damit zu tun dd
. dd
schreibt einfach in die Datei, in die Sie schreiben möchten. Die Tatsache, dass diese Datei eine einzelne Partition darstellt, wird (in diesem Fall) vom Block-Gerätetreiber im Kernel sichergestellt. dd
hat nichts damit zu tun.
Kurz gesagt: dd
Schreibt in Dateien. Was diese Dateien darstellen, ist nicht von dd
Belang. dd
weiß nichts über Partitionen.
dd
zum Schreiben auf unformatierte Partitionen verwenden. Sie können nur in Dateien schreiben. Sie können natürlich Schreiben auf eine Block - Device - Datei , die repräsentiert eine Partition (wie /dev/sda1
), aber Sie können nicht auf eine Raw - Partition schreiben. Und da Sie nur in eine Datei schreiben können, die eine Partition darstellt, können Sie nicht über das Ende der Partition hinaus schreiben, da die Datei nur die Partition darstellt und nicht die Partition und ein wenig über das Ende hinaus.
/dev/sda
in Ihrem Texteditor öffnen und die Daten ändern, dd
unterscheidet sich von keinem anderen Programm in Bezug auf den Zugriff auf Partitionen. Sehr gute Antwort!
Es gibt ein gefährliches, aber seltenes spezielles Szenario, in dem dies auch mit nicht fehlerhaften Block-Gerätetreibern passieren kann:
Sie müssen mit dd vorsichtig sein, denn wenn Sie einen Fehler machen, können Sie mehr überschreiben, als Sie erwartet haben, und das hängt davon ab, wofür Sie dd verwenden (das OP war in seiner Verwendung von dd und der genauen Syntax des dd vage Befehl).
Wenn Sie eine Partition angeben , wird in diese Partition geschrieben, bis die Partition voll ist.
Wenn Sie einen Fehler machen und das gesamte Laufwerk ablegen, z. B. = / dev / sda, schreibt dd anfangs auf das gesamte Laufwerk, um das Ignorieren (und Überschreiben) Ihrer Partitionstabelle zu beenden.
Sie können gelöschte Dateien auch mit dd auf einer Partition überschreiben (gelöschte Dateien verbleiben möglicherweise auf der Partition und werden von verschiedenen Wiederherstellungstools mit unterschiedlichem Erfolg erkannt, bis sie überschrieben werden. In diesem Fall können Sie mit dd den freien Speicherplatz füllen, indem Sie Schreiben in eine Datei.
dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file
Je nachdem, was Sie gerade tun, möchten Sie möglicherweise ein alternatives Tool zum sicheren Löschen von Dateien verwenden. Siehe Wie lösche ich Dateien auf sichere Weise? für optionen.
dd
ist nicht so niedrig. Tatsächlich hätten die meisten Dinge, mit denen die Leute arbeiten, dd
genauso gehandhabt werden können cat
. Tatsächlich cat
ist es etwas schneller, da es größere Blöcke als dd
standardmäßig verwendet. Der gesamte Low-Level-Code befindet sich im Kernel. Und dem Fahrer ist es eigentlich egal, ob Sie dd
oder verwenden cat
.
dd if=/dev/zero of=/dev/sda bs=512 count=1
oder dd if=/dev/zero of=/dev/sda bs=512
sind Beispiele. Mit dem zweiten Befehl wird das Schreiben fortgesetzt und die gesamte Festplatte gefüllt, wobei die Partitionstabelle ignoriert wird. Wenn Sie eine Partition angeben dd if=/dev/zero of=/dev/sda1
, geht diese nicht über die Partition hinaus. Art hängt davon ab, was Sie mit dd tun möchten.
of=somepartition
, dass der Fall, in dem Sie auf das gesamte Festplattengerät schreiben, nicht zutrifft. dd
kann die Einschränkungen des Gerätetreibers nicht umgehen.
/dev/sda1
werden vom Kernel so erstellt, dass über sie kein Zugriff auf benachbarten Speicher möglich ist (vorausgesetzt, die Partitionstabelle wurde nicht geändert, nachdem der Kernel sie das letzte Mal gelesen hat). Wenn Sie auf diese Weise auf den angrenzenden Speicher zugreifen könnten, wäre dies ein großer Fehler.