Як перетворити файл TAR у файл ISO


9

У мене є файл TAR Linux, який я хотів би перетворити безпосередньо в ISO. Чи є спосіб зробити це, бажано, без того, щоб спочатку витягувати вміст файлу?

Це було б подібне до наступного питання ; однак це зосереджено на звичайних та прямолінійних файлах tar та не пов’язано з bzip або bzipped tar.

Це також те, що я мав намір використати в рамках сценарію, і причина, що я не хочу його витягувати спочатку.


Теоретично це можна зробити без необхідності витягати кожен з файлів на диск (вони повинні бути вилучені з архіву, щоб ввести їх у нове зображення), але я нічого не знаю, що це робить.
Ігнасіо Васкес-Абрамс

Чому ти хочеш це робити, не видобуваючи дьоготь?
Нілс

Цікаво, чи є спосіб передати його на щось на зразок stdin, а потім передати його на файл iso ???
Джон

Я не впевнений, чи спрацювало б це чи ні, оскільки я не на 100% впевнений, що робить команда. - tar -jxf / dev / stdin file.tar | mkisofs -o file.iso -stream-media-size 512
Джон

Для цього була створена опція -stream-media size! :-) Перегляньте сторінку чоловіка genisoimage для отримання інформації - наразі вона згадує tar у документах для цієї опції (і використовує її у прикладах до неї).
Аббафей

Відповіді:


6

Використовуйте AVFS для доступу до вмісту архіву tar, як ніби це каталог. AVFS - це віртуальна файлова система, побудована на FUSE . Вкажіть улюбленого конструктора ISO на каталог всередині архіву дьогтю.

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

@ Gilles - дякую за ідею. Схоже, це може бути чудовою ідеєю; проте я перебуваю на CentOS 6 і зіткнувся з проблемами, які намагаються встановити AVFS.
Джон

1

Якщо ваші основні завдання - прискорити процес і уникнути зайвої активності диска з міркувань продуктивності, і у вас є достатня кількість оперативної пам’яті для запасного відносно розміру тарболу, ви можете витягнути .tar в оперативну пам’ять за допомогою tmpfs . Ця опція, швидше за все, є найшвидшою з доступних, якщо тільки ви не зможете примусити роботу @ bulleric до роботи і ви читаєте з одного диска і пишете на інший.


0
archivemount /file.tar /media/ISO

або нестиснений .tar і

genisoimage -o myfile.iso directory_src

( може бути папка /media/ISO або точкове кріплення /media/cdrom )


-2

Ви повинні витягнути його, але ви не повинні витягти його на жорсткий диск, ви можете використовувати stdtout і передавати його на genisoimage або mkisofs

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

протестуйте: mount -o loop image.iso /mnt

ви можете написати невеликий сценарій для автоматизації цього питання

грецький бик


І як би це сказати одному файлу з іншого?
Ігнасіо Васкес-Абрамс

Коли я запускаю це, я отримую ряд помилок, перша: tar: Ви повинні вказати один із параметрів -Acdtrux' or --test-label '. Наступна помилка: I: -введення-діаграма не вказано, використовуючи utf-8 (виявлено в налаштуваннях локальної програми). Остання помилка: genisoimage: Немає такого файлу чи каталогу. Недійсний вузол - 'tareddata'.
Джон,

Перша проблема, яку я вирішую, я прийняв неправильний варіант у дьогті; 2-й хм, на мою думку, перший каталог отримує екстрактету з таким же ім'ям, як і невитягнутий каталог, як tardata.tar tardata
bulleric

Вибачте, я впевнений, що немає можливості це зробити; -1.
MadHatter
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.