Comment convertir un fichier TAR dans un fichier ISO

9

J'ai un fichier TAR Linux que je voudrais convertir directement en ISO. Existe-t-il un moyen de le faire, de préférence, sans avoir à extraire le contenu du fichier au préalable?

Ce serait semblable à la question suivante ; cependant, cela se concentre sur les fichiers tar simples ou droits et n'est pas lié à bzip ou à un tar bzippé.

C'est aussi quelque chose que j'avais l'intention d'utiliser dans un script et la raison pour laquelle je ne veux pas l'extraire en premier.

John
la source
Théoriquement, cela pourrait être fait sans avoir à extraire chacun des fichiers sur le disque (ils doivent être extraits de l'archive pour être placés dans la nouvelle image), mais je ne sais rien de ce qui fait.
Ignacio Vazquez-Abrams le
Pourquoi voulez-vous faire cela sans extraire le goudron?
Nils
Je me demande s'il existe un moyen de le rediriger vers quelque chose comme stdin puis de le rediriger vers le fichier iso ???
John
Je ne sais pas si cela fonctionnerait ou non, car je ne suis pas sûr à 100% de ce que fait la commande. - tar -jxf / dev / stdin file.tar | mkisofs -o file.iso -stream-media-size 512
John
L'option -stream-media-size a été conçue pour cela! :-) Voir la page de manuel de genisoimage pour plus d'informations - actuellement il mentionne tar dans les documents pour cette option (et l'utilise dans les exemples pour cela).
Abbafei

Réponses:

6

Utilisez AVFS pour accéder au contenu de l'archive tar comme s'il s'agissait d'un répertoire. AVFS est un système de fichiers virtuel construit sur FUSE . Pointez votre générateur ISO préféré vers le répertoire dans l'archive tar.

mountavfs
cd ~/.avfs/path/to/archive.tar\#
genisoimage -o /path/to/iso .
Gilles 'SO- arrête d'être méchant'
la source
@ Gilles - merci pour l'idée. Cela semble être une excellente idée; cependant, je suis sur CentOS 6 et je rencontre des problèmes pour essayer d'installer AVFS.
John
1

Si vos objectifs principaux sont d'accélérer le processus et d'éviter l'activité inutile du disque pour des raisons de performances, et que vous avez beaucoup de RAM à épargner par rapport à la taille de votre tarball, vous pouvez extraire le .tar en RAM à l'aide de tmpfs . Cette option est très probablement la plus rapide disponible, à moins que vous ne puissiez faire fonctionner l'approche pipe de @ bulleric et que vous lisiez d'un disque et écriviez sur un autre.

Skyhawk
la source
0
archivemount /file.tar /media/ISO

ou .tar non compressé et

genisoimage -o myfile.iso directory_src

( peut être un dossier /media/ISO ou un montage ponctuel /media/cdrom )

eternoi
la source
-2

Vous devez l'extraire mais vous ne devez pas l'extraire sur votre disque dur, vous pouvez utiliser stdtout et le diriger vers genisoimage ou mkisofs

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

Essaye-le: mount -o loop image.iso /mnt

vous pouvez écrire un petit script pour automatiser ce problème

taureau greez

bulleric
la source
Et comment pourrait-il distinguer un fichier du suivant?
Ignacio Vazquez-Abrams
Lorsque j'exécute cela, j'obtiens une série d'erreurs, la première est: tar: vous devez spécifier l'une des -Acdtrux' or options --test-label '. L'erreur suivante est: I: -input-charset non spécifié, en utilisant utf-8 (détecté dans les paramètres régionaux). La dernière erreur est: genisoimage: Aucun fichier ou répertoire de ce type. Noeud non valide - «tareddata».
John
le premier problème que j'ai résolu j'ai pris une mauvaise option dans tar; le 2e hmm à mon avis, le premier répertoire obtient un extractet du même nom que le répertoire non extrait comme tardata.tar tardata
bulleric
Désolé, je suis presque sûr que cela ne peut pas fonctionner; -1 .
MadHatter