web-dev-qa-db-fra.com

Pourquoi utilisons-nous cp pour copier des fichiers et non dd? (en dérivés unix)

Pour la copie normale de fichiers dans * nix, je n’ai jamais vu que des personnes utiliser cp (par exemple, cp /mnt/mydevice/myfile ~/myfile), mais j’ai finalement rencontré dd, qui semble faire exactement la même chose (dd if=/mnt/mydevice/myfile of=~/myfile). Je vois qu’ils ont différents paramètres disponibles (dd semble mieux pour une copie ajustée), mais ils semblent redondants. Ces outils font-ils vraiment la même chose?

21
user232105

Pour répondre à votre question principale, non, ils ne font pas la même chose.

dd fonctionne sur le fichier que vous spécifiez, ce qui permet de copier des données entre périphériques, ou d'un périphérique vers un fichier. Ceci est couramment utilisé pour déplacer des données si des périphériques sont spécifiquement impliqués (créer une image ISO à partir d'un disque de CD-ROM, par exemple: dd if =/dev/cdrom of = mycdrom.iso), ou de sauvegarder des périphériques bruts (parfois utilisés dans des bases de données RAC). : dd if =/dev/raw/raw1 of = device_raw1)

cp est utilisé pour dupliquer le contenu d'un fichier dans un nouveau fichier ou dans un nouvel emplacement. les éléments que vous souhaitez spécifiquement sont la préservation de la propriété, l'horodatage et le mode (droits), ainsi que la possibilité de reprendre l'opération (= pouvoir copier des répertoires).

Source

13
Kruug

Ils font la même chose SAUF si vous spécifiez une des options pour dd qui limite les octets copiés, tels que seek ou skip ou count ou si vous utilisez les options dd pour muter des octets tels que conv. Si vous n’utilisez pas l’une de ces options pour dd et que vous utilisez simplement les options les plus couramment vues telles que if, of, bs, les deux utilitaires font la même chose: ouvrez les deux fichiers, lisez à partir de l’entrée, écrivez dans la sortie jusqu’à ce que l'entrée est épuisée ou la sortie ne peut accepter plus d'octets.

Il y a beaucoup de superstition à propos de la lecture et de l'écriture de fichiers "périphériques" stipulant que vous devez utiliser dd pour ces éléments, mais c'est justement cela, la superstition. dd ne fait rien de différent, nous ouvrons simplement des fichiers et lisons et écrivons des octets.

9
stew