Какой самый быстрый способ извлечь ISO?


34

В настоящее время я монтирую ISO в (только для чтения) каталог (используя mount -o loopкоманду), а затем копирую содержимое в другой обычный каталог. Это занимает много времени, так как ISO большой. Это единственный способ сделать это, или есть какая-то альтернатива?


Вы можете взглянуть на мое решение: superuser.com/a/1180728/541106
MewX,

Это неплохой способ, так как ISO-образ монтируется в оперативной памяти системы. Извлечение с помощью инструментов должно занять столько же времени.
Дубис

Ответы:


59

Вы можете сделать это с помощью программного обеспечения 7zip:

sudo apt-get install p7zip-full

7z x iso_file.iso

на федоре:

7za x iso_file.iso


1
У меня работал с Windows 8.1 ISO, для которого (в Gnome) ни Nautilus, ни Archive Manager не смогли показать содержимое.
krlmlr

4
Остерегайтесь, "7za x" не будет работать, только "7z x". Благодарность!
lzap

7za работает на Fedora, 7z нет
Адам Куркевич

Согласно этому , 7zне будут извлекать все необходимые файлы.
Плони

7

bsdtar(часть переносимого архива ) может анализировать множество форматов файлов . Это удобно для тех, чьи пальцы хорошо знакомы с опциями tar ( чтобы извлечь, просто проверить содержимое). bsdtar xfp foo.isobsdtar tf yoyoma.rpm

Есть также bsdcpio для тех, кто знаком с cpioиспользованием.

Многие дистрибутивы Linux теперь включают в себя bsdtar, bsdcpio и libarchive (часто в виде отдельных пакетов, хотя все это происходит из кода libarchive).


2

Монтирование изображения или использование 7zip, как уже было сказано, вероятно, единственные два решения. Попробуйте их и проверьте, быстрее ли один, чем другой.

Если вам действительно нужно что-то более быстрое, вы, вероятно, должны смотреть в другом направлении: вместо смены программного обеспечения попробуйте использовать другие диски: один для исходного образа и один для целевого каталога. Или попробуйте не копировать эти файлы и просто сохранить их в ISO-образе.


К сведению: используется mount -o loopи rsync -a /mnt/iso /root/isoкопирует со скоростью ~ 100 МБ / с с внутреннего жесткого диска SATA на внутренний твердотельный диск SATA.
rwenz3l

2

uniso - это скрипт Python, который использует isoinfo для извлечения содержимого из потока ISO. Требует питорики . Это немного глупо, но это делает работу.

Я автор uniso и pythoric.


1

Если вы хотите извлечь только некоторые файлы вместо всего содержимого, попробуйте использовать mcMidnightCommander в оболочке. Это также приятно смотреть .zip/tar.gz/bz2.


1

Почему бы не использовать:

isoinfo -R -X

извлечь все файлы или

isoinfo -R -X -find find-options

извлечь файлы, контролируемые параметрами поиска?


2
Обратите внимание, что это предполагает isoinfoот Шили cdrtools. Это не будет работать с найденной на Debian (из cdrkitв Debian вилки из cdrtools(лицензирования причин AFAICT)).
Стефан Шазелас

2
Правильно, Debian создал форк в мае 2004 года и с тех пор не добился никакого полезного прогресса. Все улучшения в исходном коде с тех пор игнорировались, и это было много: более 60% текущего кода в проекте cdrtools относится к прошлому 2004 году. Другими словами, отсутствует более 50% возможностей недавнего оригинального cdrtools в форке Debian.
Щили

1
Кстати: форк Debian был создан в мае 2004 года, имя cdrkit использовалось после того, как я попросил Debian в сентябре 2006 года больше не использовать оригинальное имя для форка с более чем 100 специфическими ошибками Debian. Учитывая, что все дистрибутивы, которые попросили специалиста-юриста отправить оригинальную версию cdrtools, я не вижу доказательств для лицензии.
Щили

Если придется признаться, я не могу сказать, что понимаю проблему с лицензией.
Стефан Шазелас

1
Поскольку я тщательно следую всем требованиям лицензий (я проверил это с несколькими юристами), я не вижу проблемы с лицензией. Учитывая тот факт, что Debian требовал выдачи лицензии задолго до того, как лицензии были изменены, я подозреваю, что здесь «красная сельдь». Чтобы продолжить с указанными выше временными рамками: Debian требовал выдачи лицензии из-за несуществующего изменения осенью 2005 года, но изменение лицензии произошло 15 мая 2006 года, чтобы защититься от атак со стороны Эдуарда Блоха и Йорга Ясперта.
Щили

1

Для тех, кто использует файловый менеджер Thunar в Linux и хочет получить простое и быстрое решение:

  1. Откройте Thunar -> Правка -> Настроить пользовательские действия ...
  2. Создать новый предмет:
    • Название: Извлечь ISO здесь
    • Описание: Извлекает файл ISO
    • Команда: xfce4-terminal -e "7z x %f"
  3. Открыть вкладку Внешний вид Условия
    • Приставка: *.iso
    • Установите флажок только Other files
  4. Сохраните его, и вы готовы извлечь с помощью правой кнопки мыши.

Обратите внимание, что этот прием использует и зависит от пакетов xfce4-терминал и p7zip . Если вы используете другой менеджер архивов или терминал - замените команды соответственно.


1

Образы AppImage type-1 представляют собой образы ISO со сжатыми файлами zisofs . Вот почему не каждое приложение, которое может извлекать файлы ISO, также может извлекать изображения AppImage типа 1.


Хорошо, но вопрос был, КАК ВЫБРАТЬ ИХ? + БЫСТРО.
LinuxSecurityFreak

Я думаю, что самый быстрый способ - использовать ядро ​​для циклического монтирования, а затем скопировать файлы. Однако я не проводил научных измерений.
Probono

0

Попробуй genisoimage. В нем есть все, что вам нужно для обработки ISO. После установки вы также сможете mcпросматривать содержимое ISO.


Просто прочитайте справочную страницу для этого. Не удалось найти какие-либо параметры для извлечения содержимого существующего ISO.
Алекс Янсен

0

Я сравнил предложенные утилиты для самых быстрых:

FILE=some_file.iso
DIR="./unpacked"

# time 7z x $FILE -o$DIR # see note below
# real    0m0,656s

time xorriso -osirrox on -indev $FILE -extract / $DIR
# real    0m5,528s

mkdir $DIR
time bsdtar xp -C $DIR -f $FILE
# real    0m5,376s

# mkdir $DIR; cd $DIR
# time isoinfo -R -X -i ../$FILE # see note below
# real    0m0,446s

Они были протестированы против файла 780M на nvme ssd. Так что я бы придерживался 7z из-за краткого изложения удобства и высокой скорости.

Редактировать: я спешил около 7z. 7z и isoinfo извлекают файлы, но они повреждены. Вот почему они работали так быстро, я думаю. Я распаковывал файл AppImage. Тогда bsdtar кажется лучшим.


Я прокомментировал их, но оставил их на месте, чтобы другие могли легко использовать их аргументы. Также, возможно, это хорошая идея попробовать с другим ISO-изображением (т.е. не с AppImage).
Ашарк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.