Какой метод архивации лучше использовать для сжатия текстовых файлов в Linux?

В моем приложении мне нужно сделать сжатие журналов, которые являются текстовыми файлами.

Кажется, что bzip2 а также gzip имеют одинаковую степень сжатия.

Это верно?

7 ответов

Решение

Как правило, bz2 имеет лучшую степень сжатия в сочетании с лучшими функциями восстановления.

OTOH, GZ быстрее.

Говорят, что xz даже лучше, чем bz2, но я не знаю, каково время.

Последнее обновление http://www.maximumcompression.com/ - июнь-2011 (ответ обновлен в октябре-2015)
Поэтому этот сайт не упоминает
Текущий чемпион текстового компрессора во всем мире:

cmix

Соревнования / контрольные показатели:

Подробности:
Байрон Нолл активно развивается cmix как программное обеспечение libre (GPL) с 2013 года, основанное на книге " Сжатие данных, объясненное Мэттом Махони". Мэтт Махони также поддерживает некоторые из вышеперечисленных тестов и предлагает ZPAQ ( WP), инкрементный архиватор командной строки.


Если вы предпочитаете более стандартный инструмент (требующий меньше оперативной памяти), я рекомендую:

lrzip

lrzip это эволюция rzip Кон Коливас.
lrzip расшифровывается как два имени: Long Range ZIP и Lzma RZIP.
lrzip часто лучше чем xz (еще один популярный инструмент сжатия).
YI-78 также рекомендует lrzip,


Мой любимый:

zpaq

"Эксперт по архивированию", Мэтт Махони, интенсивно работал над алгоритмами PAQ в течение десяти лет и обеспечивает лучший компромисс между ресурсами ЦП / памяти и уровнем сжатия.

Тем не менее, последний zpaq версия не часто упаковывается / доступна в недавнем дистрибутиве:-(
Я всегда собираю его из источников, когда у меня новая машина, и мне нужен очень хороший компрессор: https://github.com/zpaq/zpaq

clone https://github.com/zpaq/zpaq
cd zpaq
g++ -O3 -march=native -Dunix zpaq.cpp libzpaq.cpp -pthread -o zpaq

Может быть, вы могли бы взглянуть на эти тесты, особенно часть, тестирующую сжатие файлов журнала.

Я сделал тест для тестирования, чтобы сжать следующее:
Папка 204 МБ (с 1600 файлами HTML)
Результаты

7zip =>     2.38 MB
winrar =>   49.5 MB
zip =>      50.8 MB
gzip =>     51.9 MB

так что 7zip - лучший среди них, вы можете получить его здесь
http://www.7-zip.org/

xz сжимает намного лучше, чем bz2, но занимает больше времени. Таким образом, если ваша цель - максимальное сжатие, а пространство на жестком диске выше (это мой случай, когда один диск заполнен на 98% - в то время как я реорганизую свои файловые системы), и вы можете запустить сценарий, чтобы выполнить работу. - сделать перерыв и вернуться через 5 минут.

В моем опыте unxz очень быстро распаковывается, и это хорошо для меня каждый день.

bz2 быстрее сжимается, чем xz, но, похоже, не достигает результатов сжатия xz.

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

У bz2 более плотное сжатие, в алгоритме есть больше вариантов поиска избыточности для сжатия.

В gzip гораздо больше инструментов и больше кроссплатформенности. Другие инструменты Windows могут работать с файлами.gz. Это часть http, так что даже веб-браузеры могут это понять.

В Linux есть инструменты, которые позволяют вам работать непосредственно со сжатыми файлами. zgrep и bzgrep могут искать в сжатых файлах.

Если бы только в Linux, я бы использовал bzip2, для немного лучших коэффициентов сжатия.

если вас больше волнует степень сжатия, чем скорость сжатия, то brotli — лучшее, что я нашел на данный момент.

У меня есть текстовый файл размером 2 МБ, и Brotli сжал его в два раза лучше (половинный размер), чем bzip2,gzip.

из Linux apt установите brotli и проверьте сами.

Другие вопросы по тегам