Cómo convertir un archivo TAR en un archivo ISO


9

Tengo un archivo TAR de Linux que me gustaría convertir directamente en un ISO. ¿Hay alguna manera de hacer esto, preferiblemente, sin tener que extraer primero el contenido del archivo?

Esto sería similar a la siguiente pregunta ; sin embargo, esto se centra en archivos tar simples o simples y no está relacionado con bzip o un bzipped tar.

Esto también es algo que tenía la intención de usar dentro de un script y la razón por la que no quiero extraerlo primero.


Teóricamente podría hacerse sin tener que extraer cada uno de los archivos al disco (tienen que extraerse del archivo para poder colocarlos en la nueva imagen), pero no sé nada de eso.
Ignacio Vazquez-Abrams

¿Por qué quieres hacer esto sin extraer el alquitrán?
Nils

Me pregunto si hay una manera de canalizarlo a algo como stdin y luego conectarlo al archivo iso.
John

No estoy seguro de si esto funcionaría o no, ya que no estoy 100% seguro de lo que está haciendo el comando. - tar -jxf / dev / stdin file.tar | mkisofs -o file.iso -stream-media-size 512
John

¡La opción -stream-media-size fue hecha para esto! :-) Consulte la página de manual de genisoimage para obtener información: actualmente menciona el alquitrán en los documentos para esta opción (y lo usa en los ejemplos para ello).
Abbafei

Respuestas:


6

Use AVFS para acceder a los contenidos del archivo tar como si fuera un directorio. AVFS es un sistema de archivos virtual construido en FUSE . Apunte su generador de ISO favorito al directorio dentro del archivo tar.

mountavfs
cd ~/.avfs/path/to/archive.tar\#
genisoimage -o /path/to/iso .

@ Gilles: gracias por la idea. Parece que podría ser una excelente idea; Sin embargo, estoy en CentOS 6 y tengo problemas para intentar instalar AVFS.
John

1

Si sus objetivos principales son acelerar el proceso y evitar la actividad innecesaria del disco por razones de rendimiento, y tiene suficiente RAM de sobra en relación con el tamaño de su tarball, puede extraer el .tar en RAM usando tmpfs . Es muy probable que esta opción sea la más rápida disponible, a menos que pueda lograr que el enfoque de tubería de @bulleric funcione y esté leyendo de un disco y escribiendo en otro.


0
archivemount /file.tar /media/ISO

o .tar sin comprimir y

genisoimage -o myfile.iso directory_src

( puede ser carpeta /media/ISO o punto de montaje /media/cdrom )


-2

Debe extraerlo, pero no debe extraerlo en su disco duro, puede usar stdtout y canalizarlo a genisoimage o mkisofs

tar --to-stdout xf tareddata.tar | genisoimage -o image.iso tareddata

Pruébalo: mount -o loop image.iso /mnt

puedes escribir un pequeño script para automatizar este problema

toro de greez


¿Y cómo distinguiría un archivo del siguiente?
Ignacio Vazquez-Abrams

Cuando ejecuto esto, obtengo una serie de errores, el primero es: tar: debe especificar una de las -Acdtrux' or opciones --test-label '. El siguiente error es: I: -input-charset no especificado, usando utf-8 (detectado en la configuración regional). El último error es: genisoimage: no existe tal archivo o directorio. Nodo inválido - 'tareddata'.
John

el primer problema que resolví, he tomado una opción incorrecta en tar; el segundo hmm en mi opinión, el primer directorio se extrae con el mismo nombre que el directorio no extraído como tardata.tar tardata
bulleric

Lo siento, estoy bastante seguro de que no hay forma de que esto pueda funcionar; -1.
MadHatter
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.