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ć.


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 - 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.


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 )


-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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.