14

Я видел несколько сильно сжатых файлов, таких как 700 МБ данных, сжатых до 30-50 МБ.

Но как вы получаете такие сжатые файлы? Я пытался использовать программное обеспечение, такое как WinRAR и 7Zip, но никогда не достиг такого высокого сжатия.

Какие методы / программное обеспечение позволяют вам так хорошо сжимать файлы?

(PS Я использую Windows XP)

9 ответов9

12

Это полностью зависит от сжимаемых данных.

Текст сжимается очень хорошо, двоичные форматы не очень хорошо, а сжатые данные (mp3, jpg, mpeg) - совсем нет.

Вот хорошая сравнительная таблица компрессии из Википедии.

11

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

Сожмите данные несколько раз, используя различные инструменты, такие как 7zip, winrar (для zip) и bjwflate.

(Обратите внимание, что это не означает, что нужно сжать zip-файл снова и снова, а создать несколько альтернативных zip-файлов с использованием различных инструментов)

Затем запустите deflopt для каждого архива, чтобы немного уменьшить каждый архив.

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

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

7

Предыдущие ответы ошибочны на порядок!

Лучший алгоритм сжатия, с которым у меня есть личный опыт, это paq8o10t (см. Страницу zpaq и PDF).

Подсказка: команда для сжатия files_or_folders будет выглядеть так:

paq8o10t -5 archive files_or_folders

Размер архива в зависимости от времени сжатия и извлечения 10 ГБ (79 431 файлов) на внешний жесткий диск USB по умолчанию и максимальные настройки на ноутбуке Dell Latitude E6510 (Core i7 M620, 2+2 гиперпотока, 2,66 ГГц, 4 ГБ, Ubuntu Linux , Вино 1.6).Данные от 10 ГБ Benchmark (система 4).

Источник: инкрементная утилита архивации журналов и архиватор

Вы можете найти зеркало исходного кода на GitHub.


Немного лучший алгоритм сжатия и победитель премии Хаттера - decomp8 (см. Ссылку на странице с призом). Тем не менее, нет программы компрессора, которую вы могли бы использовать.


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

Пример из README.benchmarks:


Давайте разберем шесть деревьев ядра на одну версию в виде tarball, от linux-2.6.31 до linux-2.6.36. Они покажут много избыточной информации, но с разницей в сотни мегабайт, что lrzip будет очень хорошо сжимать. Для простоты будет сравниваться только 7z, поскольку на данный момент это лучший компрессор общего назначения:

Это тесты, выполненные на двухъядерном Intel Core2 с частотой 2,53 ГГц и оперативной памятью 4 ГБ с использованием lrzip v0.5.1. Обратите внимание, что он работал с 32-битным пользовательским пространством, поэтому возможна только адресация 2 ГБ. Однако тест был выполнен с опцией -U, позволяющей обрабатывать весь файл как одно большое окно сжатия.

Тарбол из 6 последовательных ядерных деревьев.

Compression    Size                 Percentage      Compress    Decompress
None           2373713920           100             [n/a]       [n/a]
7z             344088002            14.5            17m26s      1m22s
lrzip          104874109            4.4             11m37s      56s
lrzip -l       223130711            9.4             05m21s      1m01s
lrzip -U       73356070             3.1             08m53s      43s
lrzip -Ul      158851141            6.7             04m31s      35s
lrzip -Uz      62614573             2.6             24m42s      25m30s
3

Squeezechart.com содержит сравнения различных степеней сжатия. Хотя, как говорится в ответе Nifle, вы вряд ли получите такие высокие коэффициенты сжатия для двоичных форматов.

2

Большинство инструментов сжатия имеют настройки, позволяющие вам достичь более высокой степени сжатия при компромиссе более медленного времени сжатия / распаковки и большего использования оперативной памяти.

Для 7-Zip найдите "Добавить в архив" во встроенной справке для более подробной информации.

2

Вы можете попробовать 7zip со следующими ультра настройками:

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on big_file.mysql.7z big_file.mysql
2

Просто посмотрите Сводку тестов производительности для сжатия нескольких файлов, которая имеет лучший список сжатия, который состоит из полного теста сжатия.

Топ 30

Наилучшими показателями (на основе сжатия) в этом тесте являются PAQ8 и WinRK (PWCM). Они могут сжимать тестовый набор объемом более 300 МБ до 62 МБ (сокращение размера на 80%), но для завершения теста требуется не менее 8,5 часов. Программа номер один (PAQ8P) занимает почти 12 часов, а программа номер четыре (PAQAR) даже 17 часов, чтобы завершить тест. WinRK, программа со вторым лучшим сжатием (79,7%) занимает около 8,5 часов. Не удивительно, что все упомянутые программы используют PAQ (-подобный) движок для сжатия. Если у вас есть файлы со встроенными изображениями (например, файлы Word DOC), использующие PAQ8, он распознает их и сжимает отдельно, что значительно повышает степень сжатия. Все упомянутые программы (кроме WinRK) бесплатны.

1

Ваша лучшая ставка здесь, кажется, методом проб и ошибок. Попробуйте все доступные методы сжатия для каждого файла и выберите лучшее для размещения на вашем сайте. К счастью, компьютеры делают такие вещи довольно быстро и не скучают. Вы можете написать простой скрипт для автоматизации процесса, чтобы он был "относительно безболезненным".

Только не ожидайте чудес - 700 МБ до 30 МБ просто не случается так часто. Файлы журнала, как указано выше - да. "Ваш средний файл" - никак.

0

Nanozip, кажется, имеет наибольшее сжатие вместе с FreeArc. Но это еще не в окончательной версии. Вот как добивается хорошее сжатие Nanozip. У него очень высокая степень сжатия, и он не занимает слишком много времени, см. Сводку тестов производительности теста сжатия нескольких файлов, но FreeArc работает быстрее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .