GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Linux DD - 15 exemples avec toutes les options

La commande Linux dd est l'un des utilitaires les plus puissants qui peut être utilisé de différentes manières. Cet outil est principalement utilisé pour copier et convertir des données, il signifie donc duplicateur de données. Cet outil peut être utilisé pour :

  • Sauvegarder et restaurer un disque dur entier ou une partition.
  • Créer un système de fichiers virtuel et des images de sauvegarde de CD ou de DVD appelés fichiers ISO
  • Copiez des régions de fichiers de périphérique bruts comme la sauvegarde de MBR (enregistrement de démarrage principal).
  • Conversion de formats de données tels que ASCII en EBCDIC
  • Convertir les minuscules en majuscules et vice versa.

Seul le superutilisateur peut exécuter cette commande. Vous devez être très prudent lorsque vous utilisez cette commande car une mauvaise utilisation peut entraîner une énorme perte de données. Ainsi, certaines personnes considèrent cet outil comme un destructeur de données.

Syntaxe de la commande dd

L'utilisation de base de la commande dd est plutôt simple car elle ne prend que deux arguments :if =pour spécifier le fichier d'entrée et de =pour spécifier le fichier de sortie. Les arguments de ces options peuvent être des fichiers ou des appareils de blocage. Cependant, je ne recommanderais pas d'utiliser dd pour copier des fichiers car cp le fait de manière beaucoup plus simple. Cependant, vous pouvez l'utiliser pour cloner un disque dur. La syntaxe est

dd if=<source file name> of=<target file name> [Options]

Nous apprendrons différentes options en parcourant des exemples de commandes dd.

1. Sauvegarder et restaurer un disque entier ou une partition

Il est possible de sauvegarder toutes les données d'un disque/partition entier sur un autre disque/partition. Pas une simple copie en tant que commande cp mais une copie de taille de bloc.

un. Sauvegardez tout le disque sur le disque

Vous pouvez copier toutes les données (disque entier) depuis le disque /dev/sda vers /dev/sdb . dd ne sait rien du système de fichiers ou des partitions ; il copiera simplement tout depuis /dev/sda vers /dev/sdb . Vous devez indiquer la taille du bloc à copier à chaque fois avec bs option. Ainsi, cela clonera le disque avec les mêmes données sur la même partition.

# dd if=/dev/sda of=/dev/sdb bs=4096 conv=noerror,sync
97281+0 records in
97280+0 records out
99614720 bytes (100 MB) copied, 2.75838 s, 36.1 MB/s

Cela ne fonctionne que si le deuxième appareil est aussi grand ou plus grand que le premier. Sinon, vous obtenez des partitions tronquées et sans valeur sur la seconde. Ici, if représente le fichier d'entrée, of représente le fichier de sortie et bs représente la taille du bloc (nombre d'octets à lire/écrire à la fois). Assurez-vous d'utiliser des tailles de bloc en multiples de 1024 octets, ce qui équivaut à 1 Ko. Si vous ne spécifiez pas de taille de bloc, utilisez une taille de bloc par défaut de 512 octets. La conv paramètre de valeur pas d'erreur permet à l'outil de continuer à copier les données même s'il rencontre des erreurs. L'option de synchronisation permet d'utiliser des E/S synchronisées.

b. Création d'une image disque dd (image de fichier)

Vous pouvez créer une image d'un disque ou une image de fichier. La sauvegarde d'un disque sur une image sera plus rapide que la copie des données exactes. De plus, l'image disque rend la restauration beaucoup plus facile.

# dd if=/dev/sda of=/tmp/sdadisk.img

Vous pouvez stocker le fichier de sortie où vous voulez mais vous devez donner un nom de fichier se terminant par .img rallonge comme ci-dessus. Au lieu de /tmp/sdadisk.img , vous pouvez le stocker par exemple dans /sdadisk.img si vous voulez.

c. Création d'une image disque compressée

Parce que dd crée le contenu exact d'un disque entier, cela signifie qu'il prend trop de taille. Vous pouvez décider de compresser l'image disque avec la commande ci-dessous

# dd if=/dev/vda | gzip -c >/tmp/vdadisk.img.gz

Le tuyau | L'opérateur transforme la sortie de la commande de gauche en entrée de la commande de droite. Le -c l'option écrit la sortie sur la sortie standard et conserve les fichiers d'origine inchangés.

d. Sauvegardez une partition ou clonez une partition sur une autre

Au lieu d'un disque entier, vous ne pouvez sauvegarder qu'une simple partition. Il vous suffit d'indiquer le nom de la partition dans le fichier d'entrée comme ci-dessous

# dd if=/dev/sda1 of=/dev/sdb1 bs=4096 conv=noerror,sync

Cela synchronisera la partition /dev/sda1 vers /dev/sdb1 . Vous devez vérifier que la taille de /dev/sdb1 doit être supérieur à /dev/sda1 . Ou vous pouvez créer une image de partition comme ci-dessous

# dd if=/dev/sda1 of=/tmp/sda1.img

