1

У меня есть несколько папок около 8 ГБ или около того. Вместе эти папки составляют около 60 ГБ данных. Я могу сжать эти папки одним из двух способов: либо по отдельности, создав один сжатый архив для каждой из них, либо в целом в один большой сжатый архив.

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

3 ответа3

3

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

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

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

3

Приводит ли сжатие к одному большому архиву лучшее сжатие, чем отдельное сжатие папок? Не обязательно.

Только если в архиве используется сплошное сжатие. Нестабильный архив (например, Zip-архив) сжимает файлы по отдельности. Это позволяет легко распаковывать отдельные файлы из архива. Это также позволяет добавлять файлы в архив без необходимости повторного сжатия.

С твердыми архивами все это намного сложнее: чтобы распаковать файл в самом конце потока, все должно быть распаковано (хотя и не обязательно записано на диск). При добавлении файла алгоритм также должен пройти через все.

Однако есть середина: использование «сплошных блоков». Теперь архиватор не должен обрабатывать весь файл все время, а только часть файла.

В 7-Zip GUI эта опция:

7-Zip Добавить диалог

Без учета сжимаемых данных это действительно просто:

  • Не твердый: быстрый интерактивный доступ, худшее сжатие
  • Твердые блоки: несколько эффективный интерактивный доступ, лучшее сжатие
  • Твердый: Нет интерактивного доступа, лучшее сжатие

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

1

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

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

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

Есть еще один вопрос, который вы должны задать, прежде чем принять решение: стоит ли экономить место на обработке одного большого архива вместо нескольких меньших? В зависимости от того, где вы храните данные, может быть более экономичным просто использовать меньшие архивы, особенно если вам может понадобиться только одна из папок за раз.

В целом, хотя Келтари прав, единственный способ узнать наверняка - проверить это.

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