Dd/Anwendung: Unterschied zwischen den Versionen
Zeile 209: | Zeile 209: | ||
sudo dd if=mbr.img of=/dev/sda bs=1 count=64 skip=446 seek=446 | sudo dd if=mbr.img of=/dev/sda bs=1 count=64 skip=446 seek=446 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Geschwindigkeit messen == | == Geschwindigkeit messen == |
Version vom 4. September 2025, 12:24 Uhr
dd/Anwendung
Beschreibung
Datei
Datei erstellen
500M große Datei erstellen
sudo dd if=/dev/zero of=/mnt/name bs=1M count=500
Fortschritt anzeigen
sudo dd status=progress if=/dev/sda of=/dev/sdb bs=4096
Daten anhängen
dd if=/dev/shm/test of=/data/sdb/test bs=1G oflag=append conv=notrunc
- Siehe auch
Datenträger
Klonen
Datenträger /dev/sda auf /dev/sdb klonen
sudo dd if=/dev/sda of=/dev/sdb bs=4096
Hier wurde eine Blocksize angegeben, um eine bessere Performance zu
- ACHTUNG
Die Datenträger sollte nicht gemountet sein!
Image erstellen
sudo dd if=/dev/DEVICE of=FILE
- Achtung
Das Gerät sollte nicht gemountet sein
- Beispiel
sudo dd if=/dev/dvd of=dvd.img
CD in ein Imagefile schreiben
Genauso wie von Disketten lassen sich auch von CDs Images erstellen: dd if=cd-laufwerk of=image file Achtung, das CD-Laufwerk darf nicht gemountet sein!
sudo dd if=/dev/cdrom of=cdrom.img
Imagefile mounten
sudo mount -o loop imagefile ziel
Das Imagefile kann so wie eine Festplatte / ein Verzeichnis behandelt werden
- Sehr praktisch, um zum Beispiel ein CD-Abbild als "virtuelles CD-Laufwerk" zu benutzen
- Geht natuerlich auch mit anderen Imagedateien, zum Beispiel Diskettenimages oder Festplattenimages
sudo mount -o loop /tmp/cd-image.img /mnt/virtualCD
Komprimiertes Image erstellen
- Komprimiertes Image von einer Festplatte oder Partition erstellen
Um von einer Festplattenpartition ein Backup zu machen, ist dieser Befehl sinnvoll
- Durch die Komprimierung kann oft ca. die Häfte des Platzes gespart werden
sudo dd if=partition/festplatte bs=64k |gzip -c >dateiname.img.gz
Erste Partition der ersten Festplatte
sudo dd if=/dev/sda1 bs=64k |gzip -c >/tmp/sda1.img.gz
Verschlüsselt auf entfernten Rechner
sudo dd if=/dev/sda1 bs=64k |gzip -c | ssh user@rechner2 'cat >/tmp/rechner1.hda1.img.gz'
Komprimiertes Image zurückschreiben
sudo cat dateiname.gz |gzip -d | dd of=festplatte bs=64k
- Beispiel
sudo cat /tmp/sda1.img.gz |gzip -d | dd of=/dev/sda1 bs=64k
Beispiel 4
ssh user@rechner2 'cat /tmp/rechner2.hda1.img.gz' |gzip -d | dd of=/dev/sda1 bs=64k
README
Dd erstellen 1:1-Kopien von Datenträgern aller Art und rettet so etwa die Daten von kränkelnden Festplatten
- Das Tool Mkisofs sammelt Daten aus dem Verzeichnisbaum und schreibt sie in ein ISO-Image
- So lassen sich Backups auf CD/DVD sichern oder bootfähige Medien erzeugen
Komprimiertes Backup
- Backup
sudo dd if=/dev/sda1 | gzip > /tmp/sda1.gz
- Restore
sudo gunzip -c /tmp/image.gz | dd of=/dev/sda1
Überschreiben
- Mit Zufallszahlen überschreiben
sudo dd if=/dev/urandom of=/dev/sda
Beispiel
- Backup
Dateisysteme sichern, auch wenn Linux diese nicht lesen kann
sudo dd if=QUELLE of=ZIEL [OPTIONEN]
- QUELLE und ZIEL
QUELLE und ZIEL können hierbei sowohl ein Device als auch eine Datei sein
- Werden keine weiteren Optionen angegeben, so werden alle Daten aus QUELLE gelesen
- Handelt es sich bei QUELLE um eine Partition, wird deren gesamter Inhalt kopiert
sudo dd if=/dev/sda of=/dev/sdc
Im Beispiel wird die gesamte erste Festplatte (/dev/sda) des Systems auf die dritte (/dev/sdc) kopiert
- Es sollte jedem bewusst sein, dass der alte Inhalt der dritten Festplatte damit überschrieben wird
- Auch sollte diese über die gleiche Kapazität wie die erste Platte verfügen (sonst muss man sich die Anzahl der kopierten Bytes merken)
- Um die Daten später zurückzuspielen, vertauscht man die Angaben von QUELLE und ZIEL
Ist das Ziel einer Kopieraktion eine Datei, könnte bei Kernel-Versionen <2.4 die Beschränkung der Dateigröße von 2 GB unser Vorhaben zunichte machen, in einem solchen Fall muss die QUELLE auf mehrere Zieldateien aufgeteilt werden
- Hierzu benötigt dd mehrere Optionen
- Mit bs=BYTES muss die Anzahl Bytes, die in einem Schritt zu lesen oder schreiben sind, angegeben werden
- Wieviele Schritte getätigt werden sollen, legt die Option count=ANZAHL fest
- Um bspw. den Masterbootsektor (Mbr) der ersten Festplatte in eine Datei zu schreiben, könnte man folgenden Aufruf verwenden
sudo dd if=/dev/sda of=/tmp/mbr.save bs=512 count=1
Um jetzt den Superblock (1 k groß) der ersten Partition zu sichern, müssen sowohl Mbr als auch der 512 Bytes lange Bootsektor (also zwei Blöcke) übersprungen werden
- Hierzu verwendet man die Option skip=ANZAHL
sudo dd if=/dev/sda of=/dev/superblock.save bs=512 count=2 skip=2
Wenn dd seine Arbeit verrichtet hat, gibt es eine Statistik aus
3385223+0 records in
3385223+0 records out
1733234176 bytes (1.7 GB) copied, 6.42173 seconds, 270 MB/s
Mit Hilfe des Signals SIGUSR1(10) kann dd auch während der Arbeit eine Statistik ausgeben
sudo kill -10 $pid
<!--
dd if=/dev/zero of=/dev/null count=10MB & pid=$!
-->
== Bootsektor ==
Master Boot Record ==
Der dd-Befehl ist auch geeignet, um den Master Boot Record einer Festplatte auszulesen und in eine Datei zu schreiben
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=festplatte of=dateiname bs=512 count=1
- Beispiel
sudo '''dd if=/dev/sda of=/tmp /mbr.img bs=512 count=1'''
- Zurückschreiben
sudo dd if=dateiname of=festplatte bs=512 count=1
Den mit dem vorigen Befehl gesicherten MBR kann man natuerlich auch wieder auf eine Festplatte zurueckschreiben
- Beispiel
sudo dd if=/tmp/mbr.img of=/dev/sda bs=512 count=1
- Backup eines MBR erstellen
sudo dd if=/dev/sda bs=512 count=1 of=/tmp/mbr.bin
Partitionstabelle wiederherstellen
- Primäre Partitionstabelle wiederherstellen, ohne MBR zu überschreiben
sudo dd if=mbr.img of=/dev/sda bs=1 count=64 skip=446 seek=446
Geschwindigkeit messen
Datenträgergeschwindigkeit messen
- Betriebssystem-Cache abschalten
Um die Geschwindigkeiten eines Datenträgers zu testen, sollte der Cache des Betriebssystems abgeschaltet werden
Lese-Cache | iflag=sync |
Schreib-Cache | oflag=sync |
- Schreibgeschwingigkeit
sudo dd if=/dev/zero of=/tmp/lesetest bs=1M count=1000 oflag=sync
- Lesegeschwindigkeit
sudo dd if=/tmp/lesetest of=/dev/null iflag=sync
Anhang
Siehe auch
Links
Weblinks