Ich überschreibe meine Festplatte mit zufälligen Daten unter Verwendung der guten alten dd
:
dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512
Es ist ein 2-TB-Array und mein MacBook (unter Linux, ok?) Kann nur Daten mit etwa 3,7 MB / s schreiben, was ziemlich erbärmlich ist, da ich gesehen habe, wie mein Desktop zu Hause 20 MB / s erreicht. Wenn ich heute Abend nach Hause gehe, möchte ich den dd
Lauf hier stoppen , mit nach Hause nehmen und sehen, welche Fortschritte mit einer leistungsstärkeren Maschine über Nacht erzielt werden können.
Ich habe den Fortschritt mit einer einfachen Schleife überwacht:
while true; do kill -USR1 $PID ; sleep 10 ; done
Die Ausgabe sieht folgendermaßen aus:
464938971+7 records in
464938971+7 records out
238048755782 bytes (238 GB) copied, 64559.6 s, 3.7 MB/s
Wenn ich den dd
Pass zu Hause wieder aufnehmen würde, wie würde ich ihn neu starten? Ich kenne den seek
Parameter, aber worauf zeige ich ihn, die Datensatznummer oder die Anzahl der Bytes?
seek=464938960
Antworten:
Wie @don_crissti bereits kommentiert hat, verwenden Sie einfach
seek=
, um fortzufahren .GNU dd
Unterstützt auch die Suche in Bytes, sodass Sie unabhängig von der Blockgröße genau fortfahren können:Eine größere Blockgröße sollte bei Geschwindigkeiten auch für langsame Geräte wie helfen
/dev/urandom
.Wenn Sie nach schnelleren Alternativen suchen, können Sie
cryptsetup plainOpen
mit einem zufälligen Schlüssel und einer Null, die/dev/urandom
um eine Größenordnung (ohne AES-NI) schlagen oder sogar mit voller Geschwindigkeit (mit AES-NI) laufen sollte.Sie können auch verwenden,
shred -n 1
wenn Pseudozufallsdaten für Ihren Anwendungsfall ausreichend sind.shred
sollte in der Lage sein, die volle Festplattengeschwindigkeit auch auf einem sehr langsamen Computer zu nutzen.quelle
plainOpen
bis jetzt nicht. Groß! Ich habe mein Scrambling eines 2-TB-Laufwerks in ungefähr 4 Stunden beendet, im Gegensatz zu 256 GB in über 12 Stunden/dev/urandom
.Nur eine Erinnerung für Leute, die lieber kopieren als nur Datenträger zufällig auswählen möchten (was nicht so häufig vorkommt): Sie können
skip=BLOCKS
damit beginnen , an der richtigen Position zu lesen und an der richtigen Positionseek=BLOCKS
zu schreiben . Beide Optionen verwenden Blöcke, keine Bytes. Beim Unterbrechen / Neustarten ist es ratsam, für alle Fälle eine Reihe von Blöcken zu entfernen. In der Regel lohnt es sich, denbs
Wert über 512 zu erhöhen , da Sie eine bessere Leistung erzielen können, wenn Sie viele Daten hintereinander lesen.In Ihrem Fall handelt es sich tatsächlich um einen Blockwert, an den Sie übergeben müssen
seek
. Vielleicht sollten Sie versuchen, sich anzupassen, umbs
zu sehen, ob Sie die Geschwindigkeit verbessern können, da dies/dev/random
schnell gehen sollte (pseudozufällig und nicht blockierend, wenn keine Entropie verfügbar ist).quelle
dd
Bei einer winzigen Blockgröße von 512 Byte ist dies wahrscheinlich viel langsamer als der maximale Durchsatz Ihrer Festplatte. Verwenden Sie eine höhere Blockgröße (ich würde sagen, ein paar MB) für eine gute Leistung. Oder verwendencat
- unter Linux war ichcat
genauso schnell wiedd
mit der optimalen Blockgröße, wenn eine einzelne Festplatte beteiligt war (ich weiß nicht, ob dies auch für OSX gilt).Um herauszufinden, wie weit es gekommen
cat
ist, führen Sie aus,lsof -p1234
wobei 1234 die Prozess-ID descat
Prozesses ist.Verwenden Sie, um von einer Position fortzufahren
Dabei ist 123456 der Offset in Bytes.
quelle
Klonen einer Festplatte:
Wenn Sie diese Antwort aus diesem Thread erweitern, können Sie auf folgende Weise eine ganze Festplatte klonen und fortfahren:
Dieses Beispiel ist für das Kopieren von einem Drehantrieb mit 5400 U / min auf eine SSD auf einem bestimmten System optimiert.
gdd
repräsentiertGNU dd
:Ich kann dies auf zwei Arten wieder aufnehmen:
Oder:
Im ersten Beispiel verwenden wir
59011
und nicht59012
, weil59011
so viele blockgroße Datensätze vollständig kopiert wurden, bevor sie unterbrochen wurden. (Aufzeichnungen aus).quelle