Я планирую сжать файлы дампов экспорта Oracle всех серверов баз данных Oracle, чтобы уменьшить использование места на их дисках.
Мой вопрос: знаете ли вы какую-нибудь хорошую утилиту / алгоритм сжатия для сжатия этого типа файлов?
Я провел несколько сравнений, используя файл .DMP размером 4800 МБ. В результате чего:
Затем я провел несколько тестов с меньшим файлом .DMP, размером 72 МБ:
Все эти тесты проводились с 7Zip, а уровни сжатия относятся к настройкам по умолчанию, доступным в 7Zip.
Некоторые выводы и наблюдения на данный момент
LZMA и LZMA2 кажутся лучшими вариантами для файлов .DMP. Я видел, как другие люди тоже сообщали об этом на других форумах. В 7zip LZMA поддерживает только 2 процессора, а LZMA2 поддерживает больше (также будет использовать больше памяти). Поскольку результаты сжатия выглядят одинаково, выбор LZMA2 должен привести к более быстрому сжатию.
Теперь давайте поиграем со словом и размером словаря для сверхсжатых файлов LZMA2 ...
Окончательные выводы
7zip, 7z, LZMA2 или как вы его называете, это то, что вам нужно.
Если у вас есть терпение, ультра компрессия окупится. Еще больший размер слова также окупается, но использование словаря большего размера может и не оказаться (в этом тестовом примере).
Мне было бы любопытно получить некоторые средние степени сжатия людей, пробующих это. Я постараюсь вспомнить результаты публикации, когда закончу сжимать несколько больших архивов.
Новые выводы
Я тонко настраивал это и получил наилучшие результаты по времени / соотношению со следующими настройками:
Файлы дампа Oracle используют собственный двоичный формат. Итак, вам нужно стандартное сжатие, подходящее для двоичных данных. bzip2 хорош с двоичными данными, поэтому я бы рекомендовал это.
ВОТ - отличная статья, которую я использовал при создании сценария резервного копирования на некоторых Linux-машинах. Сработало действительно хорошо. В итоге я использовал rzip для своих нужд. Я использовал его для резервного копирования и сжатия всех типов файлов данных, включая дампы базы данных SQL.
Основываясь на ответе @Wouter, я смог добиться хорошего результата со следующими параметрами (примерно в 3 раза меньший словарь и в 10 раз больший размер слова - не могу подтвердить его влияние на время сжатия):
7z a -r -ms=e4g -mqs+ -m0=LZMA2:a=0:d=18m:mf=hc4:fb=128:mc=5:lc=4:lp=0:pb=0 -bt outfile.7z @items_to_archive.txt
Он дает степень сжатия 0,12 (сжатые размеры / исходный размер) и на 18 ... 20% быстрее, чем -mx4
. Более высокое сжатие может быть достигнуто с помощью a=1
, более высокие значения для d
, fb
и mc
за счет увеличения времени сжатия.
Для сравнения, метод WinRar «Лучший» с параметрами по умолчанию дает коэффициент сжатия 0,11 и примерно в 6 раз медленнее, метод «Самый быстрый» дает сжатие 0,17 и в 1,5 раза быстрее. Однако архивы Rar извлекаются в 3 раза быстрее.
Я сначала попробую использовать 7zip с ультра-уровнем сжатия и посмотрю, что вы можете получить. Я определенно получаю лучшие результаты от .7z, чем от .zip формата ...
bzip2
обычно является моим ответом по умолчанию на такую задачу.