Jak przekonwertować plik TAR na plik ISO

9

Mam plik Linux TAR, który chciałbym przekonwertować bezpośrednio na ISO. Czy istnieje sposób, aby to zrobić, najlepiej bez konieczności najpierw rozpakowywania zawartości pliku?

Byłoby to podobne do następującego pytania ; jest to jednak skoncentrowane na zwykłych lub prostych plikach tar i nie jest związane z bzipem lub bzipem tar.

Jest to również coś, co zamierzałem wykorzystać w skrypcie i powód, dla którego nie chcę go najpierw rozpakowywać.

Jan
źródło
Teoretycznie można to zrobić bez konieczności rozpakowywania każdego z plików na dysk (należy je wyodrębnić z archiwum, aby umieścić je w nowym obrazie), ale nic nie wiem.
Ignacio Vazquez-Abrams,
Dlaczego chcesz to zrobić bez wyciągania smoły?
Nils
Zastanawiam się, czy istnieje sposób na przesłanie go do czegoś takiego jak stdin, a następnie przesłanie go do pliku ISO ???
Jan
Nie jestem pewien, czy to zadziała, czy nie, ponieważ nie jestem w 100% pewien, co robi polecenie. - tar -jxf / dev / stdin file.tar | mkisofs -o plik.iso -stream-media-size 512
Jan
Opcja -stream-media-size została stworzona właśnie do tego! :-) Zobacz stronę manuala genisoimage w celu uzyskania informacji - obecnie wspomina o tar w dokumentacji dla tej opcji (i używa jej w przykładach).
Abbafei,

Odpowiedzi:

6

Użyj systemu AVFS, aby uzyskać dostęp do zawartości archiwum tar, tak jakby to był katalog. AVFS to wirtualny system plików zbudowany na systemie FUSE . Wskaż swojego ulubionego konstruktora ISO na katalog wewnątrz archiwum tar.

mountavfs
cd ~/.avfs/path/to/archive.tar\#
genisoimage -o /path/to/iso .
Gilles „SO- przestań być zły”
źródło
@ Gilles - dzięki za pomysł. Wygląda na to, że może to być doskonały pomysł; jednak korzystam z CentOS 6 i mam problemy z zainstalowaniem systemu AVFS.
John
1

Jeśli twoim głównym celem jest przyspieszenie procesu i uniknięcie niepotrzebnej aktywności dysku ze względu na wydajność, a masz dużo pamięci RAM do zaoszczędzenia w stosunku do rozmiaru swojego archiwum, możesz wyodrębnić plik .tar do pamięci RAM za pomocą tmpfs . Ta opcja jest prawdopodobnie najszybsza z dostępnych, chyba że jesteś w stanie uzyskać podejście potoku @ bulleric do pracy i czytasz z jednego dysku i piszesz na innym.

Podniebny Jastrząb
źródło
0
archivemount /file.tar /media/ISO

lub nieskompresowany .tar i

genisoimage -o myfile.iso directory_src

( może być /media/ISO montowany na folder lub punkt/media/cdrom )

eternoi
źródło
-2

Musisz go wyodrębnić, ale nie musisz go wyodrębnić na dysk twardy, możesz użyć stdtout i potokować go do genisoimage lub mkisofs

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

Sprawdź to: mount -o loop image.iso /mnt

możesz napisać mały skrypt, aby zautomatyzować ten problem

Greez Bull

bulleric
źródło
A jak miałby odróżnić jeden plik od następnego?
Ignacio Vazquez-Abrams
Kiedy uruchamiam to, otrzymuję serię błędów, pierwszy to: tar: Musisz podać jedną z opcji -Acdtrux' or --test-label. Następny błąd to: I: -input-charset nie został określony, używając utf-8 (wykryty w ustawieniach regionalnych). Ostatni błąd to: genisoimage: Brak takiego pliku lub katalogu. Nieprawidłowy węzeł - „tareddata”.
Jan
pierwszy problem, który rozwiązałem, wybrałem złą opcję w tar; 2 jeden hmm moim zdaniem pierwszy katalog get extractet taka sama jak nazwa jako unextracted katalogu jak tardata.tar tardata
bulleric
Przepraszam, jestem całkiem pewien, że nie ma mowy, aby to działało; -1.
MadHatter