Какой метод архивации лучше использовать для сжатия текстовых файлов в Linux?
В моем приложении мне нужно сделать сжатие журналов, которые являются текстовыми файлами.
Кажется, что bzip2
а также gzip
имеют одинаковую степень сжатия.
Это верно?
7 ответов
Как правило, bz2 имеет лучшую степень сжатия в сочетании с лучшими функциями восстановления.
OTOH, GZ быстрее.
Говорят, что xz даже лучше, чем bz2, но я не знаю, каково время.
Последнее обновление http://www.maximumcompression.com/ - июнь-2011 (ответ обновлен в октябре-2015)
Поэтому этот сайт не упоминает
Текущий чемпион текстового компрессора во всем мире:
cmix
Соревнования / контрольные показатели:
- enwiki6
18,2% сжатие текстового файла 1 МБ enwik6 - Calgary
Сжатие на 17,6% 14 файлов корпуса Калгари (tar-файл 3 ГБ) - Приз Хаттера
15,7% сжатие текстового файла 100 МБ enwik8
(ноcmix
не победитель, потому что требует слишком много оперативной памяти, более 20 ГБ) - Silesia Open Source Compression Benchmark
15.7% сжатие 202MB Silesia corpus - Тест на сжатие большого текста
12,4% сжатия текстового файла 1 ГБ enwik9
Подробности:
Байрон Нолл активно развивается 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 и проверьте сами.