LINUX.ORG.RU

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

 , , ,


1

3

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

PS

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

★★★★★
Ответ на: комментарий от anonymous

Inb4 в виндавсе не работает.

И в VxWorks, наверное, тоже проблемы будут...

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

Это алгоритмы сжатия и не предоставляют своего контейнера (жмут 1 файл), так что они в пролете.

peregrine ★★★★★
() автор топика
Ответ на: rar? от justAmoment

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

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

Windows да, требуется, хотя не столь важен.

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

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

peregrine ★★★★★
() автор топика

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

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

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

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

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

Правда есть squashfuse

annulen ★★★★★
()

pbzip2 работает в несколько раз быстрее чем bzip2, попробуй.

Guest_now
()

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

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)
Ответ на: комментарий от i-rinat

Распаковать образ squashfs целиком легко, но тогда пропадет свойство быстрого извлечения одного файла

annulen ★★★★★
()

/me вспоминает времена ДОСа и архиватор ha...

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

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

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

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.