e. Restauration d'un disque ou d'une image de partition

Enregistrer un disque ou une partition aide à restaurer toutes les données, s'il y a un problème avec notre disque d'origine. Pour restaurer, vous devez inverser le fichier d'entrée avec le fichier de sortie indiqué lors de l'opération de sauvegarde comme ci-dessous.

# dd if=/tmp/sdadisk.img of=/dev/sda

Vous récupérerez les données qui étaient présentes avant l'opération de sauvegarde et non après l'opération

e. Restauration de l'image compressée

Vous devez d'abord indiquer le fichier compressé et le fichier de sortie qui est le disque compressé avant.

# gzip -dc /tmp/vdadisk.img.gz | dd of=/dev/vda

L'option -d ici est de décompresser. Notez le fichier de sortie. Vous pouvez monter le disque restauré pour voir le contenu. Notez que vos données seront ajoutées après la dernière opération de sauvegarde de compression.

2. Création de systèmes de fichiers virtuels/images de sauvegarde de CD ou de DVD sous forme de fichiers iso

Vous pouvez avoir besoin de créer un système de fichiers virtuel sur Linux pour certaines raisons, comme la création d'une machine virtuelle sur votre hôte Linux. Vous pouvez également avoir besoin de créer une image iso de sauvegarde d'un CD ou d'un DVD

un. Création d'un système de fichiers virtuel

Un système de fichiers virtuel est un système de fichiers qui existe dans un fichier, qui à son tour existe sur un disque physique. Vous pouvez en avoir besoin pour créer par exemple un périphérique de swap ou de boucle supplémentaire ou une machine virtuelle. Nous avons besoin de /dev/zero qui est un fichier utilisé pour créer un fichier sans données mais avec la taille requise (un fichier avec tous les zéros). En d'autres termes, cela créera un fichier de données avec tous les zéros dans le fichier qui donnera la taille d'un fichier.

# dd if=/dev/zero of=/file bs=1024K count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.21755 s, 431 MB/s

L'option count fait référence au nombre de blocs d'entrée à copier. Combiné avec la valeur de taille de bloc, il indique la taille totale à copier. Par exemple bs=1024k et count=500 donner un size=1024K*500 =524288000 bytes =524MB

Vérifions maintenant la taille de notre fichier

# ls -lh /file
-rw-r--r-- 1 root root 500M May 17 18:57 /file

Vous pouvez voir que nous avons créé notre système de fichiers virtuel avec la taille indiquée. Vous pouvez maintenant l'utiliser pour créer un périphérique en boucle ou un disque virtuel ou autre chose.

b. Modifier les 512 premiers octets d'un fichier avec des données nulles

Si pendant l'opération vous indiquez un fichier de sortie existant, vous perdrez ses données. Pour certaines raisons, vous pouvez avoir besoin de remplacer une taille de bloc du fichier de sortie.

dd if=/dev/zero of=file1 bs=512 count=1 conv=notrunc

Le notrunc L'option fait référence à ne pas tronquer le fichier, remplacer uniquement les 512 premiers octets, s'il existe. Sinon, vous obtiendrez un fichier de 512 octets

c. Création d'une image iso de sauvegarde d'un CD ou d'un DVD

Vous vous demandez peut-être pourquoi ne pas simplement copier le contenu de votre CD dans un répertoire. Comment géreriez-vous le secteur de démarrage d'un CD ? Vous ne pouvez pas trouver cela en tant que fichier sur l'appareil car ce n'est que le premier secteur. Parce que dd copie secteur par secteur, d'autre part, il copiera également cette information.

# dd if=/dev/cdrom of=/mycd.iso

Vous devez savoir que vous devez utiliser la boucle -o loop option, qui vous permet de monter un fichier comme n'importe quel périphérique normal. Donc, pour monter /mycd.iso sur le /mnt/cd répertoire, procédez comme ci-dessous

# mount -o loop /mycd.iso /mnt/cd

d) Créer une clé USB amorçable

Supposons que nous ayons téléchargé l'image iso centos ici dans ce répertoire "~/Downloads/".

if=~/Downloads/CentOS-8-x86_64-1905-dvd1.iso - le fichier d'entrée se trouve dans le chemin '~/Downloads/CentOS-8-x86_64-1905-dvd1.iso'

of=/dev/sdb - le fichier de sortie est dans le chemin '/dev/sdb'

bs=1M - Lire depuis '~/Downloads/CentOS-8-x86_64-1905-dvd1.iso' et écrire dans '/dev/sdb' 1 Mo de données à la fois.

# dd if=~/Downloads/CentOS-8-x86_64-1905-dvd1.iso of=/dev/sdb bs=1M

3. Sauvegarde et restauration du MBR

Le chargeur de démarrage GRUB est le plus souvent stocké dans le MBR du lecteur amorçable. Le MBR constitue les 512 premiers octets du disque, permettant jusqu'à 466 octets de stockage pour le bootloader. L'espace supplémentaire sera utilisé pour stocker la table de partition de ce lecteur. Si le MBR est corrompu, nous ne pourrons pas démarrer sous Linux.

un. Sauvegarde du MBR

Parce que le MBR constitue les 512 premiers octets du disque, nous avons juste besoin de copier cette taille de bloc

# dd if=/dev/sda of=/tmp/sdambr.img bs=512 count=1

Avec le count=1 et bs=512 , seuls 512 octets seront copiés, ce qui correspond à la taille de notre MBR.

Vous pouvez afficher le MBR enregistré avec la commande od qui vide les fichiers en octal et autres formats comme ci-dessous

# od -xa /tmp/sdambr.img
0000000    bf52    81f4    8b66    832d    087d    0f00    e284    8000
          R   ?   t soh   f  vt   - etx   }  bs nul  si eot   b nul nul
0000020    ff7c    7400    6646    1d8b    8b66    044d    3166    b0c0
          | del nul   t   F   f  vt  gs   f  vt   M eot   f   1   @   0

-a l'option sélectionne les caractères nommés et -x sélectionne les unités hexadécimales de 2 octets

b. Sauvegarde des données de démarrage du MBR à l'exclusion de la table de partition

Les données du MBR 512 octets sont situées dans le premier secteur du disque dur. Il se compose d'un bootstrap de 446 octets, d'une table de partition de 64 octets et d'une signature de 2 octets. Cela signifie que nous pouvons exclure la table de partition et la signature des octets tout en sauvegardant le MBR en ne conservant qu'une taille de bloc égale à la taille du bootstrap.

# dd if=/dev/sda of=/tmp/sdambr2.img bs=446 count=1

c. Restauration du MBR à partir de l'image MBR

Vous pouvez restaurer votre MBR comme indiqué sur les commandes précédentes avec

# dd if=/tmp/sdambr.img of=/dev/sda

3. Conversion des formats de données

Si un fichier d'entrée utilise un jeu de caractères qui n'est pas le jeu de caractères natif de l'ordinateur hôte, l'opérateur d'importation doit effectuer une conversion. Par exemple, si ASCII est le format natif des chaînes sur votre ordinateur hôte, mais que le fichier de données d'entrée représente des chaînes utilisant EBCDIC, vous devez convertir EBCDIC en ASCII et vice versa.

un. Convertir le format de données d'un fichier d'EBCDIC en ASCII

S'il y a un fichier ebcdic avec vous, principalement récupéré à partir de systèmes mainframe, alors, vous souhaitez les convertir en ASCII pour apporter des modifications à l'aide d'éditeurs de texte sur des serveurs UNIX

# dd if=textfile.ebcdic of=textfile.ascii conv=ascii

La conv le paramètre de valeur est maintenant ascii car nous convertissons EBCDIC en ASCII

b. Convertir le format de données d'un fichier d'ASCII en EBCDIC

Après avoir modifié la version ASCII et une fois cela fait, vous pouvez la reconvertir en EBCDIC pour qu'elle soit utilisée par votre application.

# dd if=textfile.ascii of=textfile.ebcdic conv=ebcdic

La conv le paramètre de valeur est maintenant e bcdic parce que nous convertissons d'ASCII en EBCDIC. Si vous remplacez simplement un nombre particulier d'octets par un nombre équivalent d'octets ayant des caractères différents, la conversion sera fluide et l'application lisant le fichier ne devrait avoir aucun problème.

4. Conversion de la casse d'un fichier

La commande DD peut également être utilisée pour une chose étonnante. Il peut convertir tout le texte (alphabets) d'un fichier en majuscules ou minuscules et vice versa. Pour l'exemple ci-dessous, nous aurons un fichier pour les tests.

# cat file10
test dd convert

un. Convertir un fichier en majuscule

Comme notre exemple de fichier texte est en minuscules, nous allons le convertir en majuscules

# dd if=~/file10 of=~/file20 conv=ucase

La commande créera le nouveau fichier indiqué. Voyez cela maintenant conv l'option prend ucase valeur. Vérifions le résultat

# cat file20 
TEST DD CONVERT

b. Convertir un fichier en minuscules

Maintenant, nous allons faire l'opération inverse qui convertira en minuscules

# dd if=~/file20 of=~/file30 conv=lcase

Vérifiez que nous utilisons lcase  de conv option pour convertir des majuscules en minuscules.

# cat file30 
test dd convert

La commande dd ne convertit pas les noms de fichiers, uniquement son contenu.

Conclusion

La commande dd, bien qu'il ne s'agisse pas techniquement d'une commande d'archivage, est similaire à certains égards car elle peut copier une partition ou un disque entier dans un fichier et vice versa.


Linux
  1. Commande Linux wc avec exemples

  2. Commande de tri Linux avec exemples

  3. Commande Linux Tee avec exemples

  4. Commande principale Linux avec exemples

  5. Commande JQ sous Linux avec exemples

Commande de CD Linux avec exemples

Commande Linux watch avec exemples

Commande Wait sous Linux avec des exemples

Commande d'exportation Linux avec exemples

Commande de redémarrage sous Linux avec des exemples

Commande IP Linux avec exemples