LINUX.ORG.RU

Формат архива

 , , ,


0

3

А какой формат (кроме ZIP-а) имеет хорошую (не хуже ZIP-а) степень сжатия и позволяет быстро извлекать произвольный файл (тот же 7Zip так не умеет (или умеет, но с какими-то особыми параметрами кодирования), ему надо все (по крайней мере те что раньше запаковались) файлы перебирать, чтобы извлечь нужный) из большого архива? Архиватор Бабушкина не предлагать :-).

PS

В архиве не один файл, а тысячи и архив в распакованном виде ~ 5 Гб.

★★★★★
Ответ на: комментарий от i-rinat

А вот это очень интересно, спасибо. Возможно полностью решает все мои хотелки. Как кстати с чтением из такого примонтированного архива с программной точки зрения? Как с обычной ФС (т.е. нет необходимости во всяких временных файлах, как делает fileroller для открытия файла во внешней программе)?

peregrine ★★★★★ ()

7z вполне позволяет извлекать произвольный файл из архива, не распаковывая весь архив, как в случае .tar.gz какого-нибудь. Главное не делайте «solid archive».

Я бы на вашем месте выбрал .7z, т.к. он достаточно распространен, его поддержка есть во многих популярных программ для работы с архивами под многие ОС.

ValdikSS ★★★ ()
Ответ на: комментарий от peregrine

Как кстати с чтением из такого примонтированного архива с программной точки зрения? Как с обычной ФС

Да, за исключением того, что ФС read-only, и смонтировать ее обычно может только root

Правда есть squashfuse

annulen ★★★★★ ()

Мне кажется, что проблемы с быстрым извлечением произвольного файла возникают, когда все файлы сжимаются как один поток данных. Например

tar -c directory | xz -cz9 > directory.tar.xz

очень хорошо сожмёт директорию, но извлекать из большого архива отдельные файлы будет тяжело. А цепочка команд

find directory -type f -exec xz -z9 {} \; ; tar -cf directory.xz.tar $(find -type f -name "*.xz")

сожмёт каждый файл по отдельности, в результате общее сжатие будет хуже, зато извлекаться из архива (да и добавляться в архив) файлы будут быстрее.

Приведённый код не проверял, поэтому не исключены незначительные ошибки, но в целом, думаю, ясно.

aureliano15 ()
Ответ на: комментарий от ValdikSS

Угу. А как сделать non-solid 7z архив в Linux? У меня p7zip при попытке ввода ключа -ms=of падает с неверными аргументами.

7z a -ms=of archive.7z
много букв не несущих смысла
System ERROR:
E_INVALIDARG

Тьфу, я не внимателен. Надо было -ms=off

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от ValdikSS

ОК, разобрался. Спасибо, твой ответ будет решением моей проблемы.

Остальным так же спасибо, может кому-то больше подойдет другой вариант.

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от annulen

пропадет свойство быстрого извлечения одного файла

7z вполне себе может распаковать только один файл. На больших архивах не проверял. Но было бы странно, если он распаковывал squashfs от начала до нужного файла, если это можно сделать быстрее, начав с нужного блока.

i-rinat ★★★★★ ()