Befehl "dd"

Zweck

Konvertiert und kopiert eine Datei.

Syntax

dd [ bs=BlockGröße ][cbs=BlockGröße ]

[conv= [ ascii |block|ebcdic | ibm | unblock ]

[lcase | ucase ] [iblock ]

[noerror ] [swab ] [sync ]

[oblock ] [notrunc ]][Anzahl =

InputBlocks ] [ files=InputFiles ] [fskip=

SkipEOFs ] [ ibs=InputBlockSize ] [if=

InFile ] [ obs=OutputBlockSize ] [of=

OutFile ] [ seek=DatensatzNummer ] [überspringen=

SkipInputBlocks ][ span=ja|nein ]

dd [ Option=Wert ]

Beschreibung

Der Befehl dd liest den Parameter Eingabedatei oder die Standardeingabe, führt die angegebenen Konvertierungen durch und kopiert anschließend die konvertierten Daten in die mit dem Parameter Ausgabedatei angegebene Datei oder die Standardausgabe. Die Eingabe- und Ausgabeblockgröße kann angegeben werden, um die unaufbereitete, physische Eingabe/Ausgabe zu nutzen.
Hinweis: Der Begriff Block bezieht sich auf die Menge der Daten, die vom Befehl dd in einer Operation gelesen oder geschrieben werden, und hat nicht unbedingt dieselbe Größe wie ein Plattenblock.

Wenn Größen angegeben werden, wird eine Anzahl von Bytes erwartet. Eine Zahl, die mit w, b oder k endet, gibt eine Multiplikation mit 2, 512 bzw.1024 an. Ein durch ein x oder einen Stern (*) getrenntes Zahlenpaar gibt ein Produkt an. Für den Parameter "Anzahl" muss die Anzahl der zu kopierenden Blöcke und nicht die Anzahl der zu kopierenden Bytes angegeben weden.

Die Zeichensatzzuordnungen, die den Flags conv=ascii und conv=ebcdic zugeordnet sind, sind komplementäre Operationen. Diese Flags bewirken, dass ASCII-Zeichen dem Subset von EBCDIC-Zeichen, die auf den meisten Arbeitsstationen und Lochkartenlochern verwendet werden, zugeordnet werden und umgekehrt.

Verwenden Sie den Parameterwert cbs , wenn Sie eine der Konvertierungen block, unblock, ascii, ebcdicoder ibm angeben. Wenn der Parameter unblock oder ascii angegeben ist, führt der Befehl dd eine Konvertierung von fester Länge in variable Länge durch. Ansonsten führt er eine Konvertierung von variabler Länge in feste Länge durch. Der Parameter cbs bestimmt die feste Länge.

Achtung: Wenn der Wert des Parameters cbs kleiner als der kleinste Eingabeblock ist, wird der konvertierte Block abgeschnitten.

Der Befehl dd meldet nach Beendigung die Anzahl der vollständigen und partiellen Eingabe- und Ausgabeblöcke.

Hinweis:
  1. Gewöhnlich benötigen Sie nur Schreibzugriff auf die Ausgabedatei. Wenn sich die Ausgabedatei jedoch nicht auf einer Direktzugriffseinheit befindet und Sie das Flag seek verwenden, benötigen Sie auch Lesezugriff auf die Datei.
  2. Der Befehl dd fügt Zeilenvorschubzeichen nur ein, wenn die Konvertierung mit den Flags conv=ascii oder conv=unblock erfolgt; er füllt nur auf, wenn die Konvertierung mit den Flags conv=ebcdic, conv=ibmoder conv=block erfolgt.
  3. Verwenden Sie den Befehl backup, taroder cpio anstelle des Befehls dd , wenn möglich, um Dateien auf Band zu kopieren. Diese Befehle sind für die Verwendung mit Bandeinheiten vorgesehen. Weitere Informationen zur Verwendung von Bandeinheiten finden Sie in der Gerätedatei rmt .
  4. Die mit den Flags bs, ibs und obs angegebenen Blockgrößenwerte müssen immer ein Vielfaches der physischen Blockgröße für die verwendeten Medien sein.
  5. Wenn das Flag conv=sync angegeben ist, füllt der Befehl dd alle Teileingabeblöcke mit Nullen auf. Der Befehl dd fügt Nullen in der Mitte des Datenstroms ein, wenn eine Leseoperation keinen vollständigen Datenblock empfängt (gemäß Angabe mit dem Flag ibs). Dies tritt häufig beim Lesen aus Pipes auf.
  6. Wenn das Flag bs allein angegeben ist und keine anderen Konvertierungen als sync, noerror oder notrunc angegeben sind, werden die Daten aus jedem Eingabedatenblock als ein separater Ausgabeblock geschrieben. Wenn die Leseoperation weniger als einen vollständigen Block zurückgibt und sync nicht angegeben ist, hat der Ausgabeblock dieselbe Größe wie der Eingabeblock. Wenn das Flag bs nicht angegeben ist oder eine andere Konvertierung als sync, noerror oder notrunc angegeben ist, wird die Eingabe verarbeitet und in vollständigen Ausgabeblöcken erfasst, bis das Ende der Eingabe erreicht ist.

