Zum Inhalt springen

Dd/Anwendung: Unterschied zwischen den Versionen

Aus Foxwiki
Die 5 zuletzt angesehenen Seiten:  IPv6 » Rmdir » Datenspeicher » Firewall/Demilitarisierte Zone » dd/Anwendung
K Textersetzung - „line>“ durch „line copy>“
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 3: Zeile 3:
=== Beschreibung ===
=== Beschreibung ===
===Backup eines MBR erstellen===
===Backup eines MBR erstellen===
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/dev/hda bs=512 count=1 of=/tmp/mbr.bin
sudo dd if=/dev/hda bs=512 count=1 of=/tmp/mbr.bin
</syntaxhighlight>
</syntaxhighlight>
Zeile 9: Zeile 9:
=== Komprimiertes Backup einer Partition ===
=== Komprimiertes Backup einer Partition ===
; Backup
; Backup
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/dev/sda1 | gzip > /tmp/sda1.gz
sudo dd if=/dev/sda1 | gzip > /tmp/sda1.gz
</syntaxhighlight>
</syntaxhighlight>


; Restore
; Restore
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo gunzip -c /tmp/image.gz | dd of=/dev/hda1
sudo gunzip -c /tmp/image.gz | dd of=/dev/hda1
</syntaxhighlight>
</syntaxhighlight>
Zeile 20: Zeile 20:
=== Datenträger klonen ===
=== Datenträger klonen ===
Datenträger /dev/sda auf /dev/sdb klonen
Datenträger /dev/sda auf /dev/sdb klonen
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/dev/sda of=/dev/sdb bs=2048
sudo dd if=/dev/sda of=/dev/sdb bs=2048
</syntaxhighlight>
</syntaxhighlight>
Zeile 32: Zeile 32:


=== Fortschritt anzeigen ===
=== Fortschritt anzeigen ===
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd status=progress if=/dev/hda of=/dev/hdb bs=2048
sudo dd status=progress if=/dev/hda of=/dev/hdb bs=2048
</syntaxhighlight>
</syntaxhighlight>


=== Datenträger-Image erstellen ===
=== Datenträger-Image erstellen ===
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/dev/sda1 | pv -s18G | gzip | ssh -p2227 root@mx10.foxtom.de "dd of=/media/daten/backup/mx50sda1.gz"
sudo dd if=/dev/sda1 | pv -s18G | gzip | ssh -p2227 root@mx10.foxtom.de "dd of=/media/daten/backup/mx50sda1.gz"
</syntaxhighlight>
</syntaxhighlight>


===Datenträger mit zufälliger Zeichenfolge überschreiben===
===Datenträger mit zufälliger Zeichenfolge überschreiben===
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/dev/urandom of=/dev/sda
sudo dd if=/dev/urandom of=/dev/sda
</syntaxhighlight>
</syntaxhighlight>


===Datei erstellen===
===Datei erstellen===
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/dev/zero of=/mnt/name bs=1M count=500
sudo dd if=/dev/zero of=/mnt/name bs=1M count=500
</syntaxhighlight>
</syntaxhighlight>
Zeile 60: Zeile 60:


; Schreibgeschwingigkeit
; Schreibgeschwingigkeit
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/dev/zero of=/tmp/lesetest bs=1M count=1000 oflag=sync
sudo dd if=/dev/zero of=/tmp/lesetest bs=1M count=1000 oflag=sync
</syntaxhighlight>
</syntaxhighlight>


; Lesegeschwindigkeit
; Lesegeschwindigkeit
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/tmp/lesetest of=/dev/null iflag=sync
sudo dd if=/tmp/lesetest of=/dev/null iflag=sync
</syntaxhighlight>
</syntaxhighlight>
Zeile 71: Zeile 71:
=== Datenträger ===
=== Datenträger ===
==== Imagefile erstellen ====
==== Imagefile erstellen ====
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/dev/DEVICE of=FILE
sudo dd if=/dev/DEVICE of=FILE
</syntaxhighlight>
</syntaxhighlight>
Zeile 81: Zeile 81:


; Beispiel
; Beispiel
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/dev/dvd of=dvd.img
sudo dd if=/dev/dvd of=dvd.img
</syntaxhighlight>
</syntaxhighlight>
Zeile 87: Zeile 87:
; Eine CD in ein Imagefile schreiben
; Eine 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!
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!
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/dev/cdrom of=cdrom.img
sudo dd if=/dev/cdrom of=cdrom.img
</syntaxhighlight>
</syntaxhighlight>


; Ein Imagefile mounten
; Ein Imagefile mounten
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo mount -o loop imagefile ziel
sudo mount -o loop imagefile ziel
</syntaxhighlight>
</syntaxhighlight>


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
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
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo mount -o loop /tmp/cd-image.img /mnt/virtualCD
sudo mount -o loop /tmp/cd-image.img /mnt/virtualCD
</syntaxhighlight>
</syntaxhighlight>
Zeile 103: Zeile 103:
=== Master Boot Record ===
=== Master Boot Record ===
Der dd-Befehl ist auch geeignet, um den Master Boot Record einer Festplatte auszulesen und in eine Datei zu schreiben.
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>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=festplatte of=dateiname bs=512 count=1
sudo dd if=festplatte of=dateiname bs=512 count=1
</syntaxhighlight>
</syntaxhighlight>


; Beispiel
; Beispiel
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo '''dd if=/dev/hda of=/tmp /mbr.img bs=512 count=1'''
sudo '''dd if=/dev/hda of=/tmp /mbr.img bs=512 count=1'''
</syntaxhighlight>
</syntaxhighlight>


; Zurückschreiben
; Zurückschreiben
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=dateiname of=festplatte bs=512 count=1
sudo dd if=dateiname of=festplatte bs=512 count=1
</syntaxhighlight>
</syntaxhighlight>
Zeile 119: Zeile 119:


; Beispiel
; Beispiel
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/tmp/mbr.img of=/dev/hda bs=512 count=1
sudo dd if=/tmp/mbr.img of=/dev/hda bs=512 count=1
</syntaxhighlight>
</syntaxhighlight>
Zeile 125: Zeile 125:
==== Primäre Partitionstabelle wiederherstellen ====
==== Primäre Partitionstabelle wiederherstellen ====
; Primäre Partitionstabelle wiederherstellen, ohne MBR zu überschreiben  
; Primäre Partitionstabelle wiederherstellen, ohne MBR zu überschreiben  
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=mbr.img of=/dev/hda bs=1 count=64 skip=446 seek=446
sudo dd if=mbr.img of=/dev/hda bs=1 count=64 skip=446 seek=446
</syntaxhighlight>
</syntaxhighlight>
Zeile 132: Zeile 132:
; Komprimiertes Image von einer Festplatte oder Partition 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
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
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=partition/festplatte bs=64k |gzip -c >dateiname.img.gz
sudo dd if=partition/festplatte bs=64k |gzip -c >dateiname.img.gz
</syntaxhighlight>
</syntaxhighlight>
Zeile 138: Zeile 138:
==== Beispiel 1 ====
==== Beispiel 1 ====
Erste Partition der ersten. Festplatte
Erste Partition der ersten. Festplatte
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/dev/sda1 bs=64k |gzip -c >/tmp/sda1.img.gz
sudo dd if=/dev/sda1 bs=64k |gzip -c >/tmp/sda1.img.gz
</syntaxhighlight>
</syntaxhighlight>


==== Beispiel 2 (Verschlüsselt auf entfernten Rechner übertragen) ====
==== Beispiel 2 (Verschlüsselt auf entfernten Rechner übertragen) ====
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo dd if=/dev/hda1 bs=64k |gzip -c | ssh [mailto:user@rechner user@rechner2] 'cat >/tmp/rechner1.hda1.img.gz'
sudo dd if=/dev/hda1 bs=64k |gzip -c | ssh [mailto:user@rechner user@rechner2] 'cat >/tmp/rechner1.hda1.img.gz'
</syntaxhighlight>
</syntaxhighlight>


; Komprimiertes Image zurückschreiben ====
; Komprimiertes Image zurückschreiben ====
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo cat dateiname.gz |gzip -d | dd of=festplatte bs=64k
sudo cat dateiname.gz |gzip -d | dd of=festplatte bs=64k
</syntaxhighlight>
</syntaxhighlight>


==== Beispiel 3 ====
==== Beispiel 3 ====
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo cat /tmp/hda1.img.gz |gzip -d | dd of=/dev/hda1 bs=64k
sudo cat /tmp/hda1.img.gz |gzip -d | dd of=/dev/hda1 bs=64k
</syntaxhighlight>
</syntaxhighlight>


==== Beispiel 4 ====
==== Beispiel 4 ====
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
ssh [mailto:user@rechner2 user@rechner2] 'cat /tmp/rechner2.hda1.img.gz' |gzip -d | dd of=/dev/hda1 bs=64k
ssh [mailto:user@rechner2 user@rechner2] 'cat /tmp/rechner2.hda1.img.gz' |gzip -d | dd of=/dev/hda1 bs=64k
</syntaxhighlight>
</syntaxhighlight>
Zeile 167: Zeile 167:
* So lassen sich Backups auf CD/DVD sichern oder bootfähige Medien erzeugen
* So lassen sich Backups auf CD/DVD sichern oder bootfähige Medien erzeugen


==== Daten-CDs oder -DVD ====
=== Daten-CDs oder -DVD ===
Zum Brennen von Daten-CDs oder -DVDs stehen auf der Kommandozeile mehrere Anwendungen zur Verfügung
Zum Brennen von Daten-CDs oder -DVDs stehen auf der Kommandozeile mehrere Anwendungen zur Verfügung
* Bevor es jedoch ans eigentliche Brennen geht, muss ein so genanntes <span >'''Joliet'''</span>-Erweiterungen, erzeugt Images für bootbare Medien und Dateien und kann automatische Backups anlegen, wobei es einzelne Dateien ausschließt
* Bevor es jedoch ans eigentliche Brennen geht, muss ein so genanntes <span >'''Joliet'''</span>-Erweiterungen, erzeugt Images für bootbare Medien und Dateien und kann automatische Backups anlegen, wobei es einzelne Dateien ausschließt
Zeile 182: Zeile 182:


Dd erstellt 1:1-Kopien von Datenträgern. Egal ob Festplattenpartitionen, CDs oder DVDs -- Dd liest und schreibt zuverlässig blockweise. Da Dd diese <span >'''Blöcke'''</span> nicht verarbeitet oder interpretiert, spielt es keine Rolle, um welches Dateisystem es sich handelt. Sogar vor Festplatten mit Fehlern schreckt Dd nicht zurück (siehe Abschnitt "Letzte Rettung"). Der einfache Aufruf für Dd lautet:
Dd erstellt 1:1-Kopien von Datenträgern. Egal ob Festplattenpartitionen, CDs oder DVDs -- Dd liest und schreibt zuverlässig blockweise. Da Dd diese <span >'''Blöcke'''</span> nicht verarbeitet oder interpretiert, spielt es keine Rolle, um welches Dateisystem es sich handelt. Sogar vor Festplatten mit Fehlern schreckt Dd nicht zurück (siehe Abschnitt "Letzte Rettung"). Der einfache Aufruf für Dd lautet:
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
</syntaxhighlight>
  dd if=''Quelle'' of=''Ziel''
  dd if=''Quelle'' of=''Ziel''
Zeile 189: Zeile 189:


Über ''if'' geben Sie also an, von wo Dd die Daten liest, und hinter ''of'' definieren Sie die Ausgabe. Als Quelle und Ziel dienen oft ein Gerät, wie eine Festplatte(npartition) oder ein CD-/DVD-Laufwerk. Alternativ geben Sie nach dem Gleichheitszeichen eine Datei an. Um etwa die Festplattenpartition ''hda1'' 1:1 nach ''/dev/hdb1'' zu kopieren, tippen Sie:
Über ''if'' geben Sie also an, von wo Dd die Daten liest, und hinter ''of'' definieren Sie die Ausgabe. Als Quelle und Ziel dienen oft ein Gerät, wie eine Festplatte(npartition) oder ein CD-/DVD-Laufwerk. Alternativ geben Sie nach dem Gleichheitszeichen eine Datei an. Um etwa die Festplattenpartition ''hda1'' 1:1 nach ''/dev/hdb1'' zu kopieren, tippen Sie:
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
</syntaxhighlight>
  dd if=/dev/hda1 of=/dev/hdb1
  dd if=/dev/hda1 of=/dev/hdb1


Ebenso können Sie Dd dazu verwenden, schnell eine CD oder DVD auf der Kommandozeile zu kopieren. Ein entsprechendes ISO-Image erstellen Sie beispielsweise über:
Ebenso können Sie Dd dazu verwenden, schnell eine CD oder DVD auf der Kommandozeile zu kopieren. Ein entsprechendes ISO-Image erstellen Sie beispielsweise über:
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
</syntaxhighlight>
  $ dd if=/dev/hdc of=abbild.iso
  $ dd if=/dev/hdc of=abbild.iso
