Contexte
Je copie des CD / DVD de données dans des fichiers ISO pour les utiliser plus tard sans en avoir besoin dans le lecteur.
Je cherche sur le net des procédures et j'en ai trouvé beaucoup:
Utilisation de
cat
pour copier un support: http://www.yolinux.com/TUTORIALS/LinuxTutorialCDBurn.htmlcat /dev/sr0 > image.iso
Utilisation de
dd
pour le faire (apparemment le plus utilisé): http://www.linuxjournal.com/content/archiving-cds-iso-commandlinedd if=/dev/cdrom bs=blocksize count=count of=/path/to/isoimage.iso
Utilisation de juste
pv
pour accomplir ceci: Voirman pv
pour plus d'informations, bien qu'en voici un extrait:Taking an image of a disk, skipping errors: pv -EE /dev/sda > disk-image.img Writing an image back to a disk: pv disk-image.img > /dev/sda Zeroing a disk: pv < /dev/zero > /dev/sda
Je ne sais pas si tous devraient être équivalents, bien que j'en ai testé certains (en utilisant l' md5sum
outil) et, au moins, dd
et nepv
soient pas équivalents. Voici à la md5sum
fois le lecteur et les fichiers générés à l'aide de chaque procédure:
md5 de la procédure dd: 71b676875b0194495060b38f35237c3c
md5 de la procédure pv: f3524d81fdeeef962b01e1d86e6acc04
EDIT: Cette sortie provenait d'un autre CD que la sortie donnée. En fait, j'ai réalisé qu'il y avait des faits intéressants que je fournissais comme réponse.
En fait, la taille de chaque fichier est différente par rapport à l'autre.
Alors, existe-t-il une meilleure procédure pour copier un CD / DVD ou est-ce que j'utilise les commandes de manière incorrecte?
Plus d'informations sur la situation
Voici plus d'informations sur le scénario de test que j'utilise pour vérifier les procédures que j'ai trouvées jusqu'à présent:
isoinfo -d i /dev/sr0
Sortie: https://gist.github.com/JBFWP286/7f50f069dc5d1593ba62#file-isoinfo-output-19-aug-2015
dd
de copier les médias, avec checksums de sortie et informations sur l' image de sortie: https://gist.github.com/JBFWP286/75decda0a67605590d32#file-dd-output-with-md5-and-sha256-19-aug-2015
pv
de copier les médias, avec checksums de sortie et informations sur l' image de sortie: https://gist.github.com/JBFWP286/700a13fe0a2f06ce5e7a#file-pv-output-with-md5-and-sha256-19-aug-2015
Toute aide serait appréciée!
cmp file1 file2
? avez-vous utilisédd
avec le mauvaiscount=
(ou vraiment n'importe quel nombre qui n'est pas nécessaire si vous voulez le tout?). Lire les erreurs dans dmesg?dd
commande exacte que vous avez utilisée (quelle taille de bloc? Quel compte?), (2) les tailles et les sommes de contrôle de toutes les sorties et (3) toute information indépendante dont vous disposez concernant la quantité de données sur le disque optique source. ……………… PS Pourquoi utilisez-vouscount=
surdd
? Vous voulez copier l'intégralité de l'image disque, n'est-ce pas?count=
dit "copiez ce nombre puis arrêtez".isoinfo -d -i /dev/cdrom
pour connaître le nombre de comptages et l'utiliser - en fait, il dit qu'on ne devrait pas utiliser uniquementdd
. "Dans tous les cas, si vous voulez une image ISO correcte de ce CD, vous devez obtenir la taille et le nombre de blocs corrects avant de créer votre image."Réponses:
Toutes les commandes suivantes sont équivalentes. Ils lisent les octets du CD
/dev/sr0
et les écrivent dans un fichier appeléimage.iso
.Pourquoi voudriez-vous utiliser l'un sur l'autre?
Simplicité. Par exemple, si vous connaissez déjà
cat
oucp
, vous n'avez pas besoin d'apprendre une autre commande.Robustesse. Celui-ci est un peu une variante de simplicité. Quel est le risque que la modification de la commande modifie son action? Voyons quelques exemples:
set -o noclobber
vous devez vous assurer de ne rien écraser; cependant, vous pourriez écraser un périphérique si vous écrivez accidentellement>/dev/sda
(pour un CD, qui est en lecture seule, il n'y a aucun risque, bien sûr). Cela parle en faveur decat /dev/sr0 >image.iso
(difficile de se tromper de manière dommageable) par rapport à des alternatives telles quetee </dev/sr0 >image.iso
(si vous inversez les redirections ou oubliez l'entrée, voustee
allez écrire/dev/sr0
).cat
: vous pouvez accidentellement concaténer deux fichiers. Cela laisse les données facilement récupérables.dd
:i
eto
sont proches du clavier, et quelque peu inhabituel. Il n'y a pas d'équivalentnoclobber
,of=
écrasera volontiers quoi que ce soit. La syntaxe de redirection est moins sujette aux erreurs.cp
: si vous échangez accidentellement la source et la cible, le périphérique sera écrasé (encore une fois, en supposant un périphérique non en lecture seule). Sicp
est invoqué avec certaines options telles que-R
ou-a
que certaines personnes ajoutent via un alias, il copiera le nœud du périphérique plutôt que le contenu du périphérique.Fonctionnalité supplémentaire. Le seul outil ici qui possède des fonctionnalités supplémentaires utiles est
pv
, avec ses puissantes options de génération de rapports.Mais ici, vous pouvez vérifier combien a été copié en regardant la taille du fichier de sortie de toute façon.
Performance. Il s'agit d'un processus lié aux E / S; la principale influence sur les performances est la taille du tampon: l'outil lit un morceau de la source, écrit le morceau dans la destination, répète. Si le bloc est trop petit, l'ordinateur passe son temps à basculer entre les tâches. Si le bloc est trop grand, les opérations de lecture et d'écriture ne peuvent pas être parallélisées. La taille de bloc optimale sur un PC est généralement de l'ordre de quelques mégaoctets, mais cela dépend évidemment beaucoup du système d'exploitation, du matériel et de ce que l'ordinateur fait d'autre. J'ai fait des tests de performances pour les copies de disque dur à disque dur il y a un certain temps, sous Linux, ce qui a montré que pour les copies sur le même disque,
dd
avec une grande taille de tampon a l'avantage, mais pour les copies inter-disques, acat
gagné sur n'importe quelledd
taille de tampon.Il y a plusieurs raisons pour lesquelles vous trouvez
dd
si souvent mentionné. Mis à part les performances, ce ne sont pas des raisons particulièrement bonnes.cat
(il était avec plus d' outils orientés ligne tels quehead
,sed
, etc.), mais les gens avaient tendance à éviter sur des données binaires en raison de son association avec le traitement de texte. Ce n'est pas un problème sur les systèmes modernes tels que Linux, OSX, * BSD ou tout ce qui est compatible POSIX.dd
est quelque peu «de niveau inférieur» par rapport à d'autres outils tels quecat
et accède directement aux appareils. C'est complètement faux:dd
etcat
ettee
et les autres lisent tous les octets de leur entrée et écrivent les octets dans leur sortie. La vraie magie est là/dev/sr0
.dd
a une syntaxe de ligne de commande inhabituelle, donc expliquer comment cela fonctionne donne plus de chance de briller en expliquant quelque chose qui ne fait qu'écrirecat /dev/sr0
.dd
avec une grande taille de tampon peut avoir de meilleures performances, mais ce n'est pas toujours le cas (voir quelques benchmarks sous Linux ).Un risque majeur
dd
est qu'il peut ignorer silencieusement certaines données . Je pense quedd
c'est sûr aussi longtempsskip
oucount
non, mais je ne suis pas sûr que ce soit le cas sur toutes les plateformes. Mais cela n'a aucun avantage sauf pour les performances.Il suffit donc de l'utiliser
pv
si vous voulez son rapport d'avancement de fantaisie, oucat
si vous ne le faites pas.la source
pv < /dev/sr0 > image.iso
le même quepv /dev/sr0 > image.iso
(ce dernier se trouve dans les pages de manuel de pv)?pv /dev/sr0 …
peuvent inclure le nom de fichier dans les rapports de progression alors qu'ilspv </dev/sr0
ne le peuvent pas.cp
peut être aliaséecp -R
, ce qui (au moins sur GNU cp, en tant que root) entraîne lacp
copie du nœud de périphérique plutôt que son contenu./dev
sont des nœuds de périphérique. Par exemplecp -R /dev/sr0 image.iso
, créerimage.iso
un fichier par lequel le lecteur de CD-ROM est accessible, tout comme/dev/sr0
, au lieu d'un fichier ordinaire contenant une copie du contenu du CD-ROM que vous obtenezcp /dev/sr0 image.iso
.dd
battement ,cat
mais seulement par une faible marge.Il y a des faits intéressants dans ce cas, spécialement ceux-ci:
dd
etpv
) les sommes de contrôle sont identiques .dd
procédure, d'ouvrir le lecteur et de le fermer avec le même disque, puis de terminer le test avec lapv
procédure. Ce faisant, j'ai obtenu des copies identiques avec les deux procédures.dd
sans lecount=X
paramètre, il s'arrête correctement à la fin du disque et donne la même image disque qu'avecpv
(les sommes de contrôle sont identiques), il est donc préférable pour moi d'utiliserdd
sans paramètres ou simplementpv
.Donc, pour l'instant, il semble
pv
etdd
peut accomplir une copie CD / DVD avec les mêmes résultats.la source