Einheitenübergreifende Verarbeitung

Der Befehl dd kann angewiesen werden, dass er einheitenübergreifend arbeitet, wenn die Eingabedatei größer ist als die physische Größe der Ausgabeeinheit.
Anmerkung: Bei der Angabe der Blockgröße bs als genaues Vielfaches der physischen Größe der Einheit ist Vorsicht angebracht, da eine falsche Blockgröße zu Dateninkonsistenz oder Überlappung führt.

Die einheitenübergreifende Verarbeitung des Befehls dd findet nicht statt, wenn als Eingabedatei oder Ausgabedatei die Standardeingabe bzw. die Standardausgabe angegeben ist.

Die einheitenübergreifende Verarbeitung erfolgt so, dass dd beim Schreiben eine Aufforderung zur Eingabe der nächsten Einheit anzeigt, wenn die Ausgabeeinheit voll ist. Beim Lesen von der Eingabeeinheit zeigt der Befehl dd eine Aufforderung zur Eingabe der nächsten Einheit an, wenn die Daten vollständig von der Eingabeeinheit gelesen werden, selbst wenn das Ende der Einheit noch nicht erreicht ist. In diesem Fall muss 'n" eingegeben werden, um die Operation zu beenden.

Flags

Element Beschreibung
bs=BlockGröße Gibt sowohl die Größe des Eingabe-als auch des Ausgabeblocks an, wobei die Flags ibs und obs ersetzt werden. Die mit dem Flag bs angegebenen Blockgrößenwerte müssen immer ein Vielfaches der physischen Blockgröße für das verwendete Medium sein.
cbs=BlockGröße Gibt die Konvertierungsblockgröße für Konvertierungen von variabler Länge in feste Länge und von fester Länge in variable Länge an, z. B. conv=block.
count=InputBlocks Kopiert nur die mit der Variablen Eingabeblöcke angegebene Anzahl an Eingabeblöcken.
Konv= Konvertierung,.... Gibt eine oder mehrere Konvertierungsoptionen an. Mehrere Konvertierungen müssen durch Kommas getrennt werden. In der folgenden Liste sind die möglichen Optionen beschrieben:
ASCII
Konvertiert EBCDIC in ASCII. Diese Option ist nicht kompatibel mit den Optionen ebcdic, ibm, blockund unblock .
block
Konvertiert Datensätze variabler Länge in eine feste Länge. Die Länge wird durch die Konvertierungsblockgröße (cbs) bestimmt. Diese Option ist mit den Optionen ascii, ebcdic, ibmund unblock nicht kompatibel.
EBCDIC
Konvertiert ASCII in Standard-EBCDIC. Diese Option ist mit den Optionen ascii, ibm, blockund unblock nicht kompatibel.
IBM
Konvertiert ASCII in eine IBM® von EBCDIC. Diese Option ist nicht kompatibel mit den Optionen ascii, ebcdic, blockund unblock .
iblock, oblock
Minimiert den Datenverlust bei einem Lese- oder Schreibfehler auf Direktzugriffseinheiten. Wenn Sie die ' iblock angeben und während des Lesens eines Blocks ein Fehler auftritt (wobei die Blockgröße 512 oder die durch die ' ibs= 'InputBlockSize angegebene Größe beträgt), versucht der ' dd -Befehl, den Datenblock in kleineren Größeneinheiten neu zu lesen. Wenn der Befehl dd die Sektorgröße der Eingabeeinheit bestimmen kann, liest er den beschädigten Block jeweils Sektor für Sektor. Andernfalls liest er jeweils 512 Bytes. Die Eingabeblockgröße (ibs) muss ein Vielfaches dieser Wiederholungsgröße sein. Diese Option führt zu einem Datenverlust bei einem Lesefehler in einen einzelnen Sektor. Die Konvertierung oblock funktioniert ähnlich bei der Ausgabe.
LCase
Konvertiert alle alphabetischen Zeichen in Kleinbuchstaben.
kein Fehler
Beendet die Verarbeitung nicht bei einem Fehler.
NOTRUNC
Schneidet die Ausgabedatei nicht ab. Stattdessen werden Blöcke, die nicht explizit in die Ausgabe geschrieben wurden, beibehalten.
ucase
Konvertiert alle alphabetischen Zeichen in Großbuchstaben.
Tupfer
Tauscht jedes Bytepaar aus.
sync
Füllt jeden Eingabeblock auf den Wert ibs auf.
Blockierung aufheben
Konvertiert Blöcke fester Länge in variable Länge. Die Länge wird durch die Konvertierungsblockgröße (cbs) bestimmt. Diese Option ist nicht mit den Optionen ascii, ebcdic, ibmund block kompatibel.
files=InputFiles Kopiert die mit der Variablen Eingabedateien angegebene Anzahl von Eingabedateien, bevor er beendet wird (ist nur sinnvoll, wenn die Eingabe ein Magnetband oder eine ähnliche Einheit ist).
fskip=SkipEOFs Überspringt die mit der Variablen zu_überspringende_EOFs angegebene Anzahl von Dateiendezeichen, bevor mit dem Kopieren begonnen wird. Die Variable zu_überspringende_EOFs ist für die Positionierung auf Magnetbändern mit mehreren Dateien hilfreich.
ibs=InputBlockSize Gibt die Eingabeblockgröße an. Der Standardwert ist 512 Byte oder ein Block. Die mit dem Flag ibs angegebenen Blockgrößenwerte müssen immer ein Vielfaches der physischen Blockgröße für das verwendete Medium sein.
if=InFile Gibt den Namen der Eingabedatei an. Standardmäßig wird die Standardeingabe verwendet.
obs=OutputBlockSize Gibt die Ausgabeblockgröße an. Der Standardwert ist 512 Byte oder ein Block. Die mit dem Flag obs angegebenen Blockgrößenwerte müssen immer ein Vielfaches der physischen Blockgröße für das verwendete Medium sein.
of=OutFile Gibt den Namen der Ausgabedatei an. Standardmäßig wird die Standardausgabe verwendet.
seek=DatensatzNummer Sucht vor dem Kopieren den mit der Variablen Datensatznummer angegebenen Datensatz ausgehend vom Anfang der Ausgabedatei.
überspringen=SkipInputBlocks Überspringt die für zu_überspringende_Eingabeblöcke angegebene Anzahl von Eingabeblöcken, bevor mit dem Kopieren begonnen wird.
span=ja|nein Ermöglicht das einheitenübergreifende Spanning, sofern angegebenyesund funktioniert als Standardwert, wenn angegeben alsno. Weitere Informationen finden Sie unter Einheitenübergreifendes Spanning.

Exitstatus

Dieser Befehl gibt die folgenden Exitwerte zurück:

Element Beschreibung
0 Die Eingabedatei wurde erfolgreich kopiert.
>0 Es ist ein Fehler aufgetreten.

Beispiele

  1. Geben Sie Folgendes ein, um eine ASCII-Textdatei in EBCDIC zu konvertieren:Dieser Befehl konvertiert dietext.asciiDatei in EBCDIC-Darstellung, speichern der EBCDIC-Version in dertext.ebcdiceportiert.
    Hinweis: Wenn Sie den Parameter conv=ebcdic angeben, konvertiert der Befehl dd das ASCII ^ -Zeichen (Zirkumflex) in ein nicht verwendetes EBCDIC-Zeichen (9A hexadezimal) und die ASCII ~ (Tilde) in das EBCDIC ^ -Zeichen (NICHT).
  2. Geben Sie Folgendes ein, um die ASCII-Datei /etc/passwd mit variabler Länge in eine Datei mit 132-Byte-EBCDIC-Datensätzen mit fester Länge zu konvertieren:
  3. Geben Sie Folgendes ein, um die EBCDIC-Datei mit 132-Byte-Datensätzen in ASCII-Zeilen variabler Länge und mit Kleinbuchstaben zu konvertieren:
  4. Geben Sie Folgendes ein, um die ASCII-Datei /etc/passwd mit variabler Länge in eine Datei mit Datensätzen mit einer festen Länge von 132 Byte in der IBM Version von EBCDIC zu konvertieren:
  5. Geben Sie Folgendes ein, um Blöcke von einem Band mit 1-KB-Blöcken auf ein anderes Band mit 2-KB-Blöcken zu kopieren:
  6. Geben Sie Folgendes ein, um den Befehl dd als Filter zu verwenden:
    ls -l | dd  conv=ucase
    Dieser Befehl zeigt eine lange Liste des aktuellen Verzeichnisses in Großbuchstaben an.
    Anmerkung: Die Leistung des Befehls dd und des Befehls cpio für die Magnetbandeinheit IBM 9348 Modell 12 kann verbessert werden, indem die Standardblockgröße geändert wird. Verwenden Sie den Befehl chdev wie folgt, um die Blockgröße zu ändern:
    chdev -l Device_name -a block_size=32k
  7. Geben Sie Folgendes ein, um effiziente Übertragungen auf eine 3,5-Zoll-Diskette mit einer Speicherkapazität von 1,4 MB mit 36 Blöcken zu je 512 Byte durchzuführen:

    Dieser Befehl schreibt den Wert des Parameters Dateiname zylinderweise auf die Disketteneinheit. Derconv=syncist erforderlich, wenn von Platte gelesen wird und die Dateigröße kein Vielfaches der Diskettenblockgröße ist. Versuchen Sie dies nicht, wenn die Eingabe für den Befehl dd eine Pipe und keine Datei ist, weil der Befehl in diesem Fall den größten Teil der Eingabe und nicht nur den letzten Block mit Nullen auffüllt.

  8. Geben Sie Folgendes ein, um Blocke aus einer Eingabedatei mit einer Blockgröße von 720 Byte auf eine 1,44-MB-Diskette zu kopieren:
    dd if=testfile of=/dev/fd0 bs=720b conv=sync
    Anmerkung: Wenn die Eingabedatei größer als die physische Größe der Ausgabeeinheit ist, fordert dd Sie zur Eingabe einer anderen Einheit auf.
  9. Geben Sie Folgendes ein, um Blöcke aus einer Eingabedatei mit einer Blockgröße von 32 KB auf ein Band zu kopieren:
    dd if=inputfile of=/dev/rmt0 bs=32k conv=sync
  10. Geben Sie Folgendes ein, um Datenblöcke mit einer Bockgröße von 32-KB-Blöcken von einem Band in eine Datei im aktuellen Verzeichnis zu kopieren:
    dd if=/dev/rmt0 of=outfile bs=32k conv=sync
  11. Geben Sie Folgendes ein, um Blöcke mit einer Blockgröße von 720 Byte aus einer Eingabedatei auf eine 1,44-MB-Diskette zu kopieren:
    dd if=testfile of=/dev/fd0 bs=720b conv=sync span=yes
    Anmerkung: Wenn die Eingabedatei größer als die physische Größe der Ausgabeeinheit ist, fordert Sie dd zur Eingabe einer anderen Einheit auf.
  12. Geben Sie Folgendes ein, um Blöcke mit einer Blockgröße von 32 KB aus einer Eingabedatei auf ein Band zu kopieren:
    dd if=inputfile of=/dev/rmt0 bs=32k conv=sync span=yes
  13. Geben Sie Folgendes ein, um Datenblöcke mit einer Blockgröße von 32 KB von einem Band in eine Datei im aktuellen Verzeichnis zu kopieren:
    dd if=dev/rmt0 of=outfile bs=32k conv=sync span=yes

Dateien

Element Beschreibung
/usr/bin/dd Enthält den Befehl dd.