Урок №5. Архивация данных. Использование программ-архиваторов.
Для того чтобы сэкономить место на внешних носителях (жёстких дисках, «флэшках») или ускорить передачу данных по компьютерным сетям, можно сжать данные — уменьшить их информационный объём, сократить размер файла.
Как вы уже знаете, рисунки часто хранятся в сжатом виде. Кроме того, сжатие почти всегда используется при хранении и передаче звука и видео — упаковку и распаковку этих данных выполняют специальные программы-кодеки.
Покажем, как можно сжать данные, на простом примере. Есть файл, в котором в 8-битной кодировке записаны сначала 100 русских букв А, а потом — 100 букв Б (рис. 2.39).

Каждая буква на рис. 2.39 занимает 8 бит. Определите информационный объём файла в байтах.
Теперь запишем те же самые данные иначе: сначала количество повторений первого символа, а затем — сам первый символ, потом так же для второго символа (рис. 2.40).

Каждая ячейка на рис. 2.40 занимает 8 бит. Определите информационный объём файла в байтах.
Объём файла уменьшился, это значит, что мы сжали данные.
Коэффициент сжатия — это отношение размера исходного файла I0 к размеру сжатого файла 1СЖ:
Rсж =I0/Iсж
Определите коэффициент сжатия файла в рассмотренном выше примере.
Почему же этот файл удалось так удачно сжать? Всё дело в том, что в нём были длинные цепочки повторяющихся символов, и мы применили алгоритм, который очень удачно их сжимает. Этот алгоритм называется кодированием цепочек одинаковых символов (по-английски — RLE: Run Length Encoding).
В файле записаны 100 различных символов. Определите коэффициент сжатия файла с помощью алгоритма RLE. Что означает полученное число?
Данные можно сжать, если в них есть какие-то закономерности (избыточность), например одинаковые символы, стоящие рядом, или одинаковые цепочки символов («слова»). Поэтому хорошо сжимаются данные, в которых таких закономерностей много, например тексты и рисунки. Хуже всего сжимаются случайные данные, в которых нет ничего закономерного.
Программы для сжатия данных выявляют избыточность данных и устраняют её, поэтому сжимать второй раз уже сжатые данные чаще всего бесполезно.
Давайте вернёмся к примеру сжатия, приведённому в начале параграфа. Можем ли мы из сжатого файла (рис. 2.40) восстановить исходный, несжатый (рис. 2.39)? В данном случае — да: читаем из файла число повторений первого символа, затем сам символ, повторяем его нужное количество раз и т. д.
Такое сжатие называют сжатием без потерь. Оно используется для упаковки текстов, программ и других данных, которые ни в коем случае нельзя искажать.
Сжатие без потерь — это такое уменьшение объёма данных, при котором можно восстановить их исходный вид без искажений.
Для каких данных, на ваш взгляд, можно использовать только сжатие без потерь (ни один байт не должен быть искажён):
а) текст; г) звук;
б) рисунки; д) видео?
в) программы;
В некоторых случаях небольшие неточности в передаче данных допустимы. Например, небольшие помехи в телефонном разговоре или в радиопередаче, которая транслируется через Интернет, не мешают пониманию речи. Некоторое дополнительное размытие уже и без этого размытого изображения на фотографии непрофессионал даже не заметит. Ещё в большей степени это относится к видеофильмам, где каждый кадр виден очень короткое время.
Поэтому иногда можно пожертвовать высоким качеством изображения или звука ради того, чтобы значительно сократить объём данных. В этих случаях используется сжатие с потерями.
Сжатие с потерями — это такое уменьшение объёма закодированных данных, при которых распакованный файл может отличаться от оригинала.
Самые известные примеры сжатия с потерями — это алгоритмы JPEG (для изображений), MP3 (для упаковки звука) и все алгоритмы упаковки видеофильмов. Эти алгоритмы используют особенности человеческого зрения и слуха, удаляя данные, которые меньше всего влияют на наше восприятие.
Архивация — это создание файла-архива, который объединяет группу файлов. Архивацию используют для того, чтобы создать резервную копию данных (на случай выхода из строя основного устройства внешней памяти) или для передачи файлов по сети.
Простейшие программы-архиваторы просто объединяют множество файлов в один архив. Современные архиваторы выполняют ещё и сжатие данных для уменьшения объёма архива. В операционной системе Windows наиболее популярен архиватор
WinRAR, в Linux — Ark и File Roller; в Mac OS X применяют Stuffit Expander и Better Zip.
Свободно распространяемый архиватор 7-Zip можно скачать бесплатно вместе с исходным текстом программы.
Архиваторы могут упаковать данные в архив с паролем (зашифровать). Тогда для того, чтобы восстановить файлы из архива, потребуется ввести тот же самый пароль (ключ для расшифровки).
Пароли в архивах не хранятся. Перед упаковкой архиватор вычисляет для каждого файла контрольную сумму — так называется число, которое зависит от всех данных и вычисляется по достаточно сложному алгоритму, и эти контрольные суммы записываются в архив. При распаковке программа использует пароль, который ввёл пользователь, и сравнивает контрольную сумму полученного файла с той, которая записана в архиве: если они различаются, то пароль был введён неверно.
Для того чтобы пароль было сложно подобрать, он должен быть достаточно длинный (не менее 6 знаков) и содержать разные символы (а не только цифры). Пример хорошего пароля — rH3cyJfl98H.
Придумайте примеры простых паролей, которые можно быстро набрать на клавиатуре, но и поэтому легко подобрать.
Придумайте примеры паролей, которые сложно подобрать.
Многие программы-архиваторы могут создавать самораспаковывающиеся архивы (SFX-архивы). Так называют файлы, которые содержат не только данные, но и программу для их распаковки. Чтобы распаковать такой архив, не нужно устанавливать архиватор — достаточно просто запустить архив-программу на выполнение.
Самораспаковывающиеся архивы получаются немного больше обычных, потому что содержат программу распаковки (её размер — около 15 Кбайт). Кроме того, их могут заражать компьютерные вирусы. Поэтому для обмена данными лучше использовать обычные архивы.
Международным стандартом архивов считается формат ZIP (файлы с расширением zip). В нашей стране широко используются также RAR-архивы (файлы с расширением rar) и архивы в формате 7-Zip (файлы с расширением 7z).