Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

dd - Dateien kopieren und konvertieren

&pagelevel(4)&pagelevel

(convert and copy a file)


Mit dd können Sie Dateien kopieren und dabei konvertieren, z.B von EBCDIC nach ASCII oder umgekehrt.

Da das Kommando dd in beliebigen Block-Größen lesen und schreiben kann, eignet es sich gut für die Ein- und Ausgabe über im Raw-Modus betriebene Geräte (raw devices). Allerdings ist darauf zu achten, dass raw devices nur mit Blockgrößen beschrieben werden können, die für das betreffende Gerät spezifisch sind (z.B. 512 Byte für Diskettenlaufwerke). Wenn die zu konvertierende Dateigröße nicht ein Vielfaches der spezifischen Blockgröße ist, müssen Sie die Option conv=sync angeben.

Nach beendeter Bearbeitung gibt dd die Zahl der ganzen Blöcke und der Teil-Blöcke, die eingelesen bzw. ausgegeben wurden, auf die Standard-Fehlerausgabe aus.

Achtung!
Verwenden Sie dd nie zum Kopieren von Dateien zwischen Dateisystemen mit unterschiedlicher Blockgröße.

Wenn Sie ein blockorientiertes Gerät (block device) zum Kopieren der Datei verwenden, dann wird der letzte Block möglicherweise durch Null-Bytes bis zur Blockgröße aufgefüllt.


Syntax


dd[ option ...]

Keine Option angegeben:

dd liest von der Standard-Eingabe und gibt auf die Standard-Ausgabe aus. dd führt keine Konvertierungen durch. Die Größe der Eingabe-Blöcke und der Ausgabe-Blöcke beträgt jeweils 512 Byte.


option

if=eingabedatei

Name der Eingabe-Datei

of=ausgabedatei

Name der Ausgabe-Datei

ibs=n

Größe der Eingabe-Blöcke in Byte

obs=n

Größe der Ausgabe-Blöcke in Byte

bs=n

Größe der Ein-und Ausgabe-Blöcke in Byte

cbs=n

Größe des Konvertierungspuffers in Byte

skip=n

Überspringen der ersten n Blöcke der Eingabe-Datei

iseek=n

Überspringen der ersten n Blöcke der Eingabe-Datei

oseek=n

Kopie der Eingabe-Datei ab n+1 Blöcken der Ausgabe-Datei

seek=n

Kopie der Eingabe-Datei ab n+1 Blöcken der Ausgabe-Datei

count=n

Die ersten n Blöcke der Eingabe-Datei kopieren/konvertieren

conv=wert[,wert...]

Angabe mehrere Werte für conv

conv=ascii

Konvertierung von EBCDIC nach ASCII

conv=ebcdic

Konvertierung von ASCII nach EBCDIC

conv=siemens

Konvertierung von ASCII nach Siemens-spezifischen EBCDIC

conv=ibm

Konvertierung von ASCII nach IBM-spezifischen EBCDIC

conv=block

Konvertierung von Sätzen, die mit Neue-Zeile-Zeichen abgeschlossen sind in Sätze mit fester Satzlänge

conv=unblock

Konvertierung von Sätzen mit fester Satzlänge in Sätze, die mit Neue-Zeile-Zeichen abgeschlossen sind

conv=lcase

Umwandlung von Großbuchstaben in Kleinbuchstaben

conv=ucase

Umwandlung von Kleinbuchstaben in Großbuchstaben

conv=swab

Vertauschen zweier aufeinanderfolgender Byte

conv=noerror

Bearbeitung trotz Fehler fortsetzen

conv=sync

Auffüllen der Eingabe-Blöcke auf die in ibs=n festgelegte Anzahl Zeichen

conv=notrunc

Ende der Ausgabedatei bleibt erhalten


Wenn eine Option Größenangaben verlangt, können Sie diese auf folgende Weise machen:


nbedeutet n mal 1
nbbedeutet n mal 512
nkbedeutet n mal 1024
nwbedeutet n mal 2
nxmbedeutet n mal m


if=eingabedatei

(if - input file)

Für eingabedatei geben Sie den Namen der Eingabe-Datei an, aus der dd lesen soll.

if=eingabedatei nicht angegeben:
dd liest von der Standard-Eingabe.

of=ausgabedatei

(of - output file)

Für ausgabedatei geben Sie den Namen der Ausgabe-Datei an, in die dd schreiben soll.

of=ausgabedatei nicht angegeben:
dd schreibt auf die Standard-Ausgabe.

ibs=n

(ibs - input block size)

Für n geben Sie die Größe der Eingabe-Blöcke in Byte an.

ibs=n nicht angegeben:
Die Größe der Eingabe-Blöcke ist 512 Byte.

obs=n

(obs - oputput block size)

Für n geben Sie die Größe der Ausgabe-Blöcke in Byte an.

obs=n nicht angegeben:
Die Größe der Ausgabe-Blöcke ist 512 Byte.

bs=n

(bs - block size)

Für n geben Sie die Größe der Eingabe- und Ausgabe-Blöcke in Byte an. Die Angabe von bs hebt die Angaben für ibs und obs auf.

cbs=n

(cbs - conversion buffer size)

Für n geben Sie die Größe des Konvertierungspuffers in Byte an. Diese Angabe ist nur in folgenden Fällen wirksam:

  • bei der Konvertierung von EBCDIC in ASCII und umgekehrt

  • bei der Konvertierung von und zu fester Satzlänge.

(siehe conv=ascii, conv=ebcdic conv=ibm und conv=block, conv=unblock).

skip=n

