Come convertire un file TAR in un file ISO


9

Ho un file TAR Linux che vorrei convertire direttamente in ISO. C'è un modo per farlo, preferibilmente, senza dover prima estrarre il contenuto del file?

Questo sarebbe simile alla seguente domanda ; tuttavia, questo è focalizzato su file tar semplici o diretti e non relativi a bzip o tar.

Questo è anche qualcosa che intendevo usare all'interno di uno script e il motivo per cui non voglio estrarlo prima.


Teoricamente potrebbe essere fatto senza dover estrarre tutti i file su disco (devono essere estratti dall'archivio per essere inseriti nella nuova immagine), ma non so nulla di ciò che fa.
Ignacio Vazquez-Abrams,

Perché vuoi farlo senza estrarre il catrame?
Nils,

Mi chiedo se c'è un modo per reindirizzarlo a qualcosa come Stdin e poi reindirizzarlo sul file ISO ???
Giovanni

Non sono sicuro che funzionerebbe o meno, dal momento che non sono sicuro al 100% di cosa stia facendo il comando. - tar -jxf / dev / stdin file.tar | mkisofs -o file.iso -stream-media-size 512
John

L'opzione -stream-media-size è stata effettivamente realizzata per questo! :-) Vedi la pagina man di genisoimage per informazioni - attualmente menziona tar nei documenti per questa opzione (e la usa negli esempi per essa).
Abbafei,

Risposte:


6

Utilizzare AVFS per accedere al contenuto dell'archivio tar come se fosse una directory. AVFS è un filesystem virtuale basato su FUSE . Punta il tuo costruttore ISO preferito verso la directory all'interno dell'archivio tar.

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

@ Gilles - grazie per l'idea. Sembra che potrebbe essere un'idea eccellente; tuttavia, utilizzo CentOS 6 e riscontro problemi nel tentativo di installare AVFS.
Giovanni,

1

Se i tuoi obiettivi primari sono accelerare il processo ed evitare attività del disco non necessarie per motivi di prestazioni e hai molta RAM da risparmiare rispetto alle dimensioni del tuo tarball, puoi estrarre il .tar nella RAM usando tmpfs . Questa opzione è molto probabilmente la più veloce disponibile, a meno che tu non sia in grado di far funzionare l'approccio pipe di @ bulleric e stai leggendo da un disco e scrivendo su un altro.


0
archivemount /file.tar /media/ISO

o non compresso .tar e

genisoimage -o myfile.iso directory_src

( può essere cartella /media/ISO o punto mount /media/cdrom )


-2

È necessario estrarlo ma non è necessario estrarlo sul disco rigido, è possibile utilizzare stdtout e reindirizzarlo a genisoimage o mkisofs

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

Provalo: mount -o loop image.iso /mnt

puoi scrivere un piccolo script per automatizzare questo problema

toro di greez


E come distinguerebbe un file dal successivo?
Ignacio Vazquez-Abrams,

Quando eseguo questo ottengo una serie di errori, il primo è: tar: Devi specificare una delle -Acdtrux' or opzioni --test-label '. L'errore successivo è: I: -input-charset non specificato, utilizzando utf-8 (rilevato nelle impostazioni locali). L'ultimo errore è: genisoimage: nessun file o directory. Nodo non valido - 'tareddata'.
John,

il primo problema che ho solvet ho preso un'opzione sbagliata in tar; il secondo hmm secondo me la prima directory ottiene extractet lo stesso nome della directory non estratta come tardata.tar tardata
bulleric

Siamo spiacenti, sono abbastanza sicuro che non ci sia modo di funzionare; -1.
MadHatter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.