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

45

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

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

    
задан Amanda 05.01.2013 в 16:14
источник

3 ответа

64

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

Ниже приведены результаты для контейнера виртуальных боксов емкостью 1,4 Гб:

Best compression – size in MB:

7z 493
rar 523
bz2 592
lzh 607
gz 614
Z 614
zip 614
.arj 615
lzo 737
zoo 890

Источник

Install

 sudo apt-get install p7zip-full
    
ответ дан Rinzwind 05.01.2013 в 16:29
источник
12

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

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

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

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

    
ответ дан user258532 19.05.2014 в 11:22
1

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

    
ответ дан Agnius Vasiliauskas 04.11.2017 в 13:04