LINUX.ORG.RU

а расскажите мне про форматы архивов

 


0

6

Появилось ли что-то более новое модное и хорошее, чем формат 7zip, единственным недостатком которого является отсутствие сохранения linux-овых атрибутов и расширенных атрибутов? Давно не следил за этим - года так с 2009, а сегодня увидел появление zstd которому уже 9 лет, но он такой же специфический как и xz, т.е. годится только в связке с tar, что не даёт извлекать произвольные файлы без распаковки всего архива. Понятно что где-то там продолжают развиваться архиваторы семейства PAQ, но на практике их применять невозможно из-за очень медленной скорости упаковки/распаковки.

★★★★★

7zip - то архиватор со сжатием, zstd - алгоритм сжатия, tar - архиватор без сжатия.

Что именно тебя интересует? Сохранение атрибутов это компетенция архиватора. Напиши свой, который будет сохранять что угодно и жать файлы отдельно (я так и сделал, правда для других целей). Сжатие при этом своё писать не надо, задействуй из готовой библиотеки на выбор, хоть zlib, хоть zstd хоть ещё что.

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

Через облака гонять вестимо. Бэкапы хранить, да и вообще у меня чистых файлов разных, например, датасетов для машинного обучения с которыми я когда-то работал на 10 терабайт и да, не все можно получить нынче с инета, какие-то были удалены их авторами, какие-то были собраны мной с ресурсов которые больше не существуют. Всяко лучше архивировать, чем так хранить, тем более когда в датасетах json-ы, xml-и или csv, которые сами по себе структурированный плейнтекст, то жмутся они очень хорошо - 5 гигов ужимаются до 1. А это значит что вместо 10 терабайтного винта и ещё одного для резервирования, мне хватит 2 по 1 терабайту.

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

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

Ну и упаковка внутри форматов тоже часто через архиватор происходит. Например, так внутрях работает этот ваш лайбр или майкрософт офис. По сути их форматы odt или docx это тупо zip архив с файликами и папками внутри. Так что даже в программировании у архивов огромное применение. Вообще многие форматы это на самом деле zip/gzip/xz/bzip в которых напиханы json-ы/xml/картинки прямо jpeg-ами или png, тупо потому что ты не хочешь чтоб у тебя вместо одного файла который ты пересылаешь была папка и 100500 файликов.

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

а зачем архивы? Время дискет прошло - умхо проще купить емкий SSD умеющий USB 3+, чем ждать пока распакуется архив

действительно, надо сделать кодирование, чтоб наоборот байты лишние добавляло, например все тексты хранить в ucs4, а то чё как лохи :)

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

Да, именно так. Это самое важное свойство у архивов для меня. Сейчас я использую 7zip с -ms=off для этих целей. Тогда извлечение произвольных данных быстрое. Более того, я подумываю над заменой zip контейнеров на 7zip контейнеры в своих форматах файлов. По сути добавить поддержку любого контейнера, к которому есть сишная библиотека не так сложно.

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

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

GAMer ★★★★★
()

zpaq. Дольше, больше оперативки, лучше трамбует. Куча настроек, более жирная не обязательно сильнее.

А как выхотели? Чуда скорее всего не будет, есть быстрые а есть жирные архиваторы.

kirill_rrr ★★★★★
()

форматы архивов

а сегодня увидел появление zstd которому уже 9 лет, но он такой же специфический как и xz

Смешались в кучу кони, люди.

zstd и xz — компрессоры. tar — архиватор. 7z — комбайн из того и другого.

Что вас интересует из этого?

Из интересного могу посоветовать глянуть SquashFS, который умеет в том числе и в zstd. Это ФС со сжатием, которую можно использовать и как сжатый архив. Но полезно именно то, что её можно и просто примонтировать и использовать. Очень удобно для игр, например. Или для любых других данных, которые никогда не изменяются, но неплохо сжимаются.

P.S.

т.е. годится только в связке с tar

и zstd и xz прекрасно работают и без tar. У меня довольно много файлов *.txt.zst

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от Psilocybe

