Zum Inhalt springen

dd/Anwendung

Aus Foxwiki

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