Технологии архивирования

 

 

 

Архивирование

 

Архивирование (архивация) — создание архива с использованием архиватора.

Архивкомпьютерные данные, хранящиеся в сжатом виде на внешних носителях  для удобства хранения или переноса, с возможностью их дальнейшего использования.

Архиватор — программа, осуществляющая объединение нескольких файлов в один архив или серию архивов, для удобства хранения или переноса.

Программ-архиваторов существует  множество. Самые популярные: WinZip, WinRar, 7Zip.

 

 

 

Архивы

 

Архив — файл, состоящий из одного или нескольких, иногда сжатых (без потерь), файлов и метаданных (данных, описывающих архивные данные).

Архив - результат работы программы-архиватора.

Имея архив, можно получить исходный файл с помощью соответствующей программы распаковки (иногда объединённой с программой для создания архивов).

Многотомный архив - архив, состоящий  из нескольких файлов для облегчения хранения и переноса большого количества данных при ограничениях на размер одной части (сообщения e-mail и т.д.).

Самораспаковывающийся архив (self-extracting,  SFX) - архив с присоединённым исполняемым кодом, который при выполнении распаковывает архив. Код может быть полнофункциональной программой распаковки этого формата архивов.

Шифрованный архив - архив, данные в котором зашифрованы каким-либо способом. При использовании универсальных архиваторов обычно используется просто шифрование с паролем.

Метаданные архива:

  • Имена файлов

  • Идентификаторы владельцев, групп, и т. п. файлов, и их прав

  • Размеры файлов

  • Даты изменения, создания файлов

  • Контрольные суммы файлов для проверки правильности распаковки

  • Размер и контрольные суммы архива для восстановления данных

  • Избыточные данные для восстановления данных при повреждении

  • Цифровая подпись создателя архива.

Расширения имен архивных файлов популярных форматов: ARJ, ZIP, RAR, CAB, LHA, ICE, PAK, HA, ZOO, AIN, YAC, UC2, HAP, PAH, JAR, BOA, ACB, 777, X1, UFA, IMP, BIX, ARI, SQZ, AKT.

 

 

 

 

ZIP - формат сжатия данных

 

ZIP — популярный формат архивов и метод архивации файлов.

Файл в формате ZIP имеет расширение .zip и хранит в сжатом или несжатом виде один или несколько файлов, которые можно из него извлечь путём распаковки с помощью специальной программы.

ZIP разработан Филом Кацем (Phil Katz) для использования в программе PKZIP.

Термин «ZIP» предложен другом Каца, означает «скорость». 

ZIP - стандарт для многих приложений, резервного копирования и обмена данными.

Файл формата .docx (внутренний формат MS Word 2007/2010) представляет собой ZIP-архив с текстовыми, графическими и XML-файлами).

Формат ZIP поддерживается множеством архиваторов (WinZip, WinRAR, 7Zip и др).

Наибольшее сжатие в формате ZIP дает архиватор kzip

 

 

 

 

 

 

Основные характеристики архиваторов

 

1

Степень сжатия данных

Зависит от исходных данных и методов сжатия.

Хорошо сжимаются предварительно несжатые данные: исполняемые файлы (EXE), тексты (TXT, DOC), базы данных (DBF), простые несжатые изображения (BMP).

Ограниченно сжимаются несжатый звук (WAV), сложные несжатые изображения (BMP).

Плохо сжимаются уже сжатые данные: архивы, сжатые документы (PDF), сжатая графика и видео (JPG, GIF, AVI, MPG), сжатый звук (MP3).

2

Скорость сжатия данных

Обычно обратно пропорциональная степени сжатия: чем меньше степень сжатия, тем больше скорость, и наоборот.

 

 

 

 

Дополнительные характеристики архиваторов:

 

3

Создание самораспаковывающихся (SFX) архивов

4

Изменение содержимого архива

5

Шифрование

6

Разбивка архива на части

7

Требования к оперативной памяти

8

Сжатие директорий

9

Консольная версия

10

Цена или бесплатность

 

 

 

 

Популярные архиваторы

 

WinZip
 

Самый популярный в мире архиватор для Windows (создан в 1990г.).  Обладает очень высокой скоростью упаковки и распаковки.

20.10.2015 Компания WinZip Computing (подразделение Corel Corporation) анонсировала  WinZip 20.5 (http://www.winzip.com/win/ru/index.htm)

WinRar

Архиватор (разработчик: Евгений Рошал) с хорошей степенью сжатия, большим количеством функций и настроек, поддерживает большое количество архивных форматов.

04.02.2016 WinRAR v.5.3 (http://www.win-rar.ru/download/)

7Zip

Бесплатный архиватор с открытым кодом (лицензия LGPL), создан в 2001 году Игорем Павловым. Родной формат 7z с LZMA компрессией (очень эффективный по степени сжатия, но архивируется дольше), поддерживает большое количество архивных форматов.

17.05.2016 7-Zip 16 (Скачать актуальную версию можно по ссылке).

 

 

 

Евгений Рошал

 

 

Евгений Лазаревич Рошал (родился 10 марта 1972, Челябинск) — российский программист, автор файлового менеджера FAR Manager, формата сжатия RAR, популярного архиватора WinRAR.

Первую публичную версию RAR 1.3 выпустил в 21 год.

Евгений Рошал:

  • Программированием я начал заниматься дома в 13 лет на МК-61, потом в школе на Агатах. ПК в школах тогда были редкостью. Потом занимался на самодельной Радио-86РК. А дальше на чем придется.

  • Идея создать RAR возникла в 91'ом. RAR стал популярен в 1993, когда Андреем Спасибожко помог двинуть его в массы.

  • Тогда же возникла идея solid-архивирования (solid-компрессия значительно увеличивает коэффициент сжатия за счет того, что все пакуемые файлы при компрессии воспринимаются архиватором как один большой файл).

Евгений Рошал: Сразу отвечу на возможные вопросы по поводу изменения копирайта: просто у меня нет времени заниматься и разработкой, и вопросами, связанными с защитой копирайта. Разработкой я продолжаю заниматься как и раньше, так что для пользователей RAR в этом плане ничего не меняется.

 

 

 

 

7-Zip

 

7-Zip это программное обеспечение с открытым кодом и может быть использовано на любом компьютере, включая компьютеры коммерческих организаций. 

7-Zip 9.20:

  • Поддерживает Windows, Mac OS и Linux (DOS, Solaris, BeOS и Amiga OS и др.).

  • Поддерживает распаковку сжатых файлов в любых распространенных форматах.

  • Способен распаковывать некоторые файлы EXE, FLV и SWF,

  • Обеспечивает полную совместимость с образами дисков в форматах NTFS, FAT и VHD.

  • Имеет сильное шифрование в форматах 7z и ZIP

  • Возможность самораспаковки для формата 7z

  • Мощный менеджер файлов

  • Переведен на 74 языка (в том числе хинди, гуджарати, санскрит и уйгурский ).

 

Обычно, 7-Zip сжимает (в формате 7z) на 30-70% лучше, чем в формате zip.

Также 7-Zip сжимает в формат zip на 2-10% лучше чем большинство других архиваторов.

17.05.2016 7-Zip 16 (Скачать актуальную версию можно по ссылке).

Автор архиватора 7-Zip Игорь Павлов анонсировал выпуск новой его версии v16? в ней исправлено несколько серьезных уязвимостей, обнаруженных ранее группой исследователей Cisco Talos. Скачать актуальную версию 7-Zip можно по ссылке).

 

 

 

 

A Few Questions for Igor Pavlov

 

 

A Few Questions for Igor Pavlov 

April 30, 2003

Igor Pavlov is the man behind 7-Zip, a compressor that features excellent performance by using the latest lossless compression algorithms. Igor was nice enough to answer a few questions about 7-Zip and his work.

 Mark Nelson: There are plenty of archiving programs out there. What made you decide to create another one? 

Igor Pavlov: I created my first compressing program when there were not so many archivers. And it was really interesting for me to create my own program that was better than existing programs. First time it seemed like magic, that files become smaller. And when you create compression programs, you always can fairly judge your work with objective marks: compression ratio and decompression/compression speed. So you always know whether your algorithm is good.

MN: Do you feel like 7-Zip is at the top of the heap when it comes to compressed file size? If not, who is your most serious competition? 

Igor Pavlov: We must differentiate between popularity and performance. There are some archivers with good performance, but they are not popular. I think LZMA compression algorithm (which is main method in 7-Zip) has pretty good results among all archivers, if we consider overall ranking by decompression speed / compression ratio. The main competitor for 7-Zip now is WinRAR.

MN: What formats are you evaluating to include in future releases? 

Igor Pavlov: I plan to add new methods for multimedia compressing to 7-Zip.

MN: Are you getting any help from other programmers? Any financial help to speak of? 

Igor Pavlov: 7-Zip uses some open source libraries from other programmers. For example, BZip2 and PPMd.

MN: Have you ever considered a commercial product based on 7-Zip? 

Igor Pavlov: Some time ago 7-Zip was a shareware program. But now it is free software with open source. There are some commercial products that use 7-Zip's code, but I plan to keep 7-Zip free and open-source.
 

 

 

 

Технологии архивирования

 

Технологии архивирования основаны на поиске в файле "избыточной" информации и последующем ее кодировании с целью получения минимального объема.

Разработано большое количество разнообразных методов сжатия данных. Каждый метод обычно ориентирован на один вид или группу реальных данных. Современные архиваторы, как правило, одновременно используют несколько методов одновременно.

Основные методы:

Кодирование длин серий (RLE - сокращение от run-length encoding - кодирование длин серий)

Очень простой метод. Последовательная серия одинаковых элементов данных заменяется на два символа: элемент и число его повторений. Широко используется как дополнительный, так и  промежуточный метод. В качестве самостоятельного метода применяется, например, в графическом формате BMP.

 

Например:

  • Внутри файла находятся последовательности байтов, которые часто повторяются. Вместо того, чтобы хранить каждый байт, фиксируется количество повторяемых символов и их позиция.

  • Пусть файл занимает 15 байт и состоит из символов: B B B B B L L L L L

  • Архиватор может представить этот файл в следующем виде: 01 05 В 06 05 L 11 05 F

  • Это значит: с первой позиции пять раз повторяется символ "B", с позиции 6 пять раз повторяется символ "L" и с позиции 11 пять раз повторяется символ "A".

  • Для хранения файла в такой форме потребуется всего 9 байт, что на 6 байт меньше исходного.

 

Словарный метод (LZ - сокращение от Lempel Ziv - имена авторов)

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

Основным параметром словарного метода является размер словаря. Чем больше словарь, тем больше эффективность. Однако для неоднородных данных чрезмерно большой размер может быть вреден, так как при резком изменении типа данных словарь будет заполнен неактуальными словами. Для эффективной работы данного метода при сжатии требуется дополнительная память. Приблизительно на порядок больше, чем нужно для исходных данных словаря. Существенным преимуществом словарного метода является простая и быстрая процедура распаковки. Дополнительная память при этом не требуется. Такая особенность особенно важна, если необходим оперативный доступ к данным.

Энтропийный метод (Huffman - кодирование Хаффмена, Arithmetic coding - арифметическое кодирование)

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

Широко используется как дополнительный метод. В качестве самостоятельного метода применяется, например, в графическом формате JPG.

Метод контекстного моделирования (CM - сокращение от context modeling - контекстное моделирование)

В этом методе строится модель исходных данных. При сжатии очередного элемента данных эта модель выдает свое предсказание или вероятность. Согласно этой вероятности, элемент данных кодируется энтропийным методом. Чем точнее модель будет соответствовать исходным данным, тем точнее она будет выдавать предсказания, и тем короче будут кодироваться элементы данных.

Для построения эффективной модели требуется много памяти. При распаковке приходится строить точно такую же модель. Поэтому скорость и требования к объему оперативной памяти для упаковки и распаковки почти одинаковы. В данный момент методы контекстного моделирования позволяют получить наилучшую степень сжатия, но отличаются чрезвычайно низкой скоростью.

PPM (PPM - Prediction by Partial Matching - предсказание по частичному совпадению)

Это особый подвид контекстного моделирования. Предсказание выполняется на основании определенного количества предыдущих элементов данных. Основным параметром является порядок модели, который задает это количество элементов. Чем больше порядок модели, тем выше степень сжатия, но требуется больше оперативной памяти для хранения данных модели. Если оперативной памяти недостаточно, то такая модель с большим порядком показывает низкие результаты. Метод PPM особенно эффективен для сжатия текстовых данных.

Предварительные преобразования или фильтрация

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

Метод сортировки блока данных (BWT - сокращение от Burrows Wheeler Transform - по имени авторов)

Это особый вид или группа преобразований, в основе которых лежит сортировка. Такому преобразованию можно подвергать почти любые данные. Сортировка производится над блоками, поэтому данные предварительно разбиваются на части. Основным параметром является размер блока, который подвергается сортировке. Для распаковки данных необходимо проделать почти те же действия, что и при упаковке. Поэтому скорость и требования к оперативной памяти почти одинаковы. Архиваторы, которые используют данный метод, обычно показывают высокую скорость и степень сжатия для текстовых данных.

Непрерывные блоки или непрерывный режим (Solid mode - непрерывный режим)

Во многих методах сжатия начальный участок данных или файла кодируется плохо. Например, в словарном методе словарь пуст. В методе контекстного моделирования модель не построена. Когда количество файлов большое, а их размер маленький, общая степень сжатия значительно ухудшается за счет этих начальных участков. Чтобы этого не происходило при переходе на следующий файл, используется информация, полученная исходя из предыдущих файлов. Аналогичного эффекта можно добиться простым представлением исходных файлов в виде одного непрерывного файла.

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

Сегментирование

Во всех методах сжатия при изменении типа данных собственно сам переход кодируется очень плохо. Словарь становится не актуальным, модель настроена на другие данные. В этих случаях применяется сегментирование. Это предварительная разбивка на однородные части. Затем эти части кодируются по отдельности или группами.