Fondo
Estoy copiando algunos CD / DVD de datos a archivos ISO para usarlos más tarde sin la necesidad de que estén en la unidad.
Estoy buscando procedimientos en la red y encontré mucho:
Uso de
catpara copiar un medio: http://www.yolinux.com/TUTORIALS/LinuxTutorialCDBurn.htmlcat /dev/sr0 > image.isoUso de
ddhacerlo (aparentemente el más utilizado): http://www.linuxjournal.com/content/archiving-cds-iso-commandlinedd if=/dev/cdrom bs=blocksize count=count of=/path/to/isoimage.isoUso de solo
pvpara lograr esto: consulteman pvpara obtener más información, aunque aquí hay un extracto: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
No sé si todos deberían ser equivalentes, aunque probé algunos de ellos (usando la md5sumherramienta) y, al menos, ddy nopv son equivalentes. Aquí está el disco y los archivos generados usando cada procedimiento:md5sum
md5 del procedimiento dd: 71b676875b0194495060b38f35237c3c
md5 del procedimiento pv: f3524d81fdeeef962b01e1d86e6acc04
EDITAR: Esa salida era de otro CD que la salida dada. De hecho, me di cuenta de que hay algunos hechos interesantes que proporciono como respuesta.
De hecho, el tamaño de cada archivo es diferente en comparación entre sí.
Entonces, ¿hay un mejor procedimiento para copiar un CD / DVD o simplemente estoy usando los comandos incorrectamente?
Más información sobre la situación.
Aquí hay más información sobre el caso de prueba que estoy usando para verificar los procedimientos que he encontrado hasta ahora:
isoinfo -d i /dev/sr0
Salida: https://gist.github.com/JBFWP286/7f50f069dc5d1593ba62#file-isoinfo-output-19-aug-2015
ddpara copiar los medios, con sumas de verificación de salida e información de archivo Salida: https://gist.github.com/JBFWP286/75decda0a67605590d32#file-dd-output-with-md5-and-sha256-19-aug-2015
pvpara copiar los medios, con sumas de verificación de salida e información de archivo Salida: https://gist.github.com/JBFWP286/700a13fe0a2f06ce5e7a#file-pv-output-with-md5-and-sha256-19-aug-2015
Cualquier ayuda será apreciada!

cmp file1 file2? ¿Utilizasteddcon el errorcount=(o realmente algún conteo que no es necesario si quieres todo)? Leer errores en dmesg?ddcomando exacto que utilizó (¿qué tamaño de bloque? ¿Qué cuenta?), (2) los tamaños y sumas de comprobación de todas las salidas y (3) cualquier información independiente que tenga sobre la cantidad de datos en el disco óptico de origen. ... ... ... ... ... ... PS ¿Por qué utilizacount=eldd? Desea copiar toda la imagen del disco, ¿no?count=dice "copia esto y luego detente".isoinfo -d -i /dev/cdrompara conocer el número de conteo y usarlo; de hecho, dice que no se debe usar solodd. "En cualquier caso, si desea una imagen ISO adecuada de ese CD, necesita obtener el tamaño de bloque y el conteo de bloques correctos antes de crear su imagen".Respuestas:
Todos los siguientes comandos son equivalentes. Leen los bytes del CD
/dev/sr0y los escriben en un archivo llamadoimage.iso.¿Por qué usarías uno sobre el otro?
Sencillez. Por ejemplo, si ya sabe
catocpno necesita aprender otro comando.Robustez Esta es una variante de la simplicidad. ¿Cuánto riesgo existe de que cambiar el comando va a cambiar lo que hace? Veamos algunos ejemplos:
set -o noclobberdebe asegurarse de no sobrescribir nada; sin embargo, podría sobrescribir un dispositivo si escribe accidentalmente>/dev/sda(para un CD, que es de solo lectura, no hay riesgo, por supuesto). Esto habla a favor decat /dev/sr0 >image.iso(difícil de equivocarse de una manera perjudicial) sobre alternativas comotee </dev/sr0 >image.iso(si invierte las redirecciones u olvida la entrada,teeescribirá/dev/sr0).cat: puede concatenar accidentalmente dos archivos. Eso deja los datos fácilmente recuperables.dd:iyoestán cerca del teclado, y son algo inusuales. No hay equivalente denoclobber,of=felizmente sobrescribirá cualquier cosa. La sintaxis de redirección es menos propensa a errores.cp: si cambia accidentalmente el origen y el destino, el dispositivo se sobrescribirá (nuevamente, suponiendo que no sea un dispositivo de solo lectura). Sicpse invoca con algunas opciones como-Ro-aque algunas personas agregan a través de un alias, copiará el nodo del dispositivo en lugar del contenido del dispositivo.Funcionalidad adicional. La única herramienta aquí que tiene funcionalidades adicionales útiles es
pv, con sus poderosas opciones de informes.Pero aquí puede verificar cuánto se ha copiado mirando el tamaño del archivo de salida de todos modos.
Actuación. Este es un proceso vinculado a E / S; La principal influencia en el rendimiento es el tamaño del búfer: la herramienta lee un fragmento del origen, escribe el fragmento en el destino y lo repite. Si la porción es demasiado pequeña, la computadora pasa su tiempo cambiando entre tareas. Si el fragmento es demasiado grande, las operaciones de lectura y escritura no se pueden paralelizar. El tamaño óptimo del fragmento en una PC generalmente es de unos pocos megabytes, pero esto obviamente depende mucho del sistema operativo, del hardware y de qué más está haciendo la computadora. Hice pruebas de rendimiento para copias de disco duro a disco duro hace un tiempo, en Linux, lo que demostró que para copias dentro del mismo disco,
ddcon un gran tamaño de búfer tiene la ventaja, pero para las copias entre discos,catganó cualquierddtamaño de búfer.Hay algunas razones por las que se
ddmenciona tan a menudo. Aparte del rendimiento, no son razones particularmente buenas.cat(que fue con más herramientas orientados a líneas comohead,sed, etc.), pero la gente tiende a evitar que en los datos binarios debido a su asociación con el procesamiento de texto. Esto no es un problema en sistemas modernos como Linux, OSX, * BSD, o cualquier cosa que sea compatible con POSIX.ddes algo "de nivel inferior" que otras herramientas comocaty que accede directamente a los dispositivos. Esto es completamente falso:ddycatyteey los demás leen todos los bytes de su entrada y escriben los bytes en su salida. La verdadera magia está adentro/dev/sr0.ddtiene una sintaxis inusual en la línea de comandos, por lo que explicar cómo funciona brinda más oportunidades de brillar al explicar algo que simplemente escribecat /dev/sr0.ddcon un tamaño de búfer grande puede tener un mejor rendimiento, pero no siempre es así (ver algunos puntos de referencia en Linux ).Un riesgo importante
ddes que puede omitir silenciosamente algunos datos . Creo queddes seguro siempre y cuandoskipocountno se pasan, pero no estoy seguro de si este es el caso en todas las plataformas. Pero no tiene ninguna ventaja, excepto por el rendimiento.Tan solo úselo
pvsi desea su elegante informe de progreso, ocatsi no lo desea.fuente
pv < /dev/sr0 > image.isolo mismo quepv /dev/sr0 > image.iso(este último se encuentra en las páginas del manual de pv)?pv /dev/sr0 …pueden incluir el nombre del archivo en los informes de progreso , peropv </dev/sr0no pueden.cppodría tener un aliascp -R, que (al menos en GNU cp, como root) hacecpque copie el nodo del dispositivo en lugar de su contenido./devson nodos de dispositivo. Por ejemplo,cp -R /dev/sr0 image.isocrearíaimage.isoun archivo a través del cual se accede a la unidad de CD, al igual que en/dev/sr0lugar de un archivo normal que contenga una copia del contenido del CD con el que se obtienecp /dev/sr0 image.iso.ddritmocatpero sólo por un pequeño margen.Hay hechos interesantes en este caso, especialmente estos:
ddypv) las sumas de comprobación son idénticas .ddprocedimiento, abrir la unidad y cerrarla con el mismo disco, y luego terminar la prueba con elpvprocedimiento. Al hacer eso, obtuve copias idénticas con ambos procedimientos.ddsin elcount=Xparámetro se detiene correctamente al final del disco y proporciona la misma imagen de disco que conpv(las sumas de verificación son idénticas), por lo que es mejor para mí usarddparámetros sin / o simplementepv.Entonces, por ahora, parece
pvyddpuede lograr una copia de CD / DVD con los mismos resultados.fuente