Commande dd

Objectif

Convertit et copie un fichier.

Syntaxe

dd [ bs=Taille du bloc ][cbs=Taille du bloc ]

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

[lcase | ucase ] [iblock ]

[noerror ] [swab ] [sync ]

[oblock ] [notrunc ]] [count=

InputBlocks ] [ fichiers=Fichiers d'entrée ] [fskip=

SkipEOFs ] [ ibs=Taille du bloc d'entrée ] [si=

InFile ] [ obs=Taille du bloc de sortie ] [de=

OutFile ] [ chercher=Numéro d'enregistrement ] [sauter=

SkipInputBlocks ][ span=oui|non ]

dd [ Option=Valeur ]

Descriptif

La commande dd lit le paramètre InFile ou l'entrée standard, effectue les conversions spécifiées, puis copie les données converties dans le paramètre OutFile ou la sortie standard. La taille de bloc d'entrée et de sortie peut être spécifiée pour tirer parti des E-S physiques brutes.
Remarque: Le terme Bloc fait référence à la quantité de données lues ou écrites par la commande dd en une seule opération et n'est pas nécessairement de la même taille qu'un bloc de disque.

Lorsque des tailles sont spécifiées, un nombre d'octets est attendu. Un nombre se terminant par w, bou k indique une multiplication par 2, 512 ou 1024 respectivement ; une paire de nombres séparés par un x ou un * (astérisque) indique un produit. Le paramètre count attend le nombre de blocs, pas le nombre d'octets, à copier.

Les mappages de jeu de caractères associés aux indicateurs conv=ascii et conv=ebcdic sont des opérations complémentaires. Ces indicateurs sont mappés entre les caractères ASCII et le sous-ensemble de caractères EBCDIC trouvés sur la plupart des postes de travail et des blocs de touches.

Utilisez la valeur du paramètre cbs si vous spécifiez l'une des conversions block, unblock, ascii, ebcdicou ibm . Si les paramètres unblock ou ascii sont spécifiés, la commande dd effectue une conversion de longueur fixe en longueur variable. Sinon, il effectue une conversion de longueur variable en longueur fixe. Le paramètre cbs détermine la longueur fixe.

Attention: si la valeur du paramètre cbs est inférieure au plus petit bloc d'entrée, le bloc converti est tronqué.

Une fois qu'elle est terminée, la commande dd indique le nombre de blocs d'entrée et de sortie entiers et partiels.

Remarque :
  1. En règle générale, vous n'avez besoin que d'un accès en écriture au fichier de sortie. Toutefois, lorsque le fichier de sortie ne se trouve pas sur une unité à accès direct et que vous utilisez l'indicateur seek , vous devez également disposer d'un accès en lecture au fichier.
  2. La commande dd insère des caractères de nouvelle ligne uniquement lors de la conversion avec l'ensemble d'indicateurs conv=ascii ou conv=unblock ; elle remplit uniquement lors de la conversion avec l'ensemble d'indicateurs conv=ebcdic, conv=ibmou conv=block .
  3. Utilisez la commande backup, tarou cpio à la place de la commande dd pour copier des fichiers sur bande. Ces commandes sont conçues pour être utilisées avec des unités de bande. Pour plus d'informations sur l'utilisation des unités de bande, voir le fichier spécial rmt .
  4. Les valeurs de taille de bloc spécifiées avec les indicateurs bs, ibs et obs doivent toujours être un multiple de la taille de bloc physique pour le support utilisé.
  5. Lorsque l'indicateur conv=sync est spécifié, la commande dd remplit tous les blocs d'entrée partiels avec des valeurs nulles. Ainsi, la commande dd insère des valeurs nulles au milieu du flux de données si l'une des lectures ne reçoit pas de bloc de données complet (comme spécifié par l'indicateur ibs ). Il s'agit d'une occurrence courante lors de la lecture à partir de tubes.
  6. Si l'indicateur bs est spécifié par lui-même et qu'aucune conversion autre que sync, noerror ou notrunc n'est spécifiée, les données de chaque bloc d'entrée seront écrites en tant que bloc de sortie distinct ; si la lecture est inférieure à un bloc complet et que sync n'est pas spécifié, le bloc de sortie résultant aura la même taille que le bloc d'entrée. Si l'indicateur bs n'est pas spécifié ou qu'une conversion autre que sync, noerror ou notrunc est spécifiée, l'entrée est traitée et collectée en blocs de sortie de taille complète jusqu'à ce que la fin de l'entrée soit atteinte.

Couvrant tous les périphériques

La valeur dd peut être utilisée pour étendre les périphériques si le fichier d'entrée est supérieur à la taille physique du périphérique de sortie.
Remarque: Vous devez faire attention lorsque vous spécifiez la taille de bloc bs comme multiple exact de la taille physique de l'unité car une taille de bloc incorrecte entraînera une incohérence ou un chevauchement des données.

