publish: dd
This commit is contained in:
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"title": "dd",
|
|
||||||
"_updated_at": "2026-05-16 17:13:11",
|
|
||||||
"slug": "dd",
|
|
||||||
"published": true,
|
|
||||||
"published_at": "2023-01-11 17:37",
|
|
||||||
"category": "Informatique",
|
|
||||||
"tags": [],
|
|
||||||
"seo_title": "",
|
|
||||||
"seo_description": ""
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
# dd
|
|
||||||
|
|
||||||
`dd` permet de **copier** et **convertir** des données au niveau bloc, sans passer par la sémantique d'un système de fichiers.
|
|
||||||
|
|
||||||
Le nom officiel signifie **Dataset Definition** (héritage d'IBM/JCL), mais sa réputation lui a valu les surnoms ironiques de **Data Destroyer** ou **Disk Destroyer** : une faute de frappe sur `of=` peut écraser un disque entier sans confirmation.
|
|
||||||
|
|
||||||
`dd` permet de manipuler des zones qui n'appartiennent pas à un système de fichiers : **secteur d'amorçage** (MBR), **tables de partition**, **espace libre contenant des traces de fichiers effacés**, etc. L'un de ses usages principaux est donc la création d'une copie exacte (bit à bit) d'une partition ou d'un disque.
|
|
||||||
|
|
||||||
> Astuce : pour les copies longues sur supports défectueux, préférez [`ddrescue`](https://www.gnu.org/software/ddrescue/), qui reprend la copie après une erreur de lecture au lieu d'abandonner.
|
|
||||||
|
|
||||||
## Exemples d'utilisation
|
|
||||||
|
|
||||||
### Créer une clé USB bootable
|
|
||||||
Pour écrire une image ISO sur une clé USB.
|
|
||||||
|
|
||||||
On considère :
|
|
||||||
- `/dev/sdX` : la clé USB **non montée**
|
|
||||||
- `debian.iso` : l'image ISO présente dans le dossier courant
|
|
||||||
|
|
||||||
```
|
|
||||||
# dd if=debian.iso of=/dev/sdX bs=1M; sync
|
|
||||||
```
|
|
||||||
|
|
||||||
### Réaliser une image d'un DVD
|
|
||||||
Créer une image ISO de sauvegarde d'un CD ou d'un DVD :
|
|
||||||
|
|
||||||
On considère :
|
|
||||||
- `/dev/cdrom` : le chemin d'accès au lecteur
|
|
||||||
- `debian.iso` : le nom de l'image générée
|
|
||||||
|
|
||||||
```
|
|
||||||
$ dd if=/dev/cdrom of=debian.iso
|
|
||||||
```
|
|
||||||
|
|
||||||
### Découper un fichier
|
|
||||||
Pour découper un fichier en tranches de 100 Mio (avec `dd`, `K` = 1024 octets, donc `bs=10K count=10K` = 100 Mio par tranche).
|
|
||||||
|
|
||||||
On considère :
|
|
||||||
- `grosfichier` : le fichier à découper
|
|
||||||
- `grosfichier-partN` : les fragments successifs
|
|
||||||
|
|
||||||
```
|
|
||||||
$ dd bs=10K count=10K if=grosfichier of=grosfichier-part1
|
|
||||||
$ dd bs=10K count=10K skip=10K if=grosfichier of=grosfichier-part2
|
|
||||||
$ dd bs=10K count=10K skip=20K if=grosfichier of=grosfichier-part3
|
|
||||||
$ dd bs=10K count=10K skip=30K if=grosfichier of=grosfichier-part4
|
|
||||||
```
|
|
||||||
|
|
||||||
> En pratique, la commande `split` est mieux adaptée à ce cas d'usage.
|
|
||||||
|
|
||||||
### Copier la table MBR
|
|
||||||
Pour sauvegarder le MBR (et la table des partitions primaires) d'un disque.
|
|
||||||
|
|
||||||
On considère :
|
|
||||||
- `/dev/sda` : le disque source
|
|
||||||
- `full-mbr.bin` : le fichier de sauvegarde
|
|
||||||
|
|
||||||
```
|
|
||||||
$ dd if=/dev/sda of=full-mbr.bin bs=512 count=1
|
|
||||||
```
|
|
||||||
|
|
||||||
### Effacer un disque avec des zéros
|
|
||||||
Pour écraser toutes les données d'un disque en le remplissant de zéros :
|
|
||||||
|
|
||||||
```
|
|
||||||
$ dd if=/dev/zero of=/dev/sda
|
|
||||||
```
|
|
||||||
|
|
||||||
> Pour un effacement sécurisé, préférez `shred` (plusieurs passes avec données aléatoires) ou `blkdiscard` sur SSD.
|
|
||||||
|
|
||||||
### Tester le débit d'un disque
|
|
||||||
`dd` permet une mesure rapide des performances séquentielles en écriture.
|
|
||||||
|
|
||||||
Pour isoler la performance d'écriture, on utilise `/dev/zero` comme source. Écrire directement sur le périphérique (`of=/dev/sda`) donnerait la mesure la plus pure, mais détruirait son contenu : on passe donc par un fichier (`of=/media/disk_6/testfile`), ce qui inclut le coût du système de fichiers — c'est-à-dire les conditions réelles d'utilisation.
|
|
||||||
|
|
||||||
L'option `oflag=direct` contourne le cache du noyau pour mesurer le disque, pas la RAM. Notez qu'avec `bs=1G`, `dd` alloue 1 Gio en mémoire ; réduisez la valeur (ex. `bs=512M`) si la RAM disponible est limitée.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ dd if=/dev/zero of=/media/disk_6/testfile bs=1G count=1 oflag=direct
|
|
||||||
```
|
|
||||||
|
|
||||||
## Bibliographie
|
|
||||||
- <https://www.gnu.org/software/coreutils/dd>
|
|
||||||
- <https://fr.wikipedia.org/wiki/Dd_(Unix)>
|
|
||||||
@@ -1,86 +1,84 @@
|
|||||||
# dd
|
# dd
|
||||||
|
|
||||||
dd permet de **copier** et **convertir des fichiers de type block**
|
`dd` permet de **copier** et **convertir** des données au niveau bloc, sans passer par la sémantique d'un système de fichiers.
|
||||||
|
|
||||||
**dd** signifie **Data Destroyer** ou **Data Dump** ou **Dataset Definition**
|
Le nom officiel signifie **Dataset Definition** (héritage d'IBM/JCL), mais sa réputation lui a valu les surnoms ironiques de **Data Destroyer** ou **Disk Destroyer** : une faute de frappe sur `of=` peut écraser un disque entier sans confirmation.
|
||||||
|
|
||||||
Il est possible d'utiliser la commande **ddrescue** qui reprend la copie en cas d'arrêt intempestif.
|
`dd` permet de manipuler des zones qui n'appartiennent pas à un système de fichiers : **secteur d'amorçage** (MBR), **tables de partition**, **espace libre contenant des traces de fichiers effacés**, etc. L'un de ses usages principaux est donc la création d'une copie exacte (bit à bit) d'une partition ou d'un disque.
|
||||||
|
|
||||||
**dd** permet de reproduire des zones de disque qui ne font pas partie d'un système de fichier tels que le **secteur de démarrage** (le MBR), les **tables de partition**, les **traces laissées sur le disque par des fichiers effacés**, etc... L'un de ses emplois les plus importants est donc la création d'une copie de sauvegarde exacte d'une partition.
|
> Astuce : pour les copies longues sur supports défectueux, préférez [`ddrescue`](https://www.gnu.org/software/ddrescue/), qui reprend la copie après une erreur de lecture au lieu d'abandonner.
|
||||||
|
|
||||||
Le programme `dd` lance deux tâches asynchrones, d'une part de lecture et d'autre part d'écriture, contrairement à `cp` qui copie un fichier de façon séquentielle (lecture d'une partie du fichier sur un premier périphérique, puis copie sur le second).
|
## Exemples d'utilisation
|
||||||
|
|
||||||
## - Exemples d'utilisation
|
### Créer une clé USB bootable
|
||||||
### - Créer une clé USB bootable
|
Pour écrire une image ISO sur une clé USB.
|
||||||
Pour créer une clé USB bootable à partir d'une image ISO.
|
|
||||||
|
|
||||||
On considère :
|
On considère :
|
||||||
- `/dev/sdX` la clé non montée
|
- `/dev/sdX` : la clé USB **non montée**
|
||||||
- `debian.iso` est l'image ISO présent dans le dossier courant
|
- `debian.iso` : l'image ISO présente dans le dossier courant
|
||||||
|
|
||||||
```
|
```
|
||||||
# dd if=debian.iso of=/dev/sdX bs=1M; sync
|
# dd if=debian.iso of=/dev/sdX bs=1M; sync
|
||||||
```
|
```
|
||||||
|
|
||||||
### - Réaliser une image d'un DVD
|
### Réaliser une image d'un DVD
|
||||||
Créé une image ISO de sauvegarde d'un CD ou d'un DVD :
|
Créer une image ISO de sauvegarde d'un CD ou d'un DVD :
|
||||||
|
|
||||||
On considère :
|
On considère :
|
||||||
- `/dev/cdrom` le chemin d'accès au DVD
|
- `/dev/cdrom` : le chemin d'accès au lecteur
|
||||||
- `debian.iso` est le nom de l'image ISO
|
- `debian.iso` : le nom de l'image générée
|
||||||
|
|
||||||
```
|
```
|
||||||
$ dd if=/dev/cdrom of=debian.iso
|
$ dd if=/dev/cdrom of=debian.iso
|
||||||
```
|
```
|
||||||
|
|
||||||
### - Découper un fichier
|
### Découper un fichier
|
||||||
Pour découper un fichier en tranches de 100 Mio.
|
Pour découper un fichier en tranches de 100 Mio (avec `dd`, `K` = 1024 octets, donc `bs=10K count=10K` = 100 Mio par tranche).
|
||||||
|
|
||||||
On considère :
|
On considère :
|
||||||
- `grosfichier` le nom du fichier à découper
|
- `grosfichier` : le fichier à découper
|
||||||
- `grosfichier-part1` le nom du 1er fichier de 100 Mio.
|
- `grosfichier-partN` : les fragments successifs
|
||||||
- `grosfichier-part2` le nom du 2nd fichier des 100 Mio suivant.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
$ dd bs=10K count=10K if=grosfichier of=grosfichier-part1
|
$ dd bs=10K count=10K if=grosfichier of=grosfichier-part1
|
||||||
$ dd bs=10K count=10K skip=10K if=grosfichier of=grosfichier-part2
|
$ dd bs=10K count=10K skip=10K if=grosfichier of=grosfichier-part2
|
||||||
$ dd bs=10K count=10K skip=20K if=grosfichier of=grosfichier-part3
|
$ dd bs=10K count=10K skip=20K if=grosfichier of=grosfichier-part3
|
||||||
$ dd bs=10K count=10K skip=30K if=grosfichier of=grosfichier-part4
|
$ dd bs=10K count=10K skip=30K if=grosfichier of=grosfichier-part4
|
||||||
```
|
```
|
||||||
|
|
||||||
Remarque, la commande `split` aurait été plus appropriée.
|
> En pratique, la commande `split` est mieux adaptée à ce cas d'usage.
|
||||||
|
|
||||||
### - Copier la table MBR
|
### Copier la table MBR
|
||||||
Pour faire une copie du MBR (table des partitions principales comprises) d'un disque.
|
Pour sauvegarder le MBR (et la table des partitions primaires) d'un disque.
|
||||||
|
|
||||||
On considère :
|
On considère :
|
||||||
- `/dev/hda` le disque dur contenant le MBR
|
- `/dev/sda` : le disque source
|
||||||
- `full-mbr.bin` le nom du fichier contant le MBR sauvegardé
|
- `full-mbr.bin` : le fichier de sauvegarde
|
||||||
|
|
||||||
```
|
```
|
||||||
$ dd if=/dev/hda of=full-mbr.bin bs=512 count=1
|
$ dd if=/dev/sda of=full-mbr.bin bs=512 count=1
|
||||||
```
|
```
|
||||||
|
|
||||||
### - Effacer un disque dur avec des zéros
|
### Effacer un disque avec des zéros
|
||||||
Pour détruire les données d'un disque dur `hda` en le remplissant de zéros.
|
Pour écraser toutes les données d'un disque en le remplissant de zéros :
|
||||||
|
|
||||||
```
|
```
|
||||||
$ dd if=/dev/zero of=/dev/hda
|
$ dd if=/dev/zero of=/dev/sda
|
||||||
```
|
```
|
||||||
|
|
||||||
Remarque, la commande `shred` aurait été plus approprié.
|
> Pour un effacement sécurisé, préférez `shred` (plusieurs passes avec données aléatoires) ou `blkdiscard` sur SSD.
|
||||||
|
|
||||||
### - Tester le débit des disques dur avec dd
|
### Tester le débit d'un disque
|
||||||
Sous Linux, la commande `dd` peut être utilisée pour une mesure de performance en lecture et écriture séquentielle.
|
`dd` permet une mesure rapide des performances séquentielles en écriture.
|
||||||
|
|
||||||
Pour se concentrer sur l'écriture des données sur un disque, la source des informations sera une suite de zero disponible depuis le chemin `/dev/zero`. Si nous voulions mesurer la performance du disque, il aurait fallu écrire directement sur le chemin du disque (par exemple of=/dev/sda), mais cela effacerait le contenu du disque. En indiquant le chemin d'un fichier `of=/media/disk_6/test`, nous devons passer par le systèmes de gestion de fichiers, qui peut nous ralentir. Mais cela n’enlèvera pas les conditions réelles que nous pouvons avoir avec un disque.
|
Pour isoler la performance d'écriture, on utilise `/dev/zero` comme source. Écrire directement sur le périphérique (`of=/dev/sda`) donnerait la mesure la plus pure, mais détruirait son contenu : on passe donc par un fichier (`of=/media/disk_6/testfile`), ce qui inclut le coût du système de fichiers — c'est-à-dire les conditions réelles d'utilisation.
|
||||||
|
|
||||||
En utilisant `if=/dev/zero et bs=1G`, Linux aura besoin de 1GB d'espace disponible dans la RAM. Si vous n'avez pas suffisamment d'espace disponible, pensez à réduire cette valeur, par exemple à 512MB.
|
L'option `oflag=direct` contourne le cache du noyau pour mesurer le disque, pas la RAM. Notez qu'avec `bs=1G`, `dd` alloue 1 Gio en mémoire ; réduisez la valeur (ex. `bs=512M`) si la RAM disponible est limitée.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ dd if=/dev/zero of=/media/disk_6/testfile bs=1G count=1 oflag=direct
|
$ dd if=/dev/zero of=/media/disk_6/testfile bs=1G count=1 oflag=direct
|
||||||
```
|
```
|
||||||
|
|
||||||
## - Biblio
|
## Bibliographie
|
||||||
- <https:*www.gnu.org/software/coreutils/dd>
|
- <https://www.gnu.org/software/coreutils/dd>
|
||||||
- <https:*fr.wikipedia.org/wiki/Dd_(Unix)>
|
- <https://fr.wikipedia.org/wiki/Dd_(Unix)>
|
||||||
@@ -4,15 +4,24 @@
|
|||||||
"title": "dd",
|
"title": "dd",
|
||||||
"author": "cedric@abonnel.fr",
|
"author": "cedric@abonnel.fr",
|
||||||
"published": true,
|
"published": true,
|
||||||
"published_at": "2023-01-11 17:37:35",
|
"featured": false,
|
||||||
|
"published_at": "2023-01-11 17:37",
|
||||||
"created_at": "2023-01-11 17:37:35",
|
"created_at": "2023-01-11 17:37:35",
|
||||||
"updated_at": "2023-01-11 17:37:35",
|
"updated_at": "2026-05-16 17:13:14",
|
||||||
"revisions": [],
|
"revisions": [
|
||||||
|
{
|
||||||
|
"n": 1,
|
||||||
|
"date": "2026-05-16 17:13:14",
|
||||||
|
"comment": "Contenu modifié",
|
||||||
|
"title": "dd"
|
||||||
|
}
|
||||||
|
],
|
||||||
"cover": "",
|
"cover": "",
|
||||||
"files_meta": [],
|
"files_meta": [],
|
||||||
"external_links": [],
|
"external_links": [],
|
||||||
"seo_title": "",
|
"seo_title": "",
|
||||||
"seo_description": "",
|
"seo_description": "",
|
||||||
"og_image": "",
|
"og_image": "",
|
||||||
"category": "Informatique"
|
"category": "Informatique",
|
||||||
|
"tags": []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
# dd
|
||||||
|
|
||||||
|
dd permet de **copier** et **convertir des fichiers de type block**
|
||||||
|
|
||||||
|
**dd** signifie **Data Destroyer** ou **Data Dump** ou **Dataset Definition**
|
||||||
|
|
||||||
|
Il est possible d'utiliser la commande **ddrescue** qui reprend la copie en cas d'arrêt intempestif.
|
||||||
|
|
||||||
|
**dd** permet de reproduire des zones de disque qui ne font pas partie d'un système de fichier tels que le **secteur de démarrage** (le MBR), les **tables de partition**, les **traces laissées sur le disque par des fichiers effacés**, etc... L'un de ses emplois les plus importants est donc la création d'une copie de sauvegarde exacte d'une partition.
|
||||||
|
|
||||||
|
Le programme `dd` lance deux tâches asynchrones, d'une part de lecture et d'autre part d'écriture, contrairement à `cp` qui copie un fichier de façon séquentielle (lecture d'une partie du fichier sur un premier périphérique, puis copie sur le second).
|
||||||
|
|
||||||
|
## - Exemples d'utilisation
|
||||||
|
### - Créer une clé USB bootable
|
||||||
|
Pour créer une clé USB bootable à partir d'une image ISO.
|
||||||
|
|
||||||
|
On considère :
|
||||||
|
- `/dev/sdX` la clé non montée
|
||||||
|
- `debian.iso` est l'image ISO présent dans le dossier courant
|
||||||
|
|
||||||
|
```
|
||||||
|
# dd if=debian.iso of=/dev/sdX bs=1M; sync
|
||||||
|
```
|
||||||
|
|
||||||
|
### - Réaliser une image d'un DVD
|
||||||
|
Créé une image ISO de sauvegarde d'un CD ou d'un DVD :
|
||||||
|
|
||||||
|
On considère :
|
||||||
|
- `/dev/cdrom` le chemin d'accès au DVD
|
||||||
|
- `debian.iso` est le nom de l'image ISO
|
||||||
|
|
||||||
|
```
|
||||||
|
$ dd if=/dev/cdrom of=debian.iso
|
||||||
|
```
|
||||||
|
|
||||||
|
### - Découper un fichier
|
||||||
|
Pour découper un fichier en tranches de 100 Mio.
|
||||||
|
|
||||||
|
On considère :
|
||||||
|
- `grosfichier` le nom du fichier à découper
|
||||||
|
- `grosfichier-part1` le nom du 1er fichier de 100 Mio.
|
||||||
|
- `grosfichier-part2` le nom du 2nd fichier des 100 Mio suivant.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ dd bs=10K count=10K if=grosfichier of=grosfichier-part1
|
||||||
|
$ dd bs=10K count=10K skip=10K if=grosfichier of=grosfichier-part2
|
||||||
|
$ dd bs=10K count=10K skip=20K if=grosfichier of=grosfichier-part3
|
||||||
|
$ dd bs=10K count=10K skip=30K if=grosfichier of=grosfichier-part4
|
||||||
|
```
|
||||||
|
|
||||||
|
Remarque, la commande `split` aurait été plus appropriée.
|
||||||
|
|
||||||
|
### - Copier la table MBR
|
||||||
|
Pour faire une copie du MBR (table des partitions principales comprises) d'un disque.
|
||||||
|
|
||||||
|
On considère :
|
||||||
|
- `/dev/hda` le disque dur contenant le MBR
|
||||||
|
- `full-mbr.bin` le nom du fichier contant le MBR sauvegardé
|
||||||
|
|
||||||
|
```
|
||||||
|
$ dd if=/dev/hda of=full-mbr.bin bs=512 count=1
|
||||||
|
```
|
||||||
|
|
||||||
|
### - Effacer un disque dur avec des zéros
|
||||||
|
Pour détruire les données d'un disque dur `hda` en le remplissant de zéros.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ dd if=/dev/zero of=/dev/hda
|
||||||
|
```
|
||||||
|
|
||||||
|
Remarque, la commande `shred` aurait été plus approprié.
|
||||||
|
|
||||||
|
### - Tester le débit des disques dur avec dd
|
||||||
|
Sous Linux, la commande `dd` peut être utilisée pour une mesure de performance en lecture et écriture séquentielle.
|
||||||
|
|
||||||
|
Pour se concentrer sur l'écriture des données sur un disque, la source des informations sera une suite de zero disponible depuis le chemin `/dev/zero`. Si nous voulions mesurer la performance du disque, il aurait fallu écrire directement sur le chemin du disque (par exemple of=/dev/sda), mais cela effacerait le contenu du disque. En indiquant le chemin d'un fichier `of=/media/disk_6/test`, nous devons passer par le systèmes de gestion de fichiers, qui peut nous ralentir. Mais cela n’enlèvera pas les conditions réelles que nous pouvons avoir avec un disque.
|
||||||
|
|
||||||
|
En utilisant `if=/dev/zero et bs=1G`, Linux aura besoin de 1GB d'espace disponible dans la RAM. Si vous n'avez pas suffisamment d'espace disponible, pensez à réduire cette valeur, par exemple à 512MB.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ dd if=/dev/zero of=/media/disk_6/testfile bs=1G count=1 oflag=direct
|
||||||
|
```
|
||||||
|
|
||||||
|
## - Biblio
|
||||||
|
- <https:*www.gnu.org/software/coreutils/dd>
|
||||||
|
- <https:*fr.wikipedia.org/wiki/Dd_(Unix)>
|
||||||
Reference in New Issue
Block a user