Der Befehl Hex-Dump hd
wird dazu verwendet
z.B. Binär-Dateien in Hex-Ziffern darzustellen.
hd test.txt 00000000 40 61 62 63 64 33 34 67 68 69 6a 6b 6c 6d 6e 6f |@abcd34ghijklmno| 00000010 70 71 72 73 74 75 76 77 78 79 7a 0a 0a 0a 0a |pqrstuvwxyz....|
-v
Wenn die Datei größer wird und trotzdem alles angezeigt werden soll.
-n bytes
Anzahl angezeigter Bytes
-s offset
z.B. -s 64 oder -s 0x40
Zum Anfang
Anbei die wichtigsten Parameter für dd
- Disk Dump.
if=/Pfad
der "input file"-Pfad kann sowohl zu einer Datei of=/Pfad
wie "output file"
bs=Größe
die "block size" gibt an wieviel Bytes ein einem Stück gelesen werden. status=progress
dd gibt an wie viel Zeit verstrichen ist, vie viel kopiert wurde, count=x
Anzahl der widerholten Blöcke.
Möchte man einen Datenträger, exakt wie er grade ist, sichern,
sei es um eine 1 zu 1 Kopie zu haben oder
um eine Daten verändernde Korrekturmaßnahme rückgängig machen zu können,
ist dd
dafür gut geeignet.
Zunächst ist wichtig, erst einmal herauszubekommen,
um welches Laufwerk es sich handelt.
Dafür gibt es verschiedene Möglichkeiten.
Hier habe ich unter DEB 10 fdisk
verwendet.
su /usr/sbin/fdisk -l … Disk /dev/sdb: 4.5 MiB, 4702208 bytes, 9184 sectors Disk model: VVA FLASH Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00000000 Disk /dev/sdd: 57.9 GiB, 62176362496 bytes, 121438208 sectors Disk model: Ultra Fit Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sdd1 21952 121438207 121416256 57.9G c W95 FAT32 (LBA)
Eine Sicherung der Laufwerke sdb
und sdd
kann dann wie folgt aussehen.
Wobei a1/Downloads
das Ziel vom Benutzer a1 ist.
Das erste Beispiel ist, eine entsprechend langsame, Minimal-Konfiguration
zum Sichern eines Datenträgers. Hier /dev/sdb
.
su dd if=/dev/sdb of=backup_sdb.img 9184+0 records in 9184+0 records out 4702208 bytes (4.7 MB, 4.5 MiB) copied, 35.1943 s, 134 kB/s
Das zweite Beispiel sichert nur die ersten 512 Bytes.
su dd if=/dev/sdb bs=512 count=1 of=mbr.001 1+0 records in 1+0 records out 512 bytes copied, 0.00135707 s, 377 kB/s
Mit hd -v mbr.001
kann ich mir die ersten 512 Bytes anzeigen,
welche z.B. der MBR - Master Boot Record sein könnte.
Das dritte Beispiel ist schneller durch Blockverarbeitung
und komprimiert zusätzlich.
su dd if=/dev/sdd bs=16k status=progress | gzip -c > backup_sdd.img.gz 62160191488 bytes (62 GB, 58 GiB) copied, 1783 s, 34.9 MB/s 3794944+0 records in 3794944+0 records out 62176362496 bytes (62 GB, 58 GiB) copied, 1784.52 s, 34.8 MB/s
Man kann es auch mit den Parameter -l
realisieren
oder gänzlich ohne dd
.
dd if=/dev/sda1 bs=16065b | gzip -1 > /Sicherung/win2010-11-15.gz gzip -c < /dev/sda1 > /media/.../datei.gz
Zum Anfang
In den meisten Fällen ist Linux über einen bootbaren Datenträger zu installieren.
Um diesen Datenträger zu erstellen bietet sich folgende Sequenz an.
Wobei hier in diesem Beispiel /dev/sdc
der zu überschreibende Datenträger ist.
Zur Sicherheit sollte vor dem Mounten des Datenträgers sync
eingegeben werden.
Im Einfachsten Fall wird hier auf das Laufwerk /dev/sda
geschrieben.
Alle darauf enthaltenen Daten werden unwiderbringlich überschrieben.
dd if=/media/.../mbr.001 of=/dev/sda
Man kann auch nur einen Teil der Daten zurück schreiben. Hier 512 Bytes.
dd if=backup.001 bs=512 count=1 of=/dev/sda
Oder ein Linux-Image Geschwindigkeitsoptimiert auf einen Datenträger, hier /dev/sdc
schreiben.
su dd if=debian-live-11.2.0-amd64-xfce+nonfree.iso of=/dev/sdc bs=16384 196860+0 records in 196860+0 records out 3225354240 bytes (3.2 GB, 3.0 GiB) copied, 30.1907 s, 107 MB/s sync
Zum Anfang
Mit dd
kann man Datei-Manipulationen vornehmen.
Um das möglichst anschaulich darzustellen wird die Datei test.txt
mit den Inhalt „@abcdefghijklmnopqrstuvwxyz“ verändert.
Es werden die 8 Bytes (Adresse 00...07) übersprungen
und ab den 9. Byte (Adresse 08) werden 4 Bytes durch Zufallszahen überschrieben.
Der Rest der Datei wird nicht abgeschnitten.
dd if=/dev/urandom count=4 bs=1 seek=8 of=test.txt conv=notrunc
hd test.txt
00000000 40 61 62 63 64 65 66 67 43 8a b4 8c 6c 6d 6e 6f |@abcdefgC...lmno|
00000010 70 71 72 73 74 75 76 77 78 79 7a 0a 0a |pqrstuvwxyz..|
Nun noch ein etwas komplizierteres Beispiel, wo die Quelldatei zahl.txt
mit den Inhalt „012345678901234567890“ genutzt wird.
Es werden 3 Bytes (0, 1, 2) der Quelldatei überprungen und
die folgenden 2 Bytes in die Zieldatei (mit Offsett 5) ab der 6.Position überschrieben.
hd zahl.txt dd if=zahl.txt skip=3 count=2 bs=1 seek=5 of=test.txt conv=notrunc hd test.txt 00000000 40 61 62 63 64 33 34 67 68 69 6a 6b 6c 6d 6e 6f |@abcd34ghijklmno| 00000010 70 71 72 73 74 75 76 77 78 79 7a 0a 0a 0a 0a |pqrstuvwxyz....|Erzeugt eine Datei mit 605 MB Nullen
dd if=/dev/zero bs=1M count=605 of=605mb.001 605+0 Datensätze ein 605+0 Datensätze aus 634388480 Bytes (634 MB) kopiert, 5,60495 s, 113 MB/sKleiner Stress-Test, welchen man mehrere Male im Terminal starten kann Bei vier Kernen, wird einer je Aufruf ausgelastet.
dd if=/dev/urandom of=/dev/null dd if=/dev/urandom of=/dev/null & im Hintergrund ausgeführtdd iso auf Stick
dd if=linuxmint.iso of=/dev/sdb oflag=direct bs=1048576sdb ist USB-Stick 1048576 = 1MB Nach dem Beschreiben sollte stets synchronisiert werden. Siehe sync
ddrescue ddrecue -n -b2048 /dev/sr0 image.iso fehler.log ddrecue -d -b2048 /dev/sr0 image.iso fehler.log mount -t iso9660 image.isoDaten auf Platte löschen Partition löschen, große Leer-Datei schreiben oder bei SSD trim
dd if=/dev/urandom of=/dev/sdc1 dd if=/dev/zero of=/mnt/markus/leer.txt sync fstrim -v /dev/sdc1
Zum Anfang
cd /mnt mkdir nas mount -t cifs -o username=admin //nas-server/public nas passwort: nas4me2 dd if=/dev/sdb3 of=/mnt/nas/lw_3.001 bs=4096 dd: Lesen von „/dev/sda3“: Eingabe-/Ausgabefehler 2801065+0 Datensätze ein 2801065+0 Datensätze aus 11473162240 Bytes (11 GB) kopiert, 4104,09 s, 2,8 MB/s https://stackoverflow.com/questions/1423346/how-do-i-extract-a-single-chunk-of-bytes-from-within-a-file