L'ensemble du périphérique de sortie est effacé, que sa taille soit un multiple de la taille de bloc à laquelle vous passez dd
ou non.
L' notrunc
indicateur n'a aucun effet lorsque la sortie est un fichier de périphérique, car la troncature d'un fichier de périphérique n'a aucun effet. Si la sortie était un fichier normal, cela aurait pour effet que le fichier de sortie n'est pas tronqué avant l'écriture, ce qui sur certains systèmes de fichiers signifie que les anciennes données sont écrasées (par opposition à l'écriture de nouveaux blocs de données et à laisser le reste non attaché), cependant, cela ne serait pas utile car cette propriété n'est pas garantie par tous les systèmes de fichiers et de plus, la commande non seulement écraserait le fichier, mais continuerait d'écrire jusqu'à ce qu'il soit rempli le disque de sortie (ou une autre erreur se produit).
Au lieu d'utiliser dd
et de vous soucier de savoir si vous l'utilisez correctement (comme cela arrive, cela fonctionne dans ce cas particulier, mais c'est compliqué et parfois ne fonctionne pas ), utilisez simplementcat
.
cat /dev/zero >/dev/sdX
Malgré la croyance populaire sur le Web, il n'y a absolument aucune magie dd
qui le rend mieux adapté à l'écriture sur un disque. La magie est dans les /dev
fichiers. Tout outil capable de gérer des données binaires, tel que tout moderne cat
ou head
, peut faire le même travail que dd
si vous passez des drapeaux tels que seek
ou skip
.
Notez qu'un problème partagé par dd
et cat
est qu'en cas de succès, ils afficheront une erreur avec «Aucun espace laissé sur l'appareil» (ENOSPC). Si vous mettez cela dans un script, vous devrez soit vérifier que l'erreur est ENOSPC ou utiliser une méthode différente. Une méthode plus fiable consiste à déterminer d'abord la taille de l'appareil (par exemple, /proc/partitions
sous Linux), puis à écrire exactement le bon nombre d'octets avec un outil tel que head
.
size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX