Архивирование файлов в Linux. Что такое gzip- файл и как открыть файл gzip? Gzip открытие работа с текстовыми документами

gzip (сокращение от GNU zip) – компьютерная утилита сжатия и восстановления (декомпрессии) файлов, использующая алгоритм DEFLATE. Используется в основном в UNIX-системах, в ряде которых является стандартом де-факто для сжатия данных. Была создана Жан-лу Галли (Jean-loup Gailly) и Марком Адлером (Mark Adler). Версия 0.1 была впервые выпущена 31 октября 1992 года, а версия 1.0 – в феврале 1993 года.

В соответствии с традициями Unix-программирования, gzip выполняет только две функции: сжатие и распаковка одного файла, он не умеет упаковывать несколько файлов в один архив. При сжатии к оригинальному расширению файла добавляется суффикс.gz. Для упаковки нескольких файлов обычно их сначала архивируют в один файл утилитой tar, а потом этот файл сжимают gzip. Таким образом, сжатые архивы обычно имеют двойное расширение.tar.gz или сокращённое.tgz.

С другой стороны, указанная особенность даёт gzip возможность работать с непрерывным потоком данных, упаковывая/распаковывая их «на лету». Это широко применяется в UNIX-системах: при помощи перенаправления потоков можно работать с упакованными файлами так же легко, как и с распакованными (распаковывая их в памяти при чтении и упаковывая при записи); многие Unix-утилиты имеют встроенную поддержку этого механизма. В последнее время gzip активно применяется для сжатия интернет-трафика. Сейчас gzip поддерживает большинство современных браузеров.

Кроме того, существует набор утилит для выполнения поиска, вывода и сравнения данных в формате gzip: zcat, zdiff, zfgrep, zless, zcmp, zegrep, zgrep, zmore.

- Расширение (формат) - это символы в конце файла после последней точки.
- Компьютер определяет тип файла именно по расширению.
- По умолчанию Windows не показывает расширения имен файлов.
- В имени файла и расширении нельзя использовать некоторые символы.
- Не все форматы имеют отношение к одной и той же программе.
- Ниже находятся все программы с помощью которых можно открыть файл GZIP.

HaoZip - китайский клон популярного архиватора Winrar, как с точки зрения функциональности так и интерфейса в целом. Архиватор умеет работать со всеми популярными форматами, среди которых 7Z, ZIP, TAR, RAR, ISO, UDF, ACE, UUE, CAB, BZIP2, ARJ, JAR, LZH, RPM, Z, LZMA, NSIS, DEB, XAR, CPIO, SPLIT, WIM, IMG и другие. Кроме этого с помощью Haozip можно монтировать ISO образы и посмотреть картинки через встроенный просмотрщик, что весьма полезная фича для архиваторов. Что касается интерфейса, то здесь китайские разработчики хорошо потрудились. Они не только скопировали дизайн и функционал с архиватора Winrar, но и добави...

WinRAR – известная программа, предназначенная для работы с архивами. Утилита включает широкий спектр встроенных возможностей. WinRAR быстрее конкурентов сжимает данные, экономя дисковое пространство и время пользователя. Поддерживает известные форматы архивов и подходит для сжатия файлов мультимедиа. Автоматическое распознавание формата файла, особый алгоритм сжатия данных и оптимальный метод упаковки - преимущества приложения. WinRAR умеет сжимать экзекутивные, мультимедийные файлы и библиотеки объектных модулей. Приложение позволяет разделять архивы на отдельные тома и сохранять их на разных накопителях информации.

При разработке архиватора FreeArc автор решил создать программу, которая выполняет сжатие файлов с максимальной скоростью. Для этого потребовались лучшие качества библиотек сжатия LZMA, PPMD и GRZipLib. В процессе упаковки архиватор формирует файлы по типам и производит сжатие благодаря применению наиболее подходящего алгоритма. При работе архиватор использует более десяти различных алгоритмов и фильтров. Если сравнить это с распространёнными архиваторами, то у 7-zip всего три, а у RAR использует всего семь алгоритмов. Архиватор легко адаптируется для установки на различных системах. Он разработан на открытой платформе дающей в...

