Was ist der Unterschied zwischen 'bs', 'count' und 'seek' im Befehl dd?

24

Ich habe viele Führer und Forum - Beiträge lesen zu beschreiben , wie zu bedienen dd, aber eine Sache , die ich bemerkt habe ist , dass die Menschen immer unterschiedliche Werte für die Verwendung bs=, count=und seek=Schalter.

Bitte kann jemand erklären, was diese Schalter genau bewirken (die Manpage ist nicht sehr detailliert), und erklären, welche Einstellungen für die verschiedenen Aufgaben am besten geeignet sind, z. B. das Erstellen von Dateien aus / dev / random oder / dev / zero und das Überschreiben Partitionen und externe Laufwerke.

Eric
quelle
Probieren Sie die GNU-Dokumentation für dd oder die POSIX-Version .
Jw013

Antworten:

27

Ich weiß wirklich nicht, wie ich das besser erklären kann als die Manpage.

bs=Setzt die Blockgröße, wäre zum Beispiel bs=1M1MiB Blockgröße.

count=kopiert nur diese Anzahl von Blöcken (die Standardeinstellung ist, dass dd für immer weiterarbeitet oder bis die Eingabe erschöpft ist). Idealerweise haben Blöcke eine bs=Größe, es kann jedoch zu unvollständigen Lesevorgängen kommen. Wenn Sie also count=zum Kopieren einer bestimmten Datenmenge ( count*bs) verwenden, sollten Sie auch Folgendes angeben iflag=fullblock.

seek= Sucht diese Anzahl von Blöcken in der Ausgabe, anstatt an den Anfang des Ausgabegeräts zu schreiben.

Dies kopiert beispielsweise 1 MB Wert y\nauf Position 8 MB der Ausgabedatei. Die gesamte Dateigröße beträgt also 9 MB.

$ yes | dd bs=1M count=1 seek=8 iflag=fullblock of=outputfile
$ ls -alh outputfile
9.0M Jun  3 21:02 outputfile
$ hexdump -C outputfile
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00800000  79 0a 79 0a 79 0a 79 0a  79 0a 79 0a 79 0a 79 0a  |y.y.y.y.y.y.y.y.|
*
00900000

Da Sie /dev/randomPartitionen erwähnen und überschreiben ... wird es ewig dauern, da /dev/random(wie auch /dev/urandom) nur zu langsam ist. Sie können shred -v -n 1stattdessen einfach verwenden , das ist schnell und normalerweise überall verfügbar.

Frostschutz
quelle
21

Ok, Sie sagten, die Manpages seien nicht detailliert, deshalb erkläre ich, was sie bedeuten, mit leicht verständlichen Metaphern über einen sich bewegenden Mann (es heißt dd):

   bs=BYTES
          read and write up to BYTES bytes at a time

ddNimmt etwas auf (Kisten, Vasen, Betten, Reis usw.), bringt es dorthin, wo es sein muss, und gibt es dort ab. Bis er die Ladung nicht fallen lässt, pflückt er nichts anderes. Wenn Sie ihm nun genau mitteilen müssen, wie viele Objekte er pro Reise auswählen soll, ist dies das, was Sie bstun müssen. Sie legen die Datenmenge fest, die er lesen und schreiben soll. Dies ist in allen nützlichen und gebräuchlichen Befehlen fast obligatorisch.

   count=N
          copy only N input blocks

Dies bestimmt die Gesamtanzahl der Kisten, die er bewegen wird. Kästchen sind in diesem Zusammenhang die Blöcke auf der Festplatte . Sie fordern ihn auf, 5 Kisten zu bewegen, er bewegt nur 5 Kisten, auch wenn es mehr als 5 Kisten gibt (wenn es weniger als 5 Kisten gibt, nimmt er eine Vase, die er neben den Kisten gefunden hat, um sie zu addieren). Wenn Sie sagen , ddum countnur 5, und schreiben Sie es irgendwo, würde er die ersten fünf Blöcke kopiert er sieht und sie schreiben , wo Sie wollen.

   seek=N skip N obs-sized blocks at start of output

Der Typ findet normalerweise den ersten verfügbaren Platz, um die Ladung fallen zu lassen. Dieser befindet sich normalerweise am Anfang (der Scheibe) und füllt sich bis zum Ende. Nun, mit diesem Befehl ddbeginnen Sie weiter oben, sagen wir, anstatt in der Halle, in einem der weiter innen liegenden Räume. Es "überspringt" nur die Startblöcke.

Je nachdem, was Sie gerade tun, benötigen Sie je nach Quelle und Ziel unterschiedliche Kombinationen sowie das Format, in dem sie gelesen und geschrieben werden. Ich empfehle Ihnen, nach ihnen getrennt zu suchen.

Braiam
quelle
"Er wird eine Vase nehmen, die er neben den Kisten gefunden hat, um sie zu addieren." Wofür steht diese Metapher?
Ini
1
@Ini Wenn es einen benachbarten Block gibt, der nicht zu if read gehört, liest dd ihn und verschiebt ihn ebenfalls. Eine Vase ist keine Kiste, aber dd bewegt sie.
Braiam