LINUX.ORG.RU
ФорумTalks

О компрессии tar архивов

 


1

2

Сжимаю модули трёх ядер с помощью tar.xz -> 59,264,016 bytes

То же самое, но предварительно отсортировав файлы по имени/расширению -> 41,409,796 bytes

Итого, выигрыш в 43%.

Способ 2 используется всеми архиваторами-комбайнами. Вот вам и плюсы разнородных утилит/unix философии в частности. Обычный 7z на ту же папку со словарём 128M -> 41,322,109 bytes (только не надо мучаться с сортировкой файлов, просто тупо: 7z a -mx=9 -md=128m (или в GUI - словарь 128MB, ultra сжатие).

Перемещено true_admin из general


вопрос то в чём?

zolden ★★★★★
()

Еще сравни время, и попробуй tar.7z и просто .xz (для справедливого сравнения)

leave ★★★★★
()

Итого, выигрыш в 43%.

зато времени больше требуется, для сортировки. Что сказать хотел?

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

Время сортировки - меньше секунды, время сжатия больше 2,5 минут.

Что сказать хотел?

Что ваш комментарий не несёт никакой полезной нагрузки.

iab
() автор топика
Ответ на: комментарий от leave

tar.7z получается по размеру таким же как tar.xz.

Что такое «просто xz»? XZ - компрессор, а не архиватор.

iab
() автор топика

и если на штеуде, компильни архиваторы ICC'шкой и получи профит +15%-30% ускорения сжатия.

science ★★☆
()

а ещё это тебе просто повезло, могло быть и наоборот - после сортировки размер архива мог увеличиться, в зависимости от содержимого файлов

Harald ★★★★★
()

И вообще, что это ты тут циферками махаешь? Ты код покажи, команды и т. п.

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

Дебилушки выползли - tar архивы совпадают до байта, при распаковке diff -r различий не находит.

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

Код сортировки файлов? Там не только это надо, там ещё и директории надо специально подготавливать, чтобы mtime у них не потерялся.

Только зачем Вам - вы же на семёрочке ульмативной.

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

Дебилушки выползли - tar архивы совпадают до байта, при распаковке diff -r различий не находит.

tar-архивы или их содержимое?

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

Содержимое, конечно.

tar файлы, если бы вы подумали, никак не могут совпадают - внутри файлы в ином порядке.

Странно, что я 5 звёздочным представителям этого форума такие вещи объясняю.

iab
() автор топика
Ответ на: комментарий от Harald

а ещё это тебе просто повезло, могло быть и наоборот

Дайте примеры - или предоставьте доказательства, что высказанное вами предположение выполняется хотя бы в 10% случаев. Иначе зачем вы это сказали? Чтобы воздух сотрясти? По этому обсуждению это заметно - бОльшая часть комментариев не несёт никакого смысла.

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

Содержимое, конечно.

tar файлы, если бы вы подумали, никак не могут совпадают - внутри файлы в ином порядке.

Я задал вопрос именно потому что подумал. Ведь твоя фраза «tar архивы совпадают до байта» имеет вполне определённое значение.

Странно, что я 5 звёздочным представителям этого форума такие вещи объясняю.

У меня складывается впечатление, что у тебя просто распухло ЧСВ из-за того, что ты совершил супер-мега-открытие (которое на самом деле - давно известный факт).

Наезд на «unix-философию и раздельные утилиты» тоже не понятен: ничто не мешает стандартному GNU'тому tar'у скормить предварительно отсортированный список файлов.

Deleted
()
Ответ на: комментарий от iab

Что такое «просто xz»? XZ - компрессор, а не архиватор.

признаться, я не в курсе

tar.7z получается по размеру таким же как tar.xz

что и требовалось доказать :)

leave ★★★★★
()

Пара мыслей на тему...

  • Лучше учитывать не имя и расширение, а именно тип содержимого. Получить его можно, например, через libmagic.
  • Можно не просто сортировать, а располагать файлы в архиве на основании «похожести» между ними. Правда это выливается в задачу коммивояжёра =).
Deleted
()
Ответ на: комментарий от Deleted

У меня складывается впечатление, что у тебя просто распухло ЧСВ из-за того, что ты совершил супер-мега-открытие (которое на самом деле - давно известный факт).

ЧСВ? Я открытие сделал? Ржу под столом - взрослые люди на сайте, а разговаривают как малые дети. Я просто сделал то, чем архиваторы в Windows/MacOS X/MS-Dos занимаются с года так 1993 (с такой возможностью arj был первым на моём веку).

Наезд на «unix-философию и раздельные утилиты» тоже не понятен: ничто не мешает стандартному GNU'тому tar'у скормить предварительно отсортированный список файлов.

Сколько долей процента людей этим будет морочиться? 0.01%?

Мне нечего к этой теме добавить. Можно её закрыть на модераторов. :-)

iab
() автор топика
Ответ на: Пара мыслей на тему... от Deleted

Получить его можно, например, через libmagic.

Что, например, в случае с сетевой шарой может замедлить процесс архивирования в разы.

Можно не просто сортировать, а располагать файлы в архиве на основании «похожести» между ними.

Как показывает моя практика, а также FreeArc - это не даёт существенного выигрыша в степени сжатия.

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

ЧСВ? Я открытие сделал? Ржу под столом - взрослые люди на сайте, а разговаривают как малые дети. Я просто сделал то, чем архиваторы в Windows/MacOS X/MS-Dos занимаются с года так 1993 (с такой возможностью arj был первым на моём веку).

Зачем тогда ты создал эту тему?

Сколько долей процента людей этим будет морочиться? 0.01%?

Ну вот ты же заморочился. И даже тему создал 8).

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

Я думал найдутся вменяемые, которые скажут:

«Тема очень интересная, покажите как вы этого добились». Но нет - обсуждаем моё ЧСВ (что это вообще такое??), придираемся и т.д. ))

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

Что, например, в случае с сетевой шарой может замедлить процесс архивирования в разы.

И может заметно улучшить сжатие.

Как показывает моя практика, а также FreeArc - это не даёт существенного выигрыша в степени сжатия.

Можно подробнее про практику?

В описании freearc не нашёл ничего на тему алгоритма расположения файлов в архиве.

Deleted
()
Ответ на: комментарий от iab

«Тема очень интересная, покажите как вы этого добились». Но нет - обсуждаем моё ЧСВ (что это вообще такое??), придираемся и т.д. ))

Этой теме уже не один десяток лет, а как ты этого добился - написано в первом посте. Что ещё обсуждать?

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

В описании freearc не нашёл ничего на тему алгоритма расположения файлов в архиве.

Вы запустите его с GUI, можно через Wine - там 100500 вариантов сортировки файлов - я одно время с этим игрался, но, не получив заметного выигрыша, забил - остановился на 1) сначала сортируем по расширению 2) потом по имени.

И может заметно улучшить сжатие.

Тут можно вообще сума сойти, если идеал искать ))) Nanozip, WinRK, PAQ'и всякие + precomp и прочие «разматывалки» исходного материала.

iab
() автор топика
Ответ на: комментарий от Deleted

написано в первом посте

Скрипт для сортировки файлов для новичка неподъёмный. Вообще никак. :-)

Я думаю и вы поднатужитесь, чтобы его написать ))

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

Вы запустите его с GUI, можно через Wine - там 100500 вариантов сортировки файлов - я одно время с этим игрался, но, не получив заметного выигрыша, забил - остановился на 1) сначала сортируем по расширению 2) потом по имени.

Я не про сортировку, а про обход полного графа.

Deleted
()
Ответ на: комментарий от iab

Скрипт для сортировки файлов для новичка неподъёмный. Вообще никак. :-)

Я думаю и вы поднатужитесь, чтобы его написать ))

После web-сервера с простеньким форумом и галереей картинок на bash'е? Не, не угадал.

Deleted
()

А если использовать bz2, выигрыш будет и если да то какой? xz все же мало кто использует.

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

Оно по умолчанию, по-моему, с самого начала.

iab
() автор топика
Ответ на: комментарий от Legioner

У bz2 словарь мелкий, но выигрыш будет несомненно.

Если интересует - могу сравнить.

iab
() автор топика

Что можно делать дальше: автоматизировать создание отсортированных архивов, слить зеркало какого-нибудь дистрибутива (вроде в slackware используется tar.xz), пережать его всё этим способом и опубликовать результат в виде статейки на 2-3 страницы.

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

Я не вникал в тонкости работы алгоритмов - исходники FreeARC всегда есть.

iab
() автор топика
Ответ на: комментарий от Thero

Запилить это на C мне жутко лениво, тем более, есть большая вероятность, что патч не примут.

На shell самое то, а главное - работает и с cpio, который я больше tar'a люблю, ибо у него есть -H crc.

iab
() автор топика
Ответ на: комментарий от zolden

Вы ветку перечитайте, а?

Я никаких открытий не сделал - я указал на серьёзную неэффективность сжатия по умолчанию.

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

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

хотя я смотрю таких танкистов полно, такчто лови пол плюса в карму.

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

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

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

файлы только .ko, или еще и другие есть? если не только ko, то достаточно просто сгруппировать бинарные и не_бинарные файлы, результат будет примерно такой же

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

достаточно просто сгруппировать бинарные и не_бинарные файлы, результат будет примерно такой же

98% .ko, 2% для moddep - текстовики, так что ваша идея не работает - сортировать по имени надо обязательно.

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

Я думал найдутся вменяемые, которые скажут:

Тема интересная, возьму на заметку.

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

98% .ko, 2% для moddep - текстовики, так что ваша идея не работает - сортировать по имени надо обязательно.

.ko - объектные файлы, содержашие двоичный код и информацию для связываия. moddep - обычные текстовые файлы US-ASCII.

В чём фишка сортировки по имени?

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

сортировать по имени надо обязательно

полное 4.2

реквестирую архив, а так же ваши догадки о смысле сортировки по имени.

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

ДАЁШЬ ОДНОСТРОЧНИК!!1

( find /lib/modules -type d; D=$( printf "\t" ); find /lib/modules ! -type d | sed -e "s,^.*/\([^/]*\)\(\.[^./]*\)$\|,\2${D}\1${D}\0," | sort | cut -d "${D}" -f 3 ) | tar vczf sorted.tar.gz --no-recursion -T -

Можно ещё попробовать поиграться с аргументами sort.

Я тестировал с gzip вместо xz, так как xz слишком медленный, но небольшой выигрыш всё равно есть:

-rw-rw-r--. 1 ivan.mironov ivan.mironov 541M нояб. 21 21:59 sorted.tar.gz
-rw-rw-r--. 1 ivan.mironov ivan.mironov 549M нояб. 21 21:54 unsorted.tar.gz

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)

реквестирую результаты zlib

/или скинь ссылку на то, что ты там сжимаешь

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