Die ersten n Blöcke der Eingabe-Datei werden übersprungen und die Bearbeitung beginnt erst beim Block n+1.
Diese Option ist nur für Magnetbandgeräte geeignet, für die iseek nicht definiert ist.

iseek=n

Die ersten n Blöcke der Eingabe-Datei werden übersprungen und die Bearbeitung beginnt erst beim Block n+1. Diese Option ist speziell für die Bearbeitung von Plattendateien gedacht, da skip hier zu langsam ist. Diese Option ist nur für Geräte zulässig, die den lseek-Systemaufruf unterstützen (z.B. Plattengeräte).
skip und iseek schließen sich gegenseitig aus.

oseek=n

Die ggf. konvertierte Kopie der Eingabe-Datei beginnt erst beim n+1-ten Block der Ausgabe-Datei. Die ersten n Blöcke der Ausgabe-Datei bleiben unverändert erhalten. Diese Option ist nur für Geräte zulässig, die den lseek-Systemaufruf unterstützen
(z.B. Plattengeräte).

seek=n

seek hat die gleiche Funktion wie oseek.

count=n

Es werden nur die ersten n Blöcke der Eingabe-Datei kopiert und, falls angegeben, konvertiert.

conv=wert[,wert...]

Sie können für conv mehrere Werte, durch Kommas voneinander getrennt, angeben und so mehrere Konvertierungen herbeiführen.

Die Werte ascii, ebcdic und ibm können nicht gleichzeitig angegeben werden. Dasselbe gilt für die Wertepaare block und unblock, sowie lcase und ucase.

conv=ascii

Konvertierung von EBCDIC nach ASCII.

Die durch cbs=n festgelegte Anzahl von Zeichen wird jeweils in den Konvertierungspuffer kopiert und eventuell angegebene Zeichenumwandlungen werden ausgeführt. Leerzeichen am Zeilenende werden gelöscht und ein Neue-Zeile-Zeichen wird eingefügt. Damit wird die Größe der Ausgabeblöcke der Datei an den durch cbs=n festgelegten Wert angepasst. Haben Sie die cbs-Option nicht oder mit cbs=0 angegeben, wird die Eingabe-Datei nur konvertiert und am Zeilenende werden keine Leerzeichen gelöscht.

conv=ebcdic

Konvertierung von ASCII nach EBCDIC.

Die ASCII-Zeichen werden in den Konvertierungspuffer gelesen und nach EBCDIC konvertiert. Die Ausgabeblockgröße wird durch Hinzufügen von Leerzeichen an den durch cbs=n festgelegten Wert angepasst. Haben Sie die Option cbs nicht oder mit cbs=0 angegeben, wird die Eingabe-Datei nur konvertiert, ihre Blockstruktur wird jedoch nicht verändert.

conv=siemens

Konvertierung von ASCII nach EBCDIC wie oben beschrieben, wobei eine Siemens-spezifische EBCDIC-Tabelle verwendet wird. Das Newline-Zeichen wird wiefolgt konvertiert: X'0A' <-> X'05' .

conv=ibm

Konvertierung von ASCII nach EBCDIC wie oben beschrieben, wobei eine IBM-spezifische EBCDIC-Tabelle verwendet wird.

conv=block

Durch Neue-Zeile-Zeichen abgeschlossene ASCII-Sätze werden in Sätze mit fester Satzlänge konvertiert. Die ASCII-Zeichen werden in den Konvertierungspuffer gelesen. Die Satzlänge oder Ausgabeblockgröße wird durch Hinzufügen von Leerzeichen an den durch cbs=n festgelegten Wert angepasst. Haben sie die Option cbs nicht oder mit cbs=0 angegeben, wird die Eingabe-Datei nur konvertiert.

conv=unblock

ASCII-Sätze mit fester Satzlänge werden in durch Neue-Zeile-Zeichen abgeschlossene Sätze konvertiert. Die Satzlänge wird durch den mit cbs=n festgelegten Wert bestimmt. Diese Anzahl Zeichen wird jedesmal in den Konvertierungspuffer geladen, am Zeilenende überschüssige Leerzeichen werden gelöscht und ein Neue-Zeile-Zeichen wird eingefügt, bevor die Zeichen ausgegeben werden. Haben Sie die Option cbs nicht oder mit cbs=0 angegeben, wird die Eingabe-Datei nur konvertiert.

conv=lcase

Großbuchstaben werden in die entsprechenden Kleinbuchstaben verwandelt.

conv=ucase

Kleinbuchstaben werden in die entsprechenden Großbuchstaben verwandelt.

conv=swab

Jeweils zwei aufeinanderfolgende Byte werden vertauscht. Enthält ein Eingabeblock eine ungerade Anzahl Bytes, wird das letzte Byte ignoriert.

conv=noerror

Die Bearbeitung wird beim Auftreten eines Fehlers nicht beendet.

conv=sync

Alle Eingabe-Blöcke werden auf die durch ibs=n festgelegte Anzahl von Zeichen aufgefüllt. Bei Angabe von block oder unblock werden Leerzeichen verwendet, sonst Null-Bytes.

conv=notrunc

Die Ausgabedatei wird nicht neu erzeugt. Alle Blöcke, die nicht explizit von dd überschrieben werden, bleiben unverändert erhalten.

Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos dd:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien) sowie die Einteilung der Zeichen in Groß- und Kleinbuchstaben und deren Übereinstimmung.

LC_MESSAGES

Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Beispiel

Der Inhalt eines EBCDIC-Magnetbandes mit einer Blockstruktur von 10 mal 80 Byte wird in die ASCII-Datei xy geschrieben:

$ dd if=/dev/rmt32 of=xy ibs=800 cbs=80 conv=ascii

Siehe auch

cp