7-Zip – известный архиватор с открытым исходным кодом. Такая особенность позволяет вносить изменения в структуру программы, добавляя в неё определённые функции. Программа отличается понятным и простым интерфейсом и обладает уникальными алгоритмами, позволяющими ускорить архивацию данных и их распаковку. Также, данная программа может выполнять стандартные операции с архивом, например, вы можете установить пароль на файл, либо установить степень сжатия архива. Также, если необходимо, вы можете создать самораспаковывающийся архив с необходимыми параметрами, которые задаются в специальных комментариях к архиву.

ExtractNow является удобной программой, позволяющей распаковать заархивированные файлы достаточно быстро: всего лишь нажатием одной кнопки. Особенно удобна такая опция покажется тем пользователям, которым регулярно приходится распаковывать множество файлов. Единственный минус - программа не поддерживает создание архивов, т.к. является исключительно распаковщиком (качественным и удобным), а не архиватором. Чтобы совершить распаковку файла, нужно перетащить архивы в окно программы и нажать кнопку Extract. Поддерживает популярные форматы архивов. Таким образом, программа может распаковать все популярные и наиболее часто использующ...

Simplyzip – удобный архиватор со всеми необходимыми функциями, которые использует большинство пользователей. Программа работает практически со всеми популярными форматами архивов, включая rar или zip. Тем не менее, из-за того, что разработчики программы winRar не разрешают использовать алгоритмы своего формата, архивы Rar можно только распаковывать или просматривать их содержимое. Однако программа Simplyzip поддерживает установку различных модулей и плагинов, которые могут расширить функционал данного архиватора. Если установить необходимый плагин, то программу можно научить создавать, как Rar архивы, так и архивы других формат...

Ежегодно, для улучшения и большего удобства пользователей, разработчики различного компьютерного софта выпускают множество интересных, удобных и качественных программ, существенно помогающих в работе. Одной из таких программ является новейшая разработка архиватора WinArc. Данная утилита доступна для общего пользования и с его помощью вам не составит труда заархивировать или разархивировать, любой, интересующий вас файл. Данная утилита во время работы, использует все ядра процессора тем самым ускорив процесс архивирования. Кроме этого имеет функцию регулировки использования ОЗУ, что позволит значительно снизить нагрузку на ваш к...

В жизни каждого мужчины наступает момент, когда трафик растёт и сервак умирает необходимо задуматься об оптимизации. В последнем дайджесте PHP (№ 40) была упомянута ссылкой статья «How GZIP Compression Works». Исходя из статистики , 56% веб-сайтов используют GZIP. Я надеюсь, эта статья раскроет перед читателем достоинства этой технологии.

В тексте возможны ошибки (делал вычитку несколько раз, но всё же вдруг), поэтому заранее прошу прощения и прошу сообщать мне обо всех проблемах через личные сообщения, если какая-то часть перевода покажется вам некорректной.

Даже в современном мире, со скоростным интернет соединением и неограниченными хранилищами информации, сжатие данных по-прежнему актуально, особенно для мобильных устройств и стран с медленным интернет-соединением. Этот пост описывает метод де-факто сжатия без потерь для сжатия текстовых данных на веб-сайтах: GZIP.

GZIP compression

GZIP обеспечивает сжатие без потерь, иными словами, исходные данные можно полностью восстановить при распаковке. Он основан на алгоритме DEFLATE, который использует комбинацию алгоритма LZ77 и алгоритма Хаффмана.
Алгоритм LZ77
Алгоритм LZ77 заменяет повторные вхождения данных на «ссылки». Т.е. если в имеющихся данных какая-то цепочка элементов встречается более одного раза, то все последующие её вхождения заменяются «ссылками» на её первый экземпляр. Алгоритм прекрасно рассмотрен и описан . Каждая такая ссылка имеет два значения: смещение и длина.

Давайте рассмотрим пример:

Original text: «ServerGrove, the PHP hosting company, provides hosting solutions for PHP projects» (81 bytes)
LZ77: «ServerGrove, the PHP hosting company, p<3,32>ides<9,26>solutions for<5,52><3,35>jects» (73 bytes, assuming that each reference is 3 bytes)

Как вы могли заметить, слова «hosting» и «PHP» повторяются, поэтому во второй раз, когда подстрока найдена, она будет заменена ссылкой. Есть и другие совпадения, такие как «er», но т.к. это незначительно (в данном случае - «er» отсутствует в других словах) , остается оригинальный текст.

Кодирование Хаффмана
Кодирование Хаффмана является методом кодирования с переменной длиной, которая назначает более короткие коды к более частым «символам». Проблема с переменной длиной кода, как правило в том, что нам нужен способ узнать, когда код закончился и начался новый, чтобы расшифровать его.

Кодирование Хаффмана решает эту проблему, создав код префикса, где ни одно кодовое слово не является префиксом другого. Это может быть более понятно на примере:

>Original text: «ServerGrove»
ASCII codification: «01010011 01100101 01110010 01110110 01100101 01110010 01000111 01110010 01101111 01110110 01100101» (88 bits)

ASCII представляет собой систему кодировки символов с фиксированной длиной, так что буква «е», которая повторяется три раза, а также является наиболее часто встречаемой буквой в английском языке, имеет такой же размер как буква «G», которая появляется только один раз. Используя эту статистическую информацию, Хаффман может создать наиболее оптимизированную систему
Huffman: «1110 00 01 10 00 01 1111 01 110 10 00» (27 bits)

Метод Хаффмана позволяет нам получить более короткие коды для «e», «r» и «v», в то время как «S» и «G» получаются более длинными. Объяснения, как использовать метод Хаффмана, выходят за рамки этого поста, но если вы заинтересовались, я рекомендую вам ознакомиться с отличным видео на Computerphile (или статьей на Хабре) .

DEFLATE как алгоритм, который используется в GZIP сжатии, является комбинацией обоих этих алгоритмов.

Является ли GZIP лучшим метод сжатия?
Ответ - нет. Есть другие методы, которые дают более высокие показатели сжатия, но существует несколько хороших причин использовать этот.

Во-первых, даже при том что GZIP не самый лучший метод сжатия, он обеспечивает хороший компромисс между скоростью и степенью сжатия. Сжатие и распаковка у GZIP происходят быстро и степень сжатия на высоком уровне.
Во-вторых, нелегко внедрить новый глобальный метод сжатия данных, который смогут использовать все. Браузерам потребуется обновление, что на сегодняшний день гораздо проще за счёт автообновления. Как бы то ни было, браузеры - не единственная проблема. Chromium пытался добавить поддержку BZIP2, более лучшего метода основанного на преобразовании Барроуза-Уилера, но от него пришлось отказаться, т.к. некоторые промежуточные прокси-серверы искажали данные, т.к. не могли распознать заголовки bzip2 и пытались обработать gzip контент. Баг-репорт доступен .

GZIP + HTTP
Процесс получения сжатого контента между клиентом (браузером) и сервером достаточно прост. Если у браузера есть поддержка GZIP/DEFLATE, он даёт серверу понять это благодаря заголовку “Accept-Encoding”. Тогда, сервер может выбрать - отправлять содержимое в сжатом или оригинальном виде.

Реализация
Спецификация DEFLATE обеспечивает некоторую свободу разработчикам реализовать алгоритм с использованием различных подходов, пока полученный поток совместим со спецификацией.
GNU GZIP
Реализация GNU является наиболее распространенной и была разработана, чтобы стать заменой для утилиты архивации, свободной от запатентованных алгоритмов. Чтобы сжать файл с помощью утилиты GNU GZIP:
$ gzip -c file.txt > file.txt.gz

Существует 9 уровней сжатия, от «1» (самого быстрого с наименьшим коэффициентом сжатия) до «9» (самого медленного с лучшей степенью сжатия). По умолчанию, используется «6». Если вам необходимо максимальное сжатие за счёт использования большего объёма памяти и времени, используйте флаг "-9" (или "-best"):
$ gzip -9 -c file.txt > file.txt.gz
7-zip
7-zip реализуется алгоритм DELFATE иначе и обычно архивирует с бо льшим коэффициентом сжатия. Чтобы максимально сжать файл:
7z a -mx9 file.txt.gz file.txt

7-zip так же доступен для Windows и обеспечивает реализацию для других методов сжатия, таких как 7z, xz, bzip2, zip и прочих.
Zopfli
Zopfli идеально подходит для одноразового сжатия, например в ситуациях, когда файл единажды сжимается и многоразово используется. Он в 100 раз медленнее, но сжатие на 5% лучше, чем у других. Хабрапост .
Включение GZIP
Apache
Модуль mod_deflate обеспечивает поддержку GZIP, так что ответ сервера сжимается на лету до его передачи клиенту через сеть. Чтобы включить сжатие текстовых файлов, необходимо дополнить.htaccess строками:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

Существует несколько известных багов в некоторых версиях браузеров, поэтому рекомендуется* также добавить:

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0 no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
*это решение на текущий момент уже потеряло актуальность, как и вышеуказанные браузеры, поэтому данную информацию можно воспринимать в ознакомительных целях

Кроме того, можно использовать предварительно сжатые файлы вместо того, чтобы сжимать их каждый раз. Это особенно удобно для файлов, которые не меняются при каждом запросе, например CSS и JavaScript, которые могут быть сжаты с использованием медленных алгоритмов. Для этого:

RewriteEngine On
AddEncoding gzip .gz
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz

Это даёт Apache понять, что файлы с расширением.gz должны предоставляться сжатыми (линия 2), нужно проверить доступность принятия gzip браузером (линия 3), и если сжатый файл существует (линия 4), мы добавляет.gz для запрашиваемого файла.
Nginx
Модуль ngx_http_gzip_module позволяет сжимать файлы с помощью GZIP на лету, в то время как ngx_http_gzip_static_module позволяет отправлять предварительно сжатые файлы с “.gz” расширением вместо обычных.
Пример конфигурации выглядит следующим образом:
gzip on;
gzip_min_length 1000;
gzip_types text/plain application/xml;
GZIP + PHP
Хотя обычно сжимать данные используя PHP не рекомендуется, так как это довольно медленно, сделать это можно, используя модуль zlib . Например, используем максимальное сжатие на библиотеке jQuery.min:

$originalFile = __DIR__ . "/jquery-1.11.0.min.js"; $gzipFile = __DIR__ . "/jquery-1.11.0.min.js.gz"; $originalData = file_get_contents($originalFile); $gzipData = gzencode($originalData, 9); file_put_contents($gzipFile, $gzipData); var_dump(filesize($originalFile)); // int(96380) var_dump(filesize($gzipFile)); // int(33305)

Вместо вывода (примечание переводчика)
Несмотря на то, как чесались руки добавить в статью автора собственные пояснения алгоритмов, статистику и результаты тестов сравнения, перевод осуществлён практически без вмешательств со стороны переводчика. Перевод статьи осуществлён с разрешения автора и портала ServerGrove. Brainsburn

Сравнение архиваторов в Linux

Долгое время я хотел провести сравнительный тест популярных архиваторов, которые доступны в Linux и вот, наконец, появилось свободное время, чтобы сделать это. Я не стал испытывать экзотические или устаревшие архиваторы, в эксперименте приняли участие 7z , xz , zip , bzip2 , gzip и даже была скачана триальная версия архиватора rar . Все архиваторы тестировались с тремя различными настройками сжатия - быстрейшее, среднее (дефолтное) и наилучшее сжатие. Сразу скажу - я не стал экспериментировать с дополнительными опциями вроде размера словарей, - все это я оставил по умолчанию, в ином случае сравнение архиваторов растянулось бы в несколько раз и стало бы менее понятным. Тем более, различные ухищрения с опциями сжатия не всегда приводят к ожидаемым результатом, разработчики вполне хорошо знают свои детища, поэтому чтобы достичь максимального сжатия данных в 7z , достаточно использовать опцию -mx=9 и не парить себе мозги:)

Сейчас передо мной открыто несколько толстых файлов с текстом, из которых мне нужно собрать статью, не забыв ничего нужного и выкинув лишний хлам. Это - самое сложное:) Я постараюсь представить все это в более-менее читаемом виде. Поехали!

Тестируемые архиваторы и распаковщики

  • Gzip 1.4
  • Bzip2 1.0.5
  • RAR 3.93
  • ZIP 3.0
  • unzip 6.0
  • tar 1.22 (в этой версии появилась поддержка xz-utils)
  • xz-utils 4.999
  • p7zip 9.04
  • Чем замерялось время выполнения
    Утилитой time. Эта утилита может показывать реальное число секунд, затраченных процессором на выполнение какой-либо задачи. Это очень важно для тестирования архиваторов. Например, если я решу сжать исходники ядра Linux архиватором ZIP и буду засекать время выполнения задачи обычным секундомером, то обнаружу, что в первый раз сжатие заняло около 2-х минут, второй раз - примерно 30 секунд, в третий раз - 10 секунд. Думаю, не стоит говорить, почему так происходит. Утилита time позволяет избежать подобных проблем и во всех случаях выводит одинаковый результат - кол-во секунд, затраченных CPU на выполнение задачи (Total number of CPU-seconds that the process spent in user mode.) Грубо говоря, результаты тестирования не зависят от скорости чтения данных с жесткого диска.

    Какие типы файлов сжимались

  • Большая куча медиа файлов, которые по сути уже сжаты. Это всякие mp3, jpeg, pdf и avi.
  • Бинарные файлы
  • Образ CD-диска
  • Исходники ядра Linux
  • Несжатые документы, txt и doc файлы
  • Большое количество мелких файлов
  • В каком окружении проводились тесты
    32-битный ЦПУ, 4ГБ DDR2 ОЗУ. Дистрибутив Gentoo Linux, файловая система ext4fs. Все тесты проводились в консоли с выключенными иксами, остановленными ненужными демонами и вообще выключено было все, что можно, даже свет:) Т.е. компьютер использовался исключительно для тестирования архиваторов и не более.

    Что учитывалось в тестировании

  • Тип сжимаемых данных и кол-во файлов
  • Скорость архивирования
  • Размер полученных архивов
  • Скорость распаковки полученных архивов
  • Степень сжатия, задаваемая в настройках архиватора
  • Небольшой ликбез.
    LZMA - новый алгоритм компрессии (сжатия) данных, который используется для создания архивов в формате 7z. Особенности: высокий коэффициент сжатия, использование словарей различного размера, открытый исходный код. - утилита и алгоритм с открытым исходным кодом для сжатия данных. Следуя идеологии Unix, bzip2 выполняет только одну задачу - сжимает файл. Для архивации нескольких файлов или каталогов ее надо использовать вместе с утилитой TAR . Tar архивирует файлы в один, а bzip2 - сжимает. Поэтому и расширение у таких архивов - .tar.bz2
    Gzip - утилита и алгоритм для сжатия и декомпрессии данных. Так же как и bzip2, выполняет только одну задачу - сжимает или производит декомпрессию одного файла. Обладает высокой скоростью работы.
    Deflate - алгоритм сжатия данных.
    TAR - (tape archive, архив на магнитной ленте) - формат архива, утилита для работы с одноименными архивами. Tar не сжимает данные, он создает один файл из многих, который, обычно, затем архивируется с помощью алгоритма gzip или bzip2.
    RAR - Платный популярный формат сжатия данных и программа для работы с различными типами архивов. Автор - Евгений Рошал.
    Unrar - бесплатный распаковщик RAR архивов.
    ZIP - Стандартный, популярный формат сжатия данных.
    XZ - Формат сжатия данных, который использует алгоритм сжатия LZMA. Создан как замена lzma. XZ-utils - реализация формата XZ в Linux. Архиватор TAR, начиная с версии 1.22 позволяет создавать архивы в формате xz.
    7z - формат сжатия данных, использующий алгоритм сжатия LZMA.
    p7zip - реализация 7-Zip архиватора для Linux.
    7-Zip - файловый архиватор, который поддерживает множество алгоритмов сжатия. Автор - Игорь Павлов. Основной формат - 7z с использованием алгоритма LZMA.
    q7z - GUI к архиватору p7zip

    С какими опциями запускались архиваторы

    Создать RAR архив. Дефолтное сжатие. rar a -r archive.rar files
    Создать RAR архив. Быстрое сжатие rar a -r -m1 archive.rar files
    Создать RAR архив. Максимальное сжатие rar a -r -m5 archive.rar files
    Создать ZIP архив. Дефолтное сжатие zip -r archive.zip files
    Создать ZIP архив. Быстрое сжатие zip -r -1 archive.zip files
    Создать ZIP архив. Максимальное сжатие zip -r -9 archive.zip files
    Создать 7z архив. Дефолтное сжатие 7z a archive.7z files
    Создать 7z архив. Быстрое сжатие 7z a -mx=1 archive.7z files
    Создать 7z архив. Максимальное сжатие 7z a -mx=9 archive.7z files
    Создать bzip2 архив. Максимальное (дефолтное) сжатие tar cfj archive.tar.bz2 files
    Создать bzip2 архив. Среднее сжатие tar cf archive.tar files
    bzip2 -vc4 archive.tar > archive.tar.bz2
    Создать bzip2 архив. Быстрое сжатие tar cf archive.tar files
    bzip2 -vc1 archive.tar > archive.tar.bz2
    Создать gzip архив. Дефолтное сжатие tar cfz archive.tar.gz files
    Создать gzip архив. Максимальное сжатие tar cf archive.tar files
    gzip -vc9 archive.tar > archive.tar.gz
    Создать gzip архив. Быстрое сжатие tar cf archive.tar files
    gzip -vc1 archive.tar > archive.tar.gz
    Создать XZ архив. Дефолтное сжатие export XZ_OPT=""
    Создать XZ архив. Быстрое сжатие export XZ_OPT="-1"
    tar cfJ archive.tar.xz files
    Создать XZ архив. Максимальное сжатие export XZ_OPT="-9 --extreme"
    tar cfJ archive.tar.xz files

    Доп. инфо
    Для замера времени использовалась утилита time: % /usr/bin/time -f "%U" Bzip2 по умолчанию архивирует в режиме максимального сжатия (9), поэтому дефолтное сжатие было принято за наилучшее, а в качестве среднего использовалось сжатие 4 (1 - быстрейшее, 9 - наилучшее).
    В некоторых тестах я решил использовать ZIP, RAR и 7z вкупе с архиватором TAR. Результаты увидите:)
    Результаты у 7z и XZ заметно отличаются. Хотя 7z и использует LZMA, как и XZ, я тестировал их как отдельные архиваторы.
    Для создания архивов XZ TAR 1.21 использует lzma, а TAR 1.22 - XZ.
    Чтобы TAR автоматически определял тип архива, используйте ключик a : % tar xaf archive.tar.bz2 При создании архивов XZ в TAR, опции сжатия можно указать через переменную окружения XZ_OPT: % export XZ_OPT="-9 --extreme"

    Тест №1. Сжатие медиа файлов.

    Для 1-го теста я собрал большую кучу из файлов, которые по сути уже сжаты. Это mp3, wav, jpg, png, pdf, avi. Все они сжимаются практически одинаково плохо:)
    В итоге у меня получился каталог, который набит всякой вкуснятиной:
  • Один музыкальный альбом в MP3 (60MB)
  • Один музыкальный файл WAV (60MB)
  • Два обычных видео файла (230MB)
  • Пять DJVU и PDF файлов (130MB)
  • Много (20) JPEG и PNG файлов (50MB)
  • Итого 537MB.



    На максимальном сжатии лучшие результаты у RAR - он сжал данные неожиданно лучше и быстрее других. Хотя 1029 секунд врятли захочется потратить ради экономии 40МБ. Gzip и ZIP сжали не так хорошо, зато в 10 раз быстрее чем RAR и XZ.
    На среднем сжатии RAR побеждает в номинации "медленно, но хорошо", а Gzip и ZIP - "не так хорошо, зато очень быстро". У Bzip2 такой середнячковый результат - вроде сжал довольно быстро, но лишь слегка лучше, чем Gzip.
    В быстром режиме размер архивов получился почти одинаковый, а вот время - не совсем. Здесь явно лидирует обычный ZIP, который сжал данные так же хорошо, как gzip и rar, но сделал это намного быстрее. В общем, вывод таков: если вы сжимаете медиа файлы, т.е. файлы, которые уже сжаты и у вас мало времени - используйте Gzip или Zip. Если у вас достаточно времени - Rar или 7z/xz.
    Bzip2, кстати, распаковывал свои архивы очень долго по сравнению с другими, а у RAR-a тут наверно лучший результат по отношению скорость/качество.

    Тест №2. Сжатие бинарных файлов

    Во 2-м тесте будут сжиматься бинарные файлы. Я просто скопировал самые увесистые из моего каталога /usr/bin/.
    Имеется: 100 бинарных файлов сумарным размером 167MB

    На максимальном сжатии 7z показал себя намного лучше, чем XZ - сжал быстрее и лучше. Самым быстрым оказался Zip - быстрее, чем Gzip при одинаковых размерах архивов.
    В среднем режиме сжатия все так же, но использовать Bzip2 нет смысла - он лишь слегка лучше сжимает чем Gzip/ZIP, но заметно медленнее.
    В быстром режиме 7z снова оказался лучше XZ. (Почему? Они же оба используют LZMA!)
    Кстати, у 7z в быстром режиме получился архив 56МБ за 35сек, а у Bzip2 в максимальном (дефолтном) режиме сжатия архив вышел 64МБ за 65сек. Т.е. 7z обскакал Bzip2 по всем статьям:)

    Тест №3. Сжатие образа CD-диска

    Отдельно решил, зачем-то, сжать образ CD-диска. Его можно смело отнести к содержанию теста №1, но я решил вынести это отдельно, на всякий случай:)
    Имеется: 1 образ CD-диска размером 614МБ

    В режиме наилучшего сжатия 7z сделал свою работу слегка хуже, но быстрее чем XZ, а вот RAR оказался самым медлительным. Насчет Bzip2 у меня уже сложилось впечатление - он вроде сжимает намного быстрее чем rar/7z/xz, но намного медленнее чем gzip/zip, при этом размер архива получается не намного лучше, чем у gzip/zip. Если я хочу сжать что-то хорошо и у меня есть на это время, скорее всего я выберу 7z. Если уж сжать файлы надо как можно быстрее, я выберу Gzip или ZIP. У Gzip, кстати, есть большой бонус перед ZIP - он сохраняет всю информацию о владельцах файлов и правах, чего не делает ZIP (как и 7z, кстати, но об этом позже).
    На средних настройках размер архивов (как и время) получился практически идентичным предыдущим.
    А вот в режиме быстрого сжатия RAR приятно удивил - сжал быстрее и лучше всех остальных. Bzip2 в быстром режиме сжал даже хуже, чем Gzip/ZIP. На распаковку архива Bzip2 потратил куда больше времени, чем все остальные архиваторы. А XZ распаковывал архив заметно быстрее чем 7z.

    Тест №4. Сжатие исходников ядра Linux

    Один из стандартных способов проверить качество алгоритма сжатия данных - исходники ядра.
    Имеется:
    Исходники linux-2.6.33. Это около 31 тысячи файлов суммарным объемом 432МБ.
    Так как файлов много, я использовал опцию solid (непрерывный архив) у RAR. 7z создает solid-архив по умолчанию. Так же было решено использовать tar+rar и tar+zip. Результаты, кстати, неожиданные:)

    Режим максимального сжатия: Хорошие результаты у RAR. Правда у варианта TAR+RAR архивы весят меньше, чем у RAR с опцией "solid" =)
    Среднее сжатие: Bzip2 внезапно выступил лучше RAR, сильно обогнав его по скорости и сжав почти так же хорошо.
    Режим быстрого сжатия: Тут Bzip2 снова сжал лучше чем RAR, правда у него (Bzip2) это получилось медленнее всех. Лучшие результаты на мой взгляд у 7z.
    Распаковка архивов: Архивы сжатые максимально, RAR распаковывал очень долго по сравнению с другими. 7z/XZ распаковали в 10 раз быстрее чем RAR, а Gzip - просто молниеносно.

    Тест №5. Несжатые документы

    Текстовые документы, такие как TXT, ODF, DOC. Предполагаю, что результаты будут аналоничны тесту №4:)
    Имеется:
    В основном файлы DOC. На этом компьютере я документов не храню, поэтому их пришлось качать из сети, а ODF найти труднее. Также несколько увесистых TXT файлов-словарей, RTF и HTML файлы. В сумме 66МБ.


    Режим наилучшего сжатия: Лучше всех получилось у RAR. Bzip2 как всегда где-то посередине.
    Режим среднего сжатия: Лучше всего сжали файлы 7z/XZ, но у них это заняло много времени. Bzip2 сжал намного быстрее и почти так же хорошо, как RAR
    Режим быстрейшего сжатия: Первый раз, когда Bzip2 сжал лучше (хотя не быстрее) чем 7z/XZ.
    Распаковка архивов: Архив, сжатый в максимальном режиме, RAR распаковывал очень долго. Вообще это уже не в первый раз. Ну и Bzip2 как всегда не самый быстрый по распаковке архивов.

    Тест №6. Огромное кол-во маленьких текстовых файлов - Gentoo Portage

    Имеется: 116 тысяч файлов общим объемом 600МБ.


    Режим максимальной компрессии: Самый маленький архив получился у 7z, да и по времени он справился в 2 раза быстрее чем XZ. У Bzip2 наверно лучший результат в плане скорость/сжатие
    Режим среднего сжатия: у Bzip2, на мой взгляд, результат лучше чем у RAR. Лучше всего сжал по-прежнему 7z.
    Быстрое сжатие: Лучший результат у XZ. 7z сжал на 6МБ лучше чем XZ, но и на 21сек медленнее. Распаковка архивов: я считаю, что лучше всех тут справился XZ. RAR как всегда медленно распаковывает архивы, сжатые максимально.

    Итак, подведем итоги . Кто же является лучшим архиватором на свете?
    Ответа на этот вопрос я не дам:Р Скажу одно - если вам важна скорость сжатия - используйте Gzip, если вам нужно максимально сжать файлы - используйте XZ или 7z. Лично я бы выбрал 7z, т.к. в основном он слегка быстрее архивирует чем XZ. Но, не забывайте, что такие архиваторы как RAR, ZIP и 7z не сохраняют полную информацию о владельцах файлов, правах и т.д. RAR-у можно указать соответствующие настройки при создании и распаковке архива, но легче просто создать TAR архив и его уже сжать. В мануале к 7z прямо сказано - для бэкапа системы сначала создайте архив TAR, а затем сожмите его в 7z.
    Весело было наблюдать, как связка TAR+RAR частенько работает лучше чем RAR в одиночку:) Вообще TAR создает один файл (архив) из многих ровно настолько быстро, насколько это позволяет ваш жесткий диск, при этом почти не напрягая процессор.

    Gzip или ZIP? Gzip! Результаты те же, но Gzip сохраняет всю дополнительную информацию о файлах.
    XZ или 7z ? Если вам не нужно сохранять информацию о владельцах файлов, используйте 7z. Если нужно - создавайте XZ архивы через TAR.
    RAR? . Если честно, я ожидал от него худших результатов, но RAR показал себя в принципе неплохо. Разве что он платный;)
    Bzip2? . Этот архиватор вызвал у меня двойственные чувства. С одной стороны он сжимает быстрее чем XZ/7z/RAR, но с другой - он лишь ненамного лучше сжимает чем Gzip/ZIP и делает это заметно медленнее последних. В одних тестах он показал себя хорошо, в других он сжимал медленнее и хуже, чем 7z на самых быстрых настройках. Именно из-за этой его непостоянности лично я откажусь от его использования в пользу 7z/XZ.

    Но в конечном счете решать Вам. Удачи!

    Возможно, эти материалы Вас заинтересуют.

    Интернет