Лучший метод сжатия?

Я хочу сжать папку размером 16 ГБ, но какой метод лучше? tar.gz? tar.bz2 rar? 7z? Будет ли архив меньше, если я сначала сжимаю в методе, затем копирую сжатый архив в новую папку, затем повторно сжимаю другим способом? Мне нужно сделать так, чтобы он помещался на DVD (выход может быть 8,5 ГБ, не помню), но установка "4370 МБ" делает сжатый файл частью 2,5 ГБ.

Кстати, каков метод сжатия по умолчанию в Ubuntu?

3 ответа

Решение

По умолчанию gz, Лучшие результаты, которые я получаю 7z хоть.

Вот результаты для контейнера виртуальной коробки 1.4 Гб:

введите описание здесь

Лучшее сжатие - размер в МБ:

7z 493
рар 523
bz2 592
лж 607
гз 614
Z 614
почтовый индекс 614
.arj 615
Изо 737
зоопарк 890

Источник

введите описание здесь

устанавливать

 sudo apt-get install p7zip-full

Этот вопрос очень старый, но, возможно, кто-то найдет это решение полезным:

использование rzip, после tar, Сначала он сжимает блоки данных размером 900 МБ с помощью словарного метода, а затем передает очищенные данные в bzip2, Это намного быстрее, чем другие сильные инструменты сжатия (bzip2, lzma), а некоторые файлы сжимает даже лучше, чем bzip2 или же lzma,

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

Дополнение: lrzip новее и расширяет принцип rzip. Он даже поддерживает неограниченные размеры блоков и выбор методов сжатия (LZMA, Bzip2, Gzip, LZO, ZPAQ или нет). LZMA является стандартом. Для резервного копирования или если вы делитесь большим количеством данных с другими пользователями Linux/BSD, это может пригодиться.

Я выбираю LZMA, Он имеет наименьший объем байтов и имеет высокую степень сжатия. Сравнение между ZIP и LZMA: я сгенерировал два файла seq.txt с кодом PHP

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[$i%10].($i%10==9 ? "\n":""); file_put_contents('seq.txt', $str);

который содержит повторяющиеся блоки из 0,9 цифры ~ 1 МБ данных и rnd.txt с кодом PHP

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[rand(0,9)].($i%10==9 ? "\n":""); file_put_contents('rnd.txt', $str);

который содержит случайные блоки из 0,9 цифры ~ 1 МБ данных.

Результаты сжатия:

  • seq.txt, rnd.txt - 1100000 байт
  • seq.txt.zip - 2502 байта
  • rnd.txt.zip - 515957 байт
  • seq.txt.lzma - 257 байт
  • rnd.txt.lzma - 484939 байт

Степень сжатия:

  • ZIP -> "seq.txt" -> 99,772%
  • ZIP -> "rnd.txt" -> 53,094%
  • LZMA -> "seq.txt" -> 99,976%
  • LZMA -> "rnd.txt" -> 55,914%

Таким образом, LZMA сжала последовательные данные на 0,2% более эффективно, чем ZIP
и случайные данные на 2,8% эффективнее, чем ZIP.

Наверняка LZMA выигрывает!

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