Кращий метод стиснення?


53

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

BTW, який метод стиснення за замовчуванням для Ubuntu?

Відповіді:


70

Типовим є gz. Хоча найкращі результати я отримую 7z.

Ось результати для віртуального контейнера 1,4 Гбіт:

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

Найкращий розмір стиснення - МБ:

7z 493
rar 523
bz2 592
лж 607
gz 614
Z 614
zip 614
.arj 615
lzo 737
зоопарк 890

Джерело

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

Встановити

 sudo apt-get install p7zip-full

Дякую, я вже встановив 7z та rar через Software Center. Я спробую з 7z.
Аманда

1
Звідки беруться ці результати? Для кожного алгоритму коефіцієнт стиснення та швидкість дуже сильно залежать від того, що ви намагаєтесь стиснути. Спробуйте стиснути деякі дані, які надходять /dev/urandom: ви отримаєте різні результати в кожній спробі. Або спробуйте /dev/zero: bzip2 - переможець (для співвідношення).
Андреа Корбелліні

1
@AndreaCorbellini посилання є у відповіді, тому натисніть його !? і, як я вже сказав: він базується на контейнері 1.4 virtualbox. Я погоджуюся, що стиснення багато в чому залежить від файлів, але, маючи кількарічний досвід 7z, здається, краще для файлів, які я, як правило, (переважно програмні та бінарні файли даних)
Rinzwind

1
@Rinzwind: Мені дуже шкода, що я не бачив посилання на джерело .
Андреа Корбелліні

1
@AndreaCorbellini це нормально;) Будемо сподіватися, що Amanda повідомляє про результати: +
Rinzwind

14

Це питання дуже старе, але, можливо, хтось вважає це рішення корисним:

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

Так, gzце інструмент стиснення за замовчуванням у Linux. Це швидко, і незважаючи на свій вік, він дає дуже хороші результати при стисненні текстових файлів, таких як вихідний код. Ще один стандартний інструмент - це bzip2, хоча він набагато повільніше.

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


Я думаю, ти мав на увазі блоки 900 кБ? 900 Мб було б трохи великим ...
Байт командир

1
Це фактично 900 МБ. Дивіться en.wikipedia.org/wiki/Rzip
користувач258532

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 виграє!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.