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.