Würde
dd if=/dev/zero of=somepartition bs=512
auch Partitionen löschen nach somepartitionoder stoppen am Ende von somepartition?
Würde
dd if=/dev/zero of=somepartition bs=512
auch Partitionen löschen nach somepartitionoder stoppen am Ende von somepartition?
Antworten:
ddddist 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 xist der Laufwerksbuchstabe und nist 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.
ddund 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:
ddkann nicht überschreiben benachbarte Partitionen, einfach weil ddÜberschreiben nicht Partitionen, Periode .
ddschreibt einfach in dateien . Das ist es.
Nun, wenn Sie übergeben ddeine Datei , die darstellt , mehrere Partitionen, dann ddüberschreibt diese Datei . In diesem Fall wird jedoch nicht ddüber das Ende der Partition hinaus geschrieben. ddschreibt immer noch bis zum Ende der Datei und nur bis zum Ende der Datei.
Wenn Sie jedoch ddeine Datei übergeben, die nur eine Partition darstellt, ddwird nicht über das Ende dieser Partition hinaus geschrieben. Auch das hat nichts damit zu tun dd. ddschreibt 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. ddhat nichts damit zu tun.
Kurz gesagt: ddSchreibt in Dateien. Was diese Dateien darstellen, ist nicht von ddBelang. ddweiß nichts über Partitionen.
ddzum 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/sdain Ihrem Texteditor öffnen und die Daten ändern, ddunterscheidet 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.
ddist nicht so niedrig. Tatsächlich hätten die meisten Dinge, mit denen die Leute arbeiten, ddgenauso gehandhabt werden können cat. Tatsächlich catist es etwas schneller, da es größere Blöcke als ddstandardmäßig verwendet. Der gesamte Low-Level-Code befindet sich im Kernel. Und dem Fahrer ist es eigentlich egal, ob Sie ddoder verwenden cat.
dd if=/dev/zero of=/dev/sda bs=512 count=1oder dd if=/dev/zero of=/dev/sda bs=512sind 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. ddkann die Einschränkungen des Gerätetreibers nicht umgehen.
/dev/sda1werden 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.