dd: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) |
Michi (Diskussion | Beiträge) |
||
Zeile 95: | Zeile 95: | ||
{{cat|Datei}} | |||
{{cat|Datenspeicher}} | {{cat|Datenspeicher}} | ||
{{cat|Kopieren}} | {{cat|Kopieren}} | ||
{{cat|Shell-Befehl}} | {{cat|Shell-Befehl}} |
Version vom 24. Januar 2009, 20:54 Uhr
Der Shell-Befehl dd (convert and copy) überträgt Daten zwischen verschiedenen Datenspeichern und kann auch Umwandlungen der Daten durchführen.
dd liest die Daten blockweise von der Eingabe, mit dd erstellte Kopien sind also Block für Block identisch mit dem Original - leere Bereiche einer Festplatte werden also mitkopiert. Bei einer Wiederherstellung einer Partition aus einer Datei nimmt das Dateisystem dann an, es wäre gleich gross wie das Original, d. h. die Zielpartition muss mindestens so gross sein wie die Quelle.
Weil dd in beliebigen Blockgrössen lesen und schreiben kann, eignet es sich gut für die Ein- und Ausgabe über im Raw-Modus betriebene Geräte (raw devices). Dabei ist darauf zu achten, dass solche Geräte nur mit Blockgrössen beschrieben werden können, die für das betreffende Gerät spezifisch sind (z. B. 512 Byte für Diskettenlaufwerke). Wenn die umzuwandelnde Dateigrösse nicht ein Vielfaches der spezifischen Blockgrösse ist, so muss die Option "conv=sync" angegeben werden. Nach beendeter Bearbeitung gibt dd die Zahl der ganzen Blöcke und der Teilblöcke, die eingelesen bzw. ausgegeben wurden, auf die Standard-Fehlerausgabe aus.
dd darf nicht zum Kopieren von Dateien zwischen Dateisystemen mit unterschiedlicher Blockgrösse verwendet werden. Wird ein blockorientiertes Gerät (block device) zum Kopieren der Datei verwendet, so wird der letzte Block möglicherweise durch Null-Bytes bis zur Blockgrösse aufgefüllt.
Verwendung
Anlegen der Abbilddatei "cd.iso" einer Daten-CD. Als Eingabe wird dabei die CD-ROM-Gerätedatei (hier "/dev/hdd") verwendet. Der Name der Gerätedatei ist nach dem Einlegen der CD gewöhnlich unter "/etc/mtab" zu sehen. Während der Erstellung der Abbilddatei darf die CD allerdings nicht im Dateisystem eingehängt sein!
# dd if=/dev/hdd of=/tmp/cd.iso oder # dd if=/dev/hdd > /tmp/cd.iso
Kopieren einer ganzen Festplatte (die Festplatten müssen vom Typ her identisch sein!).
# dd if=/dev/rdsk/c0t0d0s2 of=/dev/rdsk/c0t1d0s2 bs=256k
Sichern des Master Boot Record der (ersten) Festplatte "/dev/hda", einschliesslich der Partitionstabelle. Dabei wird der erste Block ("count=1") der Grösse 512 Byte ("bs=512") in die Datei "backup_bootrecord.hda" geschrieben.
# dd if=/dev/hda of=backup_bootrecord.hda bs=512 count=1
Kopieren der Partition "/dev/hda5 in die Datei "backup_hda5.img".
# dd if=/dev/hda5 of=backup_hda5.img
Kopieren der Partition "/dev/hda5 in die Datei "/tmp/backup_hda5.img" auf dem fernen Rechner "remotehost".
# dd if=/dev/hda5 | ssh user@remotehost dd of=/tmp/backup_hda5.img
Kopieren der Partition "/dev/hda5 in die Datei "backup_hda5.img". Die Blockgrösse wird dabei auf 1 MB gesetzt, was eine Verschnellerung des Vorgangs bewirkt.
# dd if=/dev/hda5 of=backup_hda5.img bs=1M
Erstellen der Datei "file" mit der Grösse von genau zwei Blöcken zu je 10 KB voller Nullen.
$ dd if=/dev/zero of=file bs=10k count=2
Erstellen der Datei "file" mit der Grösse von genau 3 GB voller Nullen.
$ dd if=/dev/zero of=file count=6291456
Ersetzen aller Grossbuchstaben in Datei "file1" durch Kleinbuchstaben und Ausgabe in Datei "file2".
$ dd if=file1 of=file2 conv=lcase
BIOS auslesen
...
# dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8 IBM VGA Compatible 08/27/02 ASUS V9180 Magic VGA BIOS Version 4.18.20.02.AS04 Version 4.18.20.02.00 Copyright (C) 1996-2002 NVIDIA Corp. NV18 () Board Chip Rev A0 ... American Megatrends Inc. 04/02/01 Micro-Star Inc. MS-6398E ... Intel(R) Pentium(R) 4 Processor ... Maxtor 6Y120L0 WDC WD1200JB-00CRA1 LITE-ON DVDRW SOHW-1693S ... INTEL I845E ... American Megatrends, Inc. EPP BIOS 00.32 ... AMIBIOS 070010 04/02/01(C)2001 American Megatrends Inc., All Rights Reserved (C)2001 American Megatrends Inc., 62-5500-001169-00101111-040201-I845E ...
Diskette kopieren
Erzeugen einer exakten Kopie der Diskette und Ablage in der Datei "floppyimage".
$ dd if=/dev/fd0 of=floppyimage
Kopieren der Datei "floppyimage" auf eine Diskette.
$ dd if=floppyimage of=/dev/fd0