Linux-Befehle hd & dd


© November 2020, Letzte Änd. 28.03.21

--- this page is still under construction ---

Übersicht

Hex-Dump

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....|

Mit disk dump Zeichen einfügen

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/s
Kleiner 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ührt
512 Bytes Master-Boot-Record sichern in mbr.001
dd if=/dev/sda of=mbr.001 bs=512 count=1
dd iso auf Stick
dd if=linuxmint.iso of=/dev/sdb oflag=direct bs=1048576
sdb 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.iso 
Daten 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
Partition sichern
fdisk -l /dev/sda
dd if=/dev/sda1 bs=16065b | gzip -1 > /Sicherung/win2010-11-15.gz
gzip -c < /dev/sda1 > /media/.../datei.gz
Partition zurück schreiben
dd if=/media/.../mbr.001 of=/dev/sda
MBR sichern
dd if=/dev/sda of=Sicherung/mbr.001 bs=512 count=1
MBR zurückschreiben
dd if=/media/.../mbr.001 of=/dev/sda

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 apt-get install gddrescue cd /mnt ddrescue -f -n /dev/sdb /mnt/nas/HD_M rescue.log GNU ddrescue 1.16 Press Ctrl-C to interrupt rescued: 40655 MB, errsize: 36541 kB, current rate: 0 B/s ipos: 40692 MB, errors: 710, average rate: 755 kB/s opos: 40692 MB, time since last successful read: 1 s Copying non-tried blocks... ddrescue: input file disappeared: No such file or directory ddrescue -d -f -r3 /dev/sdb /mnt/nas/HD_M rescue.log GNU ddrescue 1.16 Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 40655 MB, errsize: 36541 kB, errors: 710 Current status rescued: 40658 MB, errsize: 36607 kB, current rate: 0 B/s ipos: 40694 MB, errors: 711, average rate: 20945 B/s opos: 40694 MB, time since last successful read: 1 s Copying non-tried blocks... ddrescue: input file disappeared: No such file or directory ddrescue -d -f -r3 /dev/sdb /mnt/nas/HD_M rescue.log GNU ddrescue 1.16 Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 40658 MB, errsize: 36607 kB, errors: 711 Current status rescued: 40658 MB, errsize: 36673 kB, current rate: 0 B/s ipos: 40695 MB, errors: 712, average rate: 6894 B/s opos: 40695 MB, time since last successful read: 1 s Copying non-tried blocks... ddrescue: input file disappeared: No such file or directory ddrescue -d -f -r3 /dev/sdb /mnt/nas/HD_M rescue.log GNU ddrescue 1.16 Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 40658 MB, errsize: 36673 kB, errors: 712 Current status rescued: 40660 MB, errsize: 36739 kB, current rate: 0 B/s ipos: 40697 MB, errors: 713, average rate: 8933 B/s opos: 40697 MB, time since last successful read: 1 s Copying non-tried blocks... ddrescue: input file disappeared: No such file or directory ddrescue -d -f -r3 /dev/sdb /mnt/nas/HD_M rescue.log GNU ddrescue 1.16 Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 40660 MB, errsize: 36739 kB, errors: 713 Current status rescued: 40661 MB, errsize: 36805 kB, current rate: 6375 B/s ipos: 40697 MB, errors: 714, average rate: 6375 B/s opos: 40697 MB, time since last successful read: 0 s Copying non-tried blocks... ddrescue: input file disappeared: No such file or directory https://stackoverflow.com/questions/1423346/how-do-i-extract-a-single-chunk-of-bytes-from-within-a-file
https://linoxide.com/linux-dd-command-create-1gb-file/
https://scheible.it/fortschrittsanzeige-dd/