Zeile 205: Zeile 205:
=== Optimieren mit Optionen ===
=== Optimieren mit Optionen ===
Das Programm Dd bringt einige Schalter mit. Ein praktischer Parameter, der die Arbeit des Programms maßgeblich beschleunigt, ist ''bs'' (englisch "block size" = Blockgröße). Standardmäßig arbeitet Dd mit 512 Byte großen Blöcken -- es liest jeweils 512 Bytes ein und schreibt diese in die Ausgabedatei. Wählen Sie größere Blöcke, arbeitet Dd dementsprechend schneller. So sorgt der Aufruf:
Das Programm Dd bringt einige Schalter mit. Ein praktischer Parameter, der die Arbeit des Programms maßgeblich beschleunigt, ist ''bs'' (englisch "block size" = Blockgröße). Standardmäßig arbeitet Dd mit 512 Byte großen Blöcken -- es liest jeweils 512 Bytes ein und schreibt diese in die Ausgabedatei. Wählen Sie größere Blöcke, arbeitet Dd dementsprechend schneller. So sorgt der Aufruf:
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
</syntaxhighlight>
  dd if=/dev/hda1 of=/dev/hdb1 bs=2k
  dd if=/dev/hda1 of=/dev/hdb1 bs=2k


dafür, dass Dd die Partition in 2 KByte (2048 Bytes) großen Blöcken kopiert. Unterschreitet der letzte Block die angegebene Blockgröße, füllt Dd ihn nicht auf:
dafür, dass Dd die Partition in 2 KByte (2048 Bytes) großen Blöcken kopiert. Unterschreitet der letzte Block die angegebene Blockgröße, füllt Dd ihn nicht auf:
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
</syntaxhighlight>
  $ dd if=/dev/hda1 of=/dev/hdb1 bs=6k
  $ dd if=/dev/hda1 of=/dev/hdb1 bs=6k
Zeile 220: Zeile 220:


Neben der Blockgröße können Sie angeben, wie viele dieser Blöcke Dd lesen soll: Um 40 MByte zu kopieren, schreiben Sie ''bs=1M count=40''. Dabei spezifiziert die Option ''count'' die Anzahl der Blöcke. Das macht beispielsweise Sinn, wenn Sie den Boot-Sektor einer Festplatte sichern wollen -- Sie kopieren in diesem Fall nur den ersten, 512 Bytes großen Block mit dem Aufruf:
Neben der Blockgröße können Sie angeben, wie viele dieser Blöcke Dd lesen soll: Um 40 MByte zu kopieren, schreiben Sie ''bs=1M count=40''. Dabei spezifiziert die Option ''count'' die Anzahl der Blöcke. Das macht beispielsweise Sinn, wenn Sie den Boot-Sektor einer Festplatte sichern wollen -- Sie kopieren in diesem Fall nur den ersten, 512 Bytes großen Block mit dem Aufruf:
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
</syntaxhighlight>
  dd if=/dev/hda of=bootsektor bs=512 count=1
  dd if=/dev/hda of=bootsektor bs=512 count=1
Zeile 228: Zeile 228:


Da Dd standardmäßig zerstörte Sektoren von der Kopie ausschließt, setzen Sie die Parameter ''conv=noerror,sync'' ein:
Da Dd standardmäßig zerstörte Sektoren von der Kopie ausschließt, setzen Sie die Parameter ''conv=noerror,sync'' ein:
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
</syntaxhighlight>
  dd bs=512 conv=noerror,sync if=/dev/hda of=/dev/hdb
  dd bs=512 conv=noerror,sync if=/dev/hda of=/dev/hdb
Zeile 239: Zeile 239:
=== Siehe auch ===
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
==== Links ====
=== Links ===
===== Weblinks =====
==== Weblinks ====


{{DEFAULTSORT:dd/Anwendung}}
{{DEFAULTSORT:dd/Anwendung}}

Aktuelle Version vom 11. Mai 2025, 13:47 Uhr

dd/Anwendung

Beschreibung

Backup eines MBR erstellen

sudo dd if=/dev/hda bs=512 count=1 of=/tmp/mbr.bin

Komprimiertes Backup einer Partition

Backup
sudo dd if=/dev/sda1 | gzip > /tmp/sda1.gz
Restore
sudo gunzip -c /tmp/image.gz | dd of=/dev/hda1

Datenträger klonen

Datenträger /dev/sda auf /dev/sdb klonen

sudo dd if=/dev/sda of=/dev/sdb bs=2048

Hier wurde eine Blocksize angegeben, um eine bessere Performance zu

ACHTUNG

Die Datenträger SOLLTEN nicht gemountet sein!

Fortschritt anzeigen

sudo dd status=progress if=/dev/hda of=/dev/hdb bs=2048

Datenträger-Image erstellen

sudo dd if=/dev/sda1 | pv -s18G | gzip | ssh -p2227 root@mx10.foxtom.de "dd of=/media/daten/backup/mx50sda1.gz"

Datenträger mit zufälliger Zeichenfolge überschreiben

sudo dd if=/dev/urandom of=/dev/sda

Datei erstellen

sudo dd if=/dev/zero of=/mnt/name bs=1M count=500

Geschwindigkeit

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

Datenträger

Imagefile 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
Eine 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
Ein 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

Master Boot Record

Der dd-Befehl ist auch geeignet, um den Master Boot Record einer Festplatte auszulesen und in eine Datei zu schreiben.

sudo dd if=festplatte of=dateiname bs=512 count=1
Beispiel
sudo '''dd if=/dev/hda 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/hda bs=512 count=1

Primäre Partitionstabelle wiederherstellen

Primäre Partitionstabelle wiederherstellen, ohne MBR zu überschreiben
sudo dd if=mbr.img of=/dev/hda bs=1 count=64 skip=446 seek=446

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

Beispiel 1

Erste Partition der ersten. Festplatte

sudo dd if=/dev/sda1 bs=64k |gzip -c >/tmp/sda1.img.gz

Beispiel 2 (Verschlüsselt auf entfernten Rechner übertragen)

sudo dd if=/dev/hda1 bs=64k |gzip -c | ssh [mailto:user@rechner user@rechner2] 'cat >/tmp/rechner1.hda1.img.gz'
Komprimiertes Image zurückschreiben ====
sudo cat dateiname.gz |gzip -d | dd of=festplatte bs=64k

Beispiel 3

sudo cat /tmp/hda1.img.gz |gzip -d | dd of=/dev/hda1 bs=64k

Beispiel 4

ssh [mailto:user@rechner2 user@rechner2] 'cat /tmp/rechner2.hda1.img.gz' |gzip -d | dd of=/dev/hda1 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

Daten-CDs oder -DVD

Zum Brennen von Daten-CDs oder -DVDs stehen auf der Kommandozeile mehrere Anwendungen zur Verfügung

  • Bevor es jedoch ans eigentliche Brennen geht, muss ein so genanntes Joliet-Erweiterungen, erzeugt Images für bootbare Medien und Dateien und kann automatische Backups anlegen, wobei es einzelne Dateien ausschließt
  • Eine Alternative kommt in Form von Dd, das nicht nur ISO-Abbilder erzeugt, sondern oft auch die letzte Rettung für die Daten von sterbenden Festplatten darstellt
Rockridge/Joliet

Rockridge-Erweiterung ergänzt das ISO-Dateisystem um Unix-typische Dateiinformationen, wie Besitzer, Gruppe, Zugriffsrechte und symbolische Links.

  • So tritt beim Kopieren von Daten aus einem Unix-Dateisystem auf CD kein Informationsverlust ein.
  • Zudem erlaubt Rockridge längere Dateinamen.
  • Die Microsoft-Erweiterung Joliet des ISO-9660-Standards lässt ebenfalls lange Dateinamen zu

Convert und Copy

Das praktische kleine Tool Dd müsste eigentlich den Namen Cc tragen: Convert & Copy. Da dieser aber schon für den C-Compiler vergeben war, griffen die Entwickler einfach zum nächsten Buchstaben im Alphabet.

Dd erstellt 1:1-Kopien von Datenträgern. Egal ob Festplattenpartitionen, CDs oder DVDs -- Dd liest und schreibt zuverlässig blockweise. Da Dd diese Blöcke nicht verarbeitet oder interpretiert, spielt es keine Rolle, um welches Dateisystem es sich handelt. Sogar vor Festplatten mit Fehlern schreckt Dd nicht zurück (siehe Abschnitt "Letzte Rettung"). Der einfache Aufruf für Dd lautet:

dd if=Quelle of=Ziel

Block: Eine fortlaufende Ansammlung von Bytes auf einem Datenträger. Einige Geräte wie Festplatten, Disketten und CD-/DVD-Laufwerke organisieren ihre Daten in solchen Blöcken ("block devices"). Andere Geräte arbeiten zeichenorientiert ("character devices") und lesen/schreiben einzelne Bytes.

Über if geben Sie also an, von wo Dd die Daten liest, und hinter of definieren Sie die Ausgabe. Als Quelle und Ziel dienen oft ein Gerät, wie eine Festplatte(npartition) oder ein CD-/DVD-Laufwerk. Alternativ geben Sie nach dem Gleichheitszeichen eine Datei an. Um etwa die Festplattenpartition hda1 1:1 nach /dev/hdb1 zu kopieren, tippen Sie:

dd if=/dev/hda1 of=/dev/hdb1

Ebenso können Sie Dd dazu verwenden, schnell eine CD oder DVD auf der Kommandozeile zu kopieren. Ein entsprechendes ISO-Image erstellen Sie beispielsweise über:

$ dd if=/dev/hdc of=abbild.iso
 9153728+0 Datensätze ein
 9153728+0 Datensätze aus
 4686708736 bytes transferred in 1209,649659 seconds (3874435 bytes/sec)

Das Medium muss dazu nicht gemountet [1] sein. Die Laufwerksangabe /dev/hdc ersetzen Sie durch den entsprechenden Gerätenamen Ihres Laufwerks; das ISO-Image landet anschließend in der Datei abbild.iso des aktuellen Verzeichnisses.

Optimieren mit Optionen

Das Programm Dd bringt einige Schalter mit. Ein praktischer Parameter, der die Arbeit des Programms maßgeblich beschleunigt, ist bs (englisch "block size" = Blockgröße). Standardmäßig arbeitet Dd mit 512 Byte großen Blöcken -- es liest jeweils 512 Bytes ein und schreibt diese in die Ausgabedatei. Wählen Sie größere Blöcke, arbeitet Dd dementsprechend schneller. So sorgt der Aufruf:

dd if=/dev/hda1 of=/dev/hdb1 bs=2k

dafür, dass Dd die Partition in 2 KByte (2048 Bytes) großen Blöcken kopiert. Unterschreitet der letzte Block die angegebene Blockgröße, füllt Dd ihn nicht auf:

$ dd if=/dev/hda1 of=/dev/hdb1 bs=6k
 16059+1 Datensätze ein
 16059+1 Datensätze aus
 98670592 bytes transferred in 13,801482 seconds (7149275 bytes/sec)

Die Ausgabe zeigt, dass Dd 16059 Blöcke der Größe 6144 Bytes und einen "übrig gebliebenen" Block von 4096 Byte kopiert hat.

Neben der Blockgröße können Sie angeben, wie viele dieser Blöcke Dd lesen soll: Um 40 MByte zu kopieren, schreiben Sie bs=1M count=40. Dabei spezifiziert die Option count die Anzahl der Blöcke. Das macht beispielsweise Sinn, wenn Sie den Boot-Sektor einer Festplatte sichern wollen -- Sie kopieren in diesem Fall nur den ersten, 512 Bytes großen Block mit dem Aufruf:

dd if=/dev/hda of=bootsektor bs=512 count=1

Letzte Rettung

Das Programm Dd erweist sich auch als unverzichtbarer Helfer, wenn es um die Rettung von Daten aus zerstörten Dateisystemen geht. Bevor Sie sich an die Reparatur begeben, sollten Sie zunächst ein Backup vornehmen. Dazu erstellen Sie mit Dd eine 1:1-Kopie des zerstörten Systems und führen auf dieser die Reparaturversuche durch.

Da Dd standardmäßig zerstörte Sektoren von der Kopie ausschließt, setzen Sie die Parameter conv=noerror,sync ein:

dd bs=512 conv=noerror,sync if=/dev/hda of=/dev/hdb

Auf diese Weise teilen Sie Dd mit, dass es mit dem Lesen und Ablegen von Daten auch dann fortfahren soll, wenn es defekte Sektoren findet. Dabei sorgt noerror dafür, dass Dd bei Fehlern nicht abbricht, und sync füllt unlesbare Sektoren mit Nullen auf.


Anhang

Siehe auch

Links

Weblinks