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

53

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

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

Аманда
источник

Ответы:

70

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

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

введите описание изображения здесь

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

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

Источник

введите описание изображения здесь

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

 sudo apt-get install p7zip-full
Rinzwind
источник
Спасибо, я уже установил 7z и rar через Центр программного обеспечения. Я попробую с 7z.
Аманда
1
Откуда эти результаты? Для каждого алгоритма степень сжатия и скорость очень сильно зависят от того, что вы пытаетесь сжать. Попробуйте сжать некоторые данные, поступающие /dev/urandom: вы получите разные результаты при каждой попытке. Или попробуйте /dev/zero: bzip2 - победитель (по соотношению).
Андреа Корбеллини
1
@AndreaCorbellini ссылка находится в ответе, так что нажмите на нее !? и, как я уже сказал: он основан на контейнере виртуальной коробки 1.4. Я согласен, что сжатие во многом зависит от того, какие это файлы, но из нескольких лет опыта 7z, кажется, лучше для файлов, которые у меня есть (в основном, программные и двоичные файлы данных)
Rinzwind
1
@Rinzwind: Мне очень жаль, я не видел ссылку на источник .
Андреа Корбеллини
1
@AndreaCorbellini все в порядке;) будем надеяться, что Аманда сообщит результаты: +
Rinzwind
14

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

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

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

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

user258532
источник
Я думаю, вы имели в виду блоки размером 900 кБ? 900 МБ было бы немного больше ...
Byte Commander
1
Это на самом деле 900 МБ. См en.wikipedia.org/wiki/Rzip
user258532
2

Я выбираю 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 выигрывает!

Агниус Василяускас
источник