2

У меня есть куча очень больших файлов, расположенных на компьютере с Linux, которые я хотел бы сжать и сэкономить место. Я попытался использовать комбинацию tar/gzip и заметил, что степень сжатия не очень хорошая. Файл 1.2GB был сжат в файл 1.1GB . Я попытался увеличить уровень сжатия, как предложено здесь: Как указать уровень сжатия при использовании tar -zcvf?

но это все еще не было немного лучше. Я скопировал этот же файл на компьютер с Windows и запустил на нем WinRar. Полученный сжатый файл имел размер всего 0.45GB .

Есть ли причина такого огромного несоответствия? Есть ли лучший инструмент сжатия для Linux?

ОБНОВЛЕНИЕ: я даже попробовал lzma и все еще не намного лучше

1 ответ1

3

Gzip не очень хороший алгоритм по сравнению с Rar.

В наши дни более распространенным методом для Linux является bzip2, который устанавливается по умолчанию почти во всех дистрибутивах Linux.

Вы можете переключить архиватор tar на использование сжатия bzip2, изменив в командной строке значение tar -cvjf а не tar -cvzf ключом которого является замена z на j в опциях.

Надеемся, что это приведет к хорошему увеличению степени сжатия.

Причина расхождения заключается в том, что это принципиально разные алгоритмы сжатия. Gzip является более старым алгоритмом, и более старые алгоритмы, как правило, требуют меньше вычислительных ресурсов, чтобы завершить их за разумное время. Это является результатом более легкодоступной вычислительной мощности, могут быть использованы более совершенные и более вычислительные алгоритмы, которые заканчиваются за то же время, что и более старый алгоритм на более старом компьютере. И наоборот, старые алгоритмы будут выполнять сжатие намного быстрее на новом компьютере.

Практически любой архиватор Windows имеет аналог на Linux. 7zip - хороший архиватор, который дает хорошие результаты в Windows и имеет неофициальную версию для Linux.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .