Copie physique, transformations : dd
La commande dd réalise une copie physique d'un flux d'entrée vers un flux de sortie. Chaque octet souhaité du flux d'entrée est copié vers le flux de sortie, indépendamment de ce que représente la donnée.
Syntaxe
dd [if=fichier_entree] [of=fichier_sortie] [ibs=nboctets] [obs=nboctets] [bs=nboctets] [skip=nbblocs] [seek=nbblocs] [count=nbblocs]
Principales options :
if=fichier_entree : Fichier à traiter. Si aucun fichier n'est spécifié, l'entrée standard est traité.
of=fichier_sortie : Fichier de sortie. Si aucun fichier n'est spécifié, la sortie standard est utilisée.
ibs=nboctets : Traiter les données en entrée par blocs de nboctets octets (défaut : 512 octets).
obs=nboctets : Ecrire les données en sortie par blocs de nboctets octets (défaut : 512 octets).
bs=nboctets : Traiter les données d'entrée et de sortie par bloc de nboctets.
skip=nbblocs : Sauter nbblocs en entrée avant de commencer le traitement.
seek=nbblocs : En sortie, écrire à partir du bloc nbblocs.
count=nbblocs : Ecrire uniquement nbblocs de l'entrée vers la sortie.
Exemples
Copie du disque /dev/sda sur le disque /dev/sdb par blocs de 8ko
$ fdisk -l
Disque /dev/sda: 8589 Mo, 8589934592 octets
255 têtes, 63 secteurs/piste, 1044 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : 0x00040afc
Périphérique Amorce Début Fin Blocs Id Système
/dev/sda1 * 1 994 7977984 83 Linux
La partition 1 ne se termine pas sur une frontière de cylindre.
/dev/sda2 994 1045 407553 5 Etendue
/dev/sda5 994 1045 407552 82 Linux swap / Solaris
Disque /dev/sdb: 8589 Mo, 8589934592 octets
255 têtes, 63 secteurs/piste, 1044 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : 0x00000000
Le disque /dev/sdb ne contient pas une table de partition valide
$ dd if=/dev/sda of=/dev/sdb bs=8k
1048576+0 enregistrements lus
1048576+0 enregistrements écrits
8589934592 octets (8,6 GB) copiés, 859,097 s, 10,0 MB/s
$
$ fdisk -l
Disque /dev/sda: 8589 Mo, 8589934592 octets
255 têtes, 63 secteurs/piste, 1044 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : 0x00040afc
Périphérique Amorce Début Fin Blocs Id Système
/dev/sda1 * 1 994 7977984 83 Linux
La partition 1 ne se termine pas sur une frontière de cylindre.
/dev/sda2 994 1045 407553 5 Etendue
/dev/sda5 994 1045 407552 82 Linux swap / Solaris
Disque /dev/sdb: 8589 Mo, 8589934592 octets
255 têtes, 63 secteurs/piste, 1044 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : 0x00040afc
Périphérique Amorce Début Fin Blocs Id Système
/dev/sdb1 * 1 994 7977984 83 Linux
La partition 1 ne se termine pas sur une frontière de cylindre.
/dev/sdb2 994 1045 407553 5 Etendue
/dev/sdb5 994 1045 407552 82 Linux swap / Solaris
Idem mais sur un disque sur une machine distante
$ dd if=/dev/sda | ssh 192.168.1.19 dd of=/dev/sdb bs=8k
Supprimer les 5 premiers octets du fichier fic1
$ cat fic1
ceci est un test
$ od -c fic1
0000000 c e c i e s t u n t e s t
0000020 \n
0000021
$ dd bs=1 skip=5 if=fic1 of=fic11
12+0 enregistrements lus
12+0 enregistrements écrits
12 octets (12 B) copiés, 0,00010661 s, 113 kB/s
$ cat fic11
est un test
$ od -c fic11
0000000 e s t u n t e s t \n
0000014
$
Retirer le dernier octet d'un fichier de 6 903 921 octets. La taille du bloc est fixée à 6 903 920 octets. Le nombre de blocs traités est de 1
$ ls -l mon_fichier4
-rw-r--r-- 1 root root 6903921 25 mai 16:36 mon_fichier4
$ dd if=mon_fichier4 of=mon_fichier41 bs=6903920 count=1
1+0 enregistrements lus
1+0 enregistrements écrits
6903920 octets (6,9 MB) copiés, 0,183292 s, 37,7 MB/s
$ ls -l mon_fichier41
-rw-r--r-- 1 root root 6903920 26 mai 11:21 mon_fichier41
$
Ajouter un commentaire