Если я правильно понял, то такой формат бы не помешал, такой себе 7zip архив из потаренных файлов. И даже наверное обертка для всего этого не такая и сложная будет. Странно, что ещё никто сделать на догадался.

Loki13 ★★★★★
()

т.е. годится только в связке с tar, что не даёт извлекать произвольные файлы без распаковки всего архива

а tar это не умеет разве? Я вроде делал что-то такое

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

Поиск выдает, что

7-Zip is capable of opening squashfs images and extracting their files. I tested this on 7-Zip version 15.14 [64-bit] on Windows 10 with a squashfs image which uses xz compression.

Также есть какой-то Squashfs Tools for Windows, который даже создавать их под вендой умеет.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)

Если важна скорость доступа, то я бы порекомендовал юзать не архиватор а бекап софт. К примеру, borgbackup имеет для этой цели две ключевые фишки: анализ данных перед сжатием (если фай плохо сжимаемого формата, то не сжимает) и быстрый доступ (монтирование бекапа через fuse). С относительно свежего, еще есть restic. Но я до него еще не добрался.

Если нужно сжимать один большой файл, то, ИМХО, оптимальный алгоритм – zstd. В сравнении с другими алгоритмами сжимает медленее среднего но распаковывает довольно быстро. Я им дампы баз давлю. Из 40-гиг дампа получается 400М архива. Правда ключики у мня «не детские»: zstd -T0 --adapt --long=31 --memory=10G --zstd=strategy=9. В прочем, мне пофигу сколько оно там ночью будет колбасить, когда сервак простаивает.

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

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

Ну и да, добавлять в SquashFS таки можно. Хотя я никогда этой возможностью реально и не пользовался.

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

На самом деле, таких юзкейсов довольно много.

возможно, но искать замену - значит иметь все возможности архиватора (7z, rar, …) которые они умеют, например rar умеет синхронизацию (-AS)

x905 ★★★★★
()
Ответ на: комментарий от anonymous
  1. зачем же монтировать если можно не монтировать ? ) права еще надо выдать
  2. это не одно и тоже, мы ведь рассматриваем случай когда и архив и файл SquashFS расположены на одном и том же разделе. архив просто увеличится в размере, а тут лишние телодвижение по изменению размера файла SquashFS
x905 ★★★★★
()
Ответ на: комментарий от ivanich10

зачем архивы

Удваиваю этого оратора. Нормально жмутся только тексты, а они по нынешним меркам не занимают ничего. Одно кинцо в UHD весит как всё что написано человечеством.

no-such-file ★★★★★
()
Ответ на: комментарий от x905

Заменя не обязана быть одной единственной. Под разные юзкейсы разные инструменты, с максимумом профита от каждого. Я юзаю SquashFS для игр, например — для них он идеален. Именно чтоб примонтировал-запустил, без распаковки. Ещё и время загрузки уменьшается, потому что меньший объём читать с диска. Для бэкапов — borg. Для архивирования уже пожатого (обычно чтобы поделиться, либо чтобы потом пройтись gpg) — tar. Для архивирования со сжатием — tar.zst, для просто сжатия — zst. Для того, чтобы поделиться сжимаемым с виндузятниками — 7z.

CrX ★★★
()
Ответ на: комментарий от no-such-file

Помимо книжек нормально жмутся игры. Да-да, говноразработчики, да-да, не оптимизировали заранее, чтоб уже пожато было — пользователю от этого не легче.

Ну и тексты тоже вещь серьёзная. Больше терабайта книжек ужимается в менее 100 ГБ. Экономия в 900 ГБ — это не кот наплакал. Правда нафига там архивы, я не знаю, достаточно компрессором пожать каждую. Так удобнее. Ну и что, что это всего дюжина-две фильмов в UHD. Я лучше буду иметь возможность хранить эту лишнюю дюжину, чем не имеет.

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

SquashFS тоже просто увеличится в размере при добавлении файла.

разве с ним можно работать как с обычным архивом - добавить, удалить файл ? или монтировать надо на каждый раз

x905 ★★★★★
()