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.

John
fonte
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 'SO- parar de ser mau'
fonte
@ 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.

Falcão do céu
fonte
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 )

eternoi
fonte
-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

bulleric
fonte
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