L'extension de dd sur les périphériques ne se produit pas si l'un des paramètres InFile ou OutFile est stdin ou stdout.

La fonction Spanning se produit de telle sorte que dd vous invite à indiquer l'unité suivante lors de l'écriture si l'unité de sortie est saturée. Lors de la lecture à partir de l'unité d'entrée, dd vous invite à indiquer l'unité suivante si les données sont entièrement lues à partir de l'unité d'entrée, même si l'unité n'a pas atteint la fin. Dans ce cas, il serait nécessaire d'appuyer sur "n" pour quitter.

Indicateurs

Article Descriptif
bs=Taille du bloc Indique à la fois la taille de bloc d'entrée et de sortie, en remplaçant les indicateurs ibs et obs . Les valeurs de taille de bloc spécifiées avec l'indicateur bs doivent toujours être un multiple de la taille de bloc physique pour le support utilisé.
cbs=Taille du bloc Indique la taille de bloc de conversion pour les conversions de longueur variable en longueur fixe et de longueur fixe en longueur variable, telles que conv=block.
count=Blocsd'entrée Copie uniquement le nombre de blocs d'entrée spécifié par la variable InputBlocks .
conv= Conversion,.... Indique une ou plusieurs options de conversion. Les conversions multiples doivent être séparées par des virgules. La liste suivante décrit les options possibles:
ASCII
Convertit EBCDIC en ASCII. Cette option est incompatible avec les options ebcdic, ibm, blocket unblock .
block
Convertit des enregistrements de longueur variable en enregistrements de longueur fixe. La longueur est déterminée par la taille de bloc de conversion (cbs). Cette option est incompatible avec les options ascii, ebcdic, ibmet unblock .
EBCDIC
Convertit ASCII en EBCDIC standard. Cette option est incompatible avec les options ascii, ibm, blocket unblock .
ibm
Convertit l'ASCII en une version IBM de l'EBCDIC. Cette option est incompatible avec les options ascii, ebcdic, blocket unblock .
iblock, oblock
Réduisez la perte de données résultant d'une erreur de lecture ou d'écriture sur les unités à accès direct. Si vous spécifiez la variable " iblock et qu'une erreur se produit lors de la lecture d'un bloc (dont la taille est de 512 ou de la taille spécifiée par la variable " ibs= "Taille du bloc d'entrée "), la commande " dd tente de relire le bloc de données dans des unités de taille plus petite. Si la commande dd peut déterminer la taille de secteur de l'unité d'entrée, elle lit le bloc endommagé un secteur à la fois. Sinon, il le lit 512 octets à la fois. La taille de bloc d'entrée ( ibs) doit être un multiple de cette taille de nouvelle tentative. Cette option contient la perte de données associée à une erreur de lecture sur un seul secteur. La conversion oblock fonctionne de la même manière sur la sortie.
lcase
Met tous les caractères alphabétiques en minuscules.
aucune erreur
N'arrête pas le traitement en cas d'erreur.
notrunc
Ne tronque pas le fichier de sortie. A la place, les blocs qui ne sont pas explicitement écrits dans la sortie sont conservés.
cas d'espèce
Met tous les caractères alphabétiques en majuscules.
écouvillon
Permute chaque paire d'octets.
sync
Remplit chaque bloc d'entrée avec la valeur ibs .
dégrouper
Convertit des blocs de longueur fixe en blocs de longueur variable. La longueur est déterminée par la taille de bloc de conversion (cbs). Cette option est incompatible avec les options ascii, ebcdic, ibmet block .
files=Fichiersd'entrée Copie le nombre de fichiers spécifié par la valeur de variable InputFiles des fichiers d'entrée avant la fin (ce qui est logique uniquement lorsque l'entrée est une bande magnétique ou une unité similaire).
fskip= Ignorer les EOF Ignore le nombre de caractères de fin de fichier spécifié par la variable SkipEOFs avant de commencer la copie ; cette variable SkipEOFs est utile pour le positionnement sur des bandes magnétiques multifichiers.
ibs=Taille du bloc d'entrée Indique la taille du bloc d'entrée ; la valeur par défaut est 512 octets ou un bloc. Les valeurs de taille de bloc spécifiées avec l'indicateur ibs doivent toujours être un multiple de la taille de bloc physique pour le support utilisé.
si=InFile Indique le nom du fichier d'entrée ; l'entrée standard est la valeur par défaut.
obs=Taille du bloc de sortie Indique la taille du bloc de sortie ; la valeur par défaut est 512 octets ou un bloc. Les valeurs de taille de bloc spécifiées avec l'indicateur obs doivent toujours être un multiple de la taille de bloc physique pour le support utilisé.
de=OutFile Indique le nom du fichier de sortie ; la sortie standard est la valeur par défaut.
chercher=Numéro d'enregistrement Recherche l'enregistrement spécifié par la variable RecordNumber depuis le début du fichier de sortie avant la copie.
sauter=Sauter les blocs d'entrée Sauter la valeur SkipInputBlocks spécifiée des blocs d'entrée avant de commencer la copie.
span=oui|non Autorise la répartition entre les unités si elle est spécifiéeyeset fonctionne comme valeur par défaut si spécifié commeno. Pour plus d'informations, voir Spanning Across Devices.

Statut de sortie

Cette commande renvoie les valeurs de sortie suivantes :

Article Descriptif
0 % Le fichier d'entrée a été copié.
>0 Une erreur s'est produite.

Exemples

  1. Pour convertir un fichier texte ASCII en EBCDIC, entrez:Cette commande convertit letext.asciifichier dans la représentation EBCDIC, stockage de la version EBCDIC dans latext.ebcdic.xlsx.
    Remarque: Lorsque vous spécifiez le paramètre conv=ebcdic , la commande dd convertit le caractère ASCII ^ (accent circonflexe) en un caractère EBCDIC non utilisé (9A hexadécimal) et le caractère ASCII ~ (tilde) en EBCDIC ^ (symbole NOT).
  2. Pour convertir le fichier ASCII d'enregistrement de longueur variable /etc/passwd en un fichier d'enregistrements EBCDIC de longueur fixe de 132 octets, entrez:
  3. Pour convertir le fichier EBCDIC de 132 octets par enregistrement en lignes ASCII de longueur variable en minuscules, entrez:
  4. Pour convertir le fichier ASCII d'enregistrement de longueur variable /etc/passwd en un fichier d'enregistrements de longueur fixe de 132 octets dans la version IBM de EBCDIC, entrez:
  5. Pour copier des blocs à partir d'une bande avec des blocs de 1KB sur une autre bande à l'aide de blocs de 2KB , entrez:
  6. Pour utiliser la commande dd comme filtre, entrez:
    ls -l | dd  conv=ucase
    Cette commande affiche une longue liste du répertoire en cours en majuscules.
    Remarque: Les performances de la commande dd et de la commande cpio sur le modèle 12 de l'unité de bande magnétique 9348 peuvent être améliorées en modifiant la taille de bloc par défaut. Pour modifier la taille de bloc, utilisez la commande chdev de la manière suivante:
    chdev -l Device_name -a block_size=32k
  7. Pour effectuer des transferts efficaces vers la disquette 3.5-inch 1.4MB à l'aide de 36 blocs de 512 octets, entrez:

    Cette commande écrit la valeur du paramètre Nom de fichier sur l'unité de disquette, un cylindre à la fois. :NONE.conv=syncest obligatoire lors de la lecture à partir du disque et lorsque la taille du fichier n'est pas un multiple de la taille de bloc de la disquette. N'essayez pas cela si l'entrée de la commande dd est un canal de communication au lieu d'un fichier, elle va remplir la majeure partie de l'entrée avec des valeurs nulles au lieu du seul dernier bloc.

  8. Pour copier des blocs d'un fichier d'entrée dont la taille de bloc est définie sur 720b blocs dans un type de disquette 1.44MB :
    dd if=testfile of=/dev/fd0 bs=720b conv=sync
    Remarque: Si le fichier d'entrée est supérieur à la taille physique du périphérique de sortie, jj vous invite à indiquer un autre périphérique.
  9. Pour copier des blocs d'un fichier d'entrée dont la taille de bloc est définie sur 32k blocs vers un type de bande:
    dd if=inputfile of=/dev/rmt0 bs=32k conv=sync
  10. Pour copier des blocs de données de la bande dans un fichier du répertoire en cours avec une taille de bloc définie sur 32k blocs, procédez comme suit:
    dd if=/dev/rmt0 of=outfile bs=32k conv=sync
  11. Pour copier des blocs à partir d'un fichier d'entrée avec une taille de bloc définie sur 720b, sur une disquette de taille 1.44MB , entrez:
    dd if=testfile of=/dev/fd0 bs=720b conv=sync span=yes
    Remarque: Si le fichier d'entrée est supérieur à la taille physique du périphérique de sortie, dd vous invite à indiquer un autre périphérique.
  12. Pour copier des blocs d'un fichier d'entrée dont la taille de bloc est définie sur 32ksur une bande, entrez:
    dd if=inputfile of=/dev/rmt0 bs=32k conv=sync span=yes
  13. Pour copier des blocs de données à partir d'une bande avec une taille de bloc définie sur 32k, dans un fichier du répertoire en cours, entrez:
    dd if=dev/rmt0 of=outfile bs=32k conv=sync span=yes

Fichiers

Article Descriptif
/usr/bin/dd Contient la commande dd .