Como converter um arquivo TAR em um arquivo ISO


9

Eu tenho um arquivo TAR do Linux que gostaria de converter diretamente em um ISO. Existe uma maneira de fazer isso, de preferência, sem ter que extrair o conteúdo do arquivo primeiro?

Isso seria semelhante à seguinte pergunta ; no entanto, isso é focado em arquivos tar simples ou diretos e não está relacionado ao bzip ou a um tar bzipado.

Isso também é algo que pretendi usar em um script e o motivo pelo qual não quero extraí-lo primeiro.


Teoricamente, isso poderia ser feito sem a necessidade de extrair cada um dos arquivos para o disco (eles precisam ser extraídos do arquivo morto para serem colocados na nova imagem), mas eu não sei de nada que faça.
Ignacio Vazquez-Abrams

Por que você quer fazer isso sem extrair o alcatrão?
Nils

Gostaria de saber se existe uma maneira de canalizá-lo para algo como stdin e, em seguida, canalizá-lo para o arquivo iso ??
John

Não tenho certeza se isso funcionaria ou não, pois não tenho 100% de certeza do que o comando está fazendo. - tar -jxf / dev / arquivo stdin.tar | mkisofs -o file.iso -Stream-media-size 512
John

A opção -stream-media-size foi realmente feita para isso! :-) Veja a página do manual genisoimage para obter informações - atualmente ela menciona o tar nos documentos para esta opção (e a usa nos exemplos).
Abbafei

Respostas:


6

Use o AVFS para acessar o conteúdo do arquivo tar como se fosse um diretório. O AVFS é um sistema de arquivos virtual criado no FUSE . Aponte seu construtor ISO favorito para o diretório dentro do arquivo tar.

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

@ Gilles - obrigado pela idéia. Parece que pode ser uma excelente ideia; no entanto, estou no CentOS 6 e estou tendo problemas para tentar instalar o AVFS.
John

1

Se seus principais objetivos são agilizar o processo e evitar atividades desnecessárias no disco por motivos de desempenho, e você tem bastante RAM de sobra em relação ao tamanho do seu tarball, é possível extrair o .tar para a RAM usando tmpfs . Essa opção provavelmente é a mais rápida disponível, a menos que você consiga que a abordagem de pipe do @ bulleric funcione e esteja lendo de um disco e gravando em outro.


0
archivemount /file.tar /media/ISO

ou .tar não compactado e

genisoimage -o myfile.iso directory_src

( pode ser /media/ISO montagem em pasta ou ponto/media/cdrom )


-2

Você deve extraí-lo, mas não deve extraí-lo para o seu disco rígido, você pode usar o stdtout e canalizá-lo para genisoimage ou mkisofs

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

teste-o: mount -o loop image.iso /mnt

você pode escrever um pequeno script para automatizar esse problema

touro greez


E como distinguiria um arquivo do próximo?
Ignacio Vazquez-Abrams

Quando eu executo isso, recebo uma série de erros, o primeiro é: tar: você deve especificar uma das -Acdtrux' or opções --test-label '. O próximo erro é: I: -input-charset não especificado, usando utf-8 (detectado nas configurações de localidade). O último erro é: genisoimage: Esse arquivo ou diretório não existe. Nó inválido - 'tareddata'.
John

o primeiro problema que eu resolvi, tomei uma opção errada no alcatrão; 2º hmm um em minha opinião, o primeiro diretório get extractet o mesmo nome que o que o diretório não extraído como tardata tardata.tar
bulleric

Desculpe, tenho certeza de que não há como isso funcionar; -1.
MadHatter
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.