В ос windows коэффициент сжатия определяется как

42. Сжатие информации. Назначение и основные программы архивации

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

Преобразование
сжатия обеспечивает получение сжатого
сообщения из исходного. Разжатие же
обеспечивает получение исходного
сообщения (или его приближения) из
сжатого.

Все
методы сжатия делятся на два основных
класса

  • без
    потерь
    ,

  • с
    потерями
    .

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

Коэффициент сжатия

Коэффициент
сжатия — основная характеристика
алгоритма сжатия, выражающая основное
прикладное качество. Она определяется
как отношение размера несжатых данных
к сжатым, то есть:

k = So/Sc,

где
k — коэффициент сжатия, So
— размер несжатых данных, а Sc
— размер сжатых. Таким образом, чем выше
коэффициент сжатия, тем алгоритм лучше.
Следует отметить:

  • если k = 1,
    то алгоритм не производит сжатия, то
    есть получает выходное сообщение
    размером, равным входному;

  • если k < 1,
    то алгоритм порождает при сжатии
    сообщение большего размера, нежели
    несжатое, то есть, совершает „вредную“
    работу.

Ситуация
с k < 1 вполне возможна при
сжатии. Невозможно получить алгоритм
сжатия без потерь, который при любых
данных образовывал бы на выходе данные
меньшей или равной длины. Обоснование
этого факта заключается в том, что
количество различных сообщений длиной
n Шаблон:Е:бит
составляет ровно 2n. Тогда
количество различных сообщений с длиной
меньшей или равной n (при наличии
хотя бы одного сообщения меньшей длины)
будет меньше 2n. Это значит,
что невозможно однозначно сопоставить
все исходные сообщения сжатым: либо
некоторые исходные сообщения не будут
иметь сжатого представления, либо
нескольким исходным сообщениям будет
соответствовать одно и то же сжатое, а
значит их нельзя отличить.

Коэффициент
сжатия может быть как постоянным
коэффициентом (некоторые алгоритмы
сжатия звука, изображения и т. п., например
А-закон,
μ-закон,
ADPCM),
так и переменным. Во втором случае он
может быть определён либо для какого
либо конкретного сообщения, либо оценён
по некоторым критериям:

  • среднее (обычно по
    некоторому тестовому набора данных);

  • максимальное (случай
    наилучшего сжатия);

  • минимальное (случай
    наихудшего сжатия);

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

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

Архивация
проводится в следующих случаях:

 Когда
необходимо создать резервные копии
наиболее ценных  файлов

 Когда
необходимо освободить место на диске

 Когда
необходимо передать файлы по E-mail

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

В
оглавлении архива для каждого содержащегося
в нем файла хранится следующая информация:

 Имя
файла

 Размер
файла на диске и в архиве

 Сведения
о местонахождения файла на диске

 Дата
и время последней модификации файла

 Код
циклического контроля для файла,
используемый для проверки целостности
архива

 Степень
сжатия

Любой
из архивов имеет свою шкалу степени
сжатия. Чаще всего можно встретить
следующую градацию методов сжатия:

 Без
сжатия (соответствует обычному копированию
файлов в архив без сжатия)

 Скоростной

 Быстрый
(характеризуется самым быстрым, но
наименее плотным сжатием)

 Обычный

 Хороший

 Максимальный
(максимально возможное сжатие является
одновременно и самым медленным методом
сжатия)

Лучше
всего архивируются графические файлы
в формате .bmp, документы MS Office и Web-страницы.

Архиваторы – это программы (комплекс
программ) выполняющие сжатие и
восстановление сжатых файлов в
первоначальном виде. Процесс сжатия
файлов называется архивированием.
Процесс восстановления сжатых файлов
– разархивированием. Современные
архиваторы отличаются используемыми
алгоритмами, скоростью работы, степенью
сжатия (WinZip 9.0, WinAce 2.5, PowerArchiver 2003 v.8.70, 7Zip
3.13, WinRAR 3.30, WinRAR 3.70 RU).

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

В
ОС MS DOS существуют архиваторы, но они
работают только в режиме командной
строки. Это программы PKZIP и PKUNZIP, программа
архиватора ARJ. Современные архиваторы
обеспечивают графический пользовательский
интерфейс и сохранили командную строку.
В настоящее время лучшим архиватором
для Windows является архиватор WinRAR.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

В этой статье хотелось бы поговорить о функции Windows, позволяющей существенно сэкономить место на жестком диске – функции сжатия. Впервые встроенная функции сжатия появилась в ОС Windows XP, в последующих версиях Windows эта функция неизменно присутствует. Поддерживаются два типа сжатия:

  • NTFS сжатие на уровне файловой системы
  • Сжатые ZIP-папки (Compressed Folders)

Сжатие NTFS – это архивирование на уровне файловой системы NTFS, выполняется оно прозрачно драйвером файловой системы. NTFS сжатие может применяться к файлам, папкам и дискам целиком. Для этого каждому сжатому объекту присваивается специальный атрибут сжатия (compression state), который указывает сжат файл или нет. У этого типа сжатия есть свои особенности:

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

Сжатые ZIP-папки подразумевают архивацию файлов встроенной в систему функцией создания zip архивов. Сжатые папки очень похожи на обычные, иногда даже можно забыть, что на самом деле работаешь с ZIP-архивом. Особенности ZIP-папок в Windows:

  • Сжатые ZIP-папки можно создавать как на томах NTFS, так и на томах FAT.
  • Из сжатой Zip-папки можно открывать файлы и даже запускать некоторые приложения
  • Zip-папку можно передать на другой компьютер, где ее можно распаковать любой другой программой сжатия.
  • Для сжатия файла нужно просто переместить его в сжатую Zip-папку. Когда файл перемещается их такой Zip-папки в обычную, он автоматически распаковывается.

Как сжать папку в Windows

Чтобы включить NTFS сжатие на каталоге, необходимо в проводнике Windows Explorer щелкнуть по нему правой кнопкой мыши и выбрать свойства.

Затем нажать на кнопку Advanced (Другие) и отметить опцию Compress contents to save disk space (Сжимать содержимое для экономии места для диске) и нажать дважды OK.

Система может спросить: хотите ли вы применить изменения только на папку или также и на все подкаталоги (обычно выбирается 2 пункт, Apply changes to this folder, subfolders and files)

Сжать каталог в Windows

В результате имя сжатого каталога и его содержимое будет отображаться в проводнике синим цветом, что означает – к объекту применено NTFS сжатие.

Сжатая папка отображается синим цветом

Сравним степень сжатия встроенными средствами Windows

Сравним уровень сжатия различными инструментами, для чего из одной и той же папки (в моем случаем папка содержит документы Excel и Word)сначала создадим zip-архив (правой кнопкой мыши по каталогу Send to->Compressed(zipped) folder), затем на том же каталоге включим NTFS компрессию.

Оригинальный размер папки – 145 Мб

Размер zip-папки 27,4 Мб

Размер папки со включенным NTFS сжатием – 51 Мб (значение поля Size on disk в свойствах сжатой папки)

Т.е. в моем случае сжатие в папку ZIP наиболее эффективно и уменьшило размер каталога, занимаемый им на диске на 81% (в то время, как NTFS сжатие всего на 65%).

Однако со сжатием нужно быть осторожным, оно может привести к ошибке, описанной в статье BOOTMGR is compressed в Windows 7. Кроме того, если включить сжатие на каталоге с большим (очень большим) количеством файлов, то проверка такого диска (chkdsk) может занять ОЧЕНЬ большой период времени, а если проверка диска осуществляется при загрузке, то держитесь, рабочий стол появится не скоро..

Сжатие файлов данных

В основе сжатия данных лежит тонкий подход. Например,

если в строке текстового файла находятся пять пробелов подряд, вы могли

бы заменить их специальным кодом, интерпретируемым как пять пробелов,

однако занимающим два байта вместо пяти. Существует и множество других

методов сжатия.

Никогда не пытайтесь сжимать файлы вашей системы с

помощью встроенных средств Windows при наличии запущенных приложений

(за исключением проводника). Чтобы функция сжатия сработала должным

образом, обязательно закройте все приложения перед ее использованием.

Это особенно важно, если вы сжимаете весь жесткий диск — Windows не

сможет сжать открытые файлы.

В Интернете имеется большое количество источников информации

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

на ее основе строятся другие технологии, такие как передача данных.

Хорошим введением для вас послужат материалы сайта http://www.howstuffworks.com/file-compression.htm.

Если вы предпочитаете формат «вопрос-ответ», обратитесь к часто задаваемым

вопросам по сжатию на сайте http://www.faqs.org/faqs/compression-faq/.

Более детальную и технически точную, но сложную для чтения информацию

о сжатии данных вы можете найти на сайте http://www.faqs.org/faqs/compression-faq/part2/section-1.html.

Там же вы найдете эталонные тесты, позволяющие определить время работы

различных утилит сжатия, и обсуждения о выборе наилучшего метода сжатия

для решения определенных задач. Эти дискуссии весьма интересны, однако

имейте в виду, что к увеличению свободного пространства жесткого диска

приведет сжатие по любому из выбранных вами методов.
Используемые методы сжатия не так важны для оптимизации Windows, как

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

сжимаются эффективно, в то время как сжатие исполняемых и некоторых

других видов файлов не дает ощутимого эффекта. Таким образом, объем

дискового пространства, освобождаемый при помощи описываемых в этой

главе методов, зависит от сжимаемости файлов и выбранного метода сжатия

(многие утилиты сжатия файлов допускают настройку степени сжатия в определенном

диапазоне).

Установка параметров сжатия жесткого диска

Операционная система Windows предоставляет возможность

задавать параметры сжатия файлов вашего жесткого диска. Вы можете сжать

как диск целиком, так и отдельную папку и даже файл. Я рекомендую всегда

сжимать весь жесткий диск. Функция сжатия Windows обладает значительным

быстродействием, а сжатие целого диска оправдано получаемым в результате

эффектом. Даже если на вашем диске хранятся только приложения, его сжатие

приведет к увеличению свободного пространства. Как правило, прирост

свободного места на диске составляет примерно 40 %, однако в общем случае

этот показатель определяется типами сжимаемых файлов.

Перед тем

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

выступают против сжатия данных, мотивируя свою позицию снижением быстродействия

системы. С одной стороны, быстродействие системы действительно немного

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

файлов, выполняемых в фоновом режиме (кстати, при работе с файлами небольшого

размера эти затраты практически незаметны). С другой стороны, быстродействие,

напротив, растет за счет экономии времени на считывание файла с жесткого

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

медленнее по сравнению с другими операциями передачи данных, что обусловливает

повышение быстродействия. Однако оба эффекта изменения быстродействия

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

правой кнопкой мыши, выберите в контекстном меню команду Свойства (Properties),

перейдите на вкладку Общие (General) и установите флажок Сжимать диск

для экономии места (Compress Drive to Save Disk Space), как показано

на рис. 1. После щелчка на кнопке OK Windows спросит вас о том, каким

образом выполнить сжатие. Например, вы можете применить сжатие только

к корневой папке жесткого диска. Выберите вариант сжатия всего жесткого

диска, чтобы добиться максимального эффекта.

Рис. 1. Выполните сжатие жесткого диска,

чтобы добиться максимального эффекта

Скорее всего,

Windows выдаст сообщение о том, что не может сжать некоторые файлы,

и спросит вас, что делать с ними. Установите переключатель Пропустить

(Ignore). Невозможность сжатия объясняется тем, что файлы либо открыты,

либо Windows может использовать их только в несжатом виде. Например,

Windows постоянно задействует файл подкачки, а сжатие непрерывно изменяющейся

страничной памяти попросту опасно для системы.

Чтобы пронаблюдать результат сжатия, убедитесь, что

Windows отображает сжатые файлы особым цветом. Задать этот цвет вы можете,

воспользовавшись командой Сервис->Свойства папки (Tools->Folder

Options) в проводнике. Перейдите на вкладку Вид (View) диалогового окна

Свойства папки (Folder Options) и установите флажок Отображать сжатые

или зашифрованные файлы NTFS другим цветом (Show Encrypted or Compressed

NTFS Files in Color). После того как вы щелкните на кнопке OK, проводник

применит к сжатым файлам новые параметры отображения.

Сжатие отдельных файлов

Иногда невозможность сжатия всех файлов компьютера

может быть обусловлена политикой компании, негативным опытом прошлого,

проблемами с совместимостью приложений или другими причинами. Я не располагаю

сведениями о проблемах с сжатием в Windows XP, однако могу предположить,

что они существуют. Даже если вам не удастся сжать все файлы, вы можете

сжать часть из них. Например, можно сжать данные, используемые приложением,

не трогая само приложение.
Существуют два уровня сжатия отдельных файлов: уровень папки и уровень

файла. Чтобы сжать папку, щелкните на ней правой кнопкой мыши и выберите

в контекстном меню команду Свойства (Properties). На вкладке Общие (General)

диалогового окна Свойства папки (Folder Options) щелкните на кнопке

Дополнительно (Advanced). Вы увидите диалоговое окно Дополнительные

атрибуты (Advanced Attributes), подобное представленному на рис. 2.

Установите флажок Сжимать содержимое для экономии места (Compress Contents

to Save Disk Space) и дважды щелкните на кнопке OK, чтобы закрыть оба

диалоговых окна.

Рис. 2. Если вы не можете сжать весь жесткий

диск, добейтесь увеличения
производительности системы путем сжатия отдельных файлов
Сжатие отдельных файлов выполняется так же, как сжатие папок — установкой

флажка Сжимать содержимое для экономии места (Compress Contents to Save

Disk Space) в окне Дополнительные атрибуты (Advanced Attributes). Единственное

отличие состоит в том, что вы сжимаете содержимое не папки, а только

выбранного файла.

Описанную процедуру

можно использовать для распаковки папок и файлов после упаковки всего

жесткого диска. Может оказаться, что сжатие определенного файла не обладает

эффективностью и лишь увеличивает время его загрузки и выгрузки. В этом

случае сбросьте флажок Сжимать содержимое для экономии места (Compress

Contents to Save Disk Space), показанный на рис. 2, только для этого

файла. Остальное содержимое жесткого диска останется сжатым — Windows

распакует только выбранный файл.

Поиск скрытых функций сжатия данных

Многие приложения обладают функциями сжатия данных,

однако принципы действия этих функций, как правило, отличаются от описанных

выше. Например, система управления базами данных (СУБД) может сжать

файл путем удаления из него пустых записей. Если записи сначала были

созданы по запросу пользователя, а затем удалены, после них остаются

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

СУБД является приложение Outlook Express. Оно включает функцию сжатия

файлов, однако чтобы ею воспользоваться, вам нужно сначала выяснить,

как ее запустить. Фактически эта функция запускается из двух мест, из

одного в автоматическом режиме, из другого в ручном.
Чтобы программа Outlook Express автоматически сжимала свои папки, воспользуйтесь

командой Сервис->Параметры (Tools->Options), перейдите на вкладку

Обслуживание (Maintenance), показанную на рис. 3. Этой вкладке следует

уделить особое внимание, поскольку оно настроено только на вашу систему

и не содержит значений, задаваемых по умолчанию. Например, Microsoft

полагает, что если вы помещаете сообщение в папку Удаленные (Deleted

Items), это не означает, что вы собираетесь действительно удалить его.

Чтобы периодически реально удалять сообщения, установите флажок Очищать

папку «Удаленные» перед выходом (Empty messages from ‘Deleted

Items’ folder on exit).

Рис. 3. Элементы управления автоматическим

сжатием файлов системы
Смысл некоторых элементов управления не столь очевиден. Например, флажок

Сжимать сообщения в фоновом режиме (Compact messages in the background)

кажется полезным, поскольку позволяет сжимать сообщения без дополнительных

усилий. Единственная неприятность состоит в том, что расписание сжатия

находится вне вашего контроля. Сжатие может начаться, заняв системные

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

потери производительности невелики, и лично я предпочитаю устанавливать

этот флажок, однако в системах с недостаточным количеством ресурсов

предпочтительнее сжимать файлы вручную.
Для того чтобы сжать файлы вручную в Outlook Express, сначала выделите

папку, содержащую файлы, затем перейдите в подменю Папка (Folder) меню

Файл (File) и вы увидите команды Сжать (Compress) и Сжать все папки

(Compress All Folders). Если выбрать команду Сжать (Compress), то Outlook

Express сожмет только выбранную папку, а если команду Сжать все папки

(Compress All Folders), на экране появится диалоговое окно Сжатие (Compressing),

в котором будут отображаться сжимаемые папки.
Иногда сжатие файлов на уровне приложений определяется типами файлов.

Например, файлы формата TIF или TIFF (Tagged Image File Format — теговый

формат графических файлов) можно сохранить в несжатом виде либо сжать

при помощи одного из нескольких методов. Чтобы файлы могли быть прочитаны

на любых компьютерах, специальный комитет занимается стандартизацией

методов сжатия. Приложение, как правило, позволяет сжимать файлы одним

из стандартных методов.

Рис. 4. При сохранении графических файлов

вы можете выбрать метод их сжатия
Единственная проблема заключается в выборе метода сжатия файла. Например,

диалоговое окно Сохранение документа (Save As), представленное на рис.

4, предлагает четыре метода сжатия TIFF-файла. К сожалению, список в

нижней части окна называется Подтип (Sub type), а не Метод сжатия (Compression

method), поэтому некоторые пользователи не знают, что могут сжать файл.

Учитывая, что по умолчанию файлы сохраняются в несжатом виде, обычно

они такими и остаются.
Из-за того что при применении некоторых методов сжатия качество изображения

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

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

сложность изображений неодинакова. Некоторые методы сжатия характеризуют

как «методы с потерями», поскольку они приводят к потере некоторых деталей

изображения. Как правило, пользователь не замечает потерь, однако они,

в конечном счете, могут безвозвратно испортить изображение. В табл.

1 представлены статистические данные для простой экранной копии в формате

TIFF, сжатой при помощи различных методов (показаны также параметры

несжатого файла).
Таблица 1. Сравнение коэффициентов сжатия

для различных методов

Метод

Размер файла

Степень сжатия

% Потери

Несжатый файл 483 Кбайт 0 Нет
Fax – CITT3 14,7 Кбайт 96,95 Цвет и детали
Huffman 14,7 Кбайт 96,95 Цвет и детали
LZW 41,5 Кбайт 91,41 Нет
Packetbits 259 Кбайт 46,38 Нет

Долговременная и кратковременная архивация

Термины «долговременная» и «кратковременная» весьма

туманны. Я говорю об этом потому, что очень аккуратно выбирал заголовок

для данного раздела. Большинство людей обладают собственными представлениями

о том, что является «долгим», а что « кратким», и у разных людей эти

представления могут не совпадать. Кроме того, значения этих терминов

зависят от контекста: например, 15-летний ипотечный заем на покупку

дома можно назвать краткосрочным, однако заем, оплачиваемый в течение

того же срока по кредитной карте, явно относится к классу долгосрочных.

Таким образом, говоря о длительности архивации, следует оперировать

конкретными сроками (например, 5 лет), а не терминами, допускающими

произвольную трактовку.

Иногда кратковременная архивация превращается в долговременную,

несмотря на все усилия людей, занимающихся обслуживанием архивов. Иногда

значительные сроки архивации предписываются законом или обстоятельствами.

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

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

способ архивации обладает своими замечательными достоинствами и в равной

степени ужасными недостатками. Например, работая с магнитными лентами,

вы умещаете огромный объем информации в физически компактном устройстве,

однако с очень малой скоростью доступа. Сетевые администраторы согласны

на любой другой носитель, способный заменить магнитные ленты, но такого

носителя до сих пор не придумали. Поэтому не следует считать одни способы

архивации лучшими по сравнению с другими — предпочтения определяются

лишь внешними обстоятельствами.

Один из наиболее

интересных сайтов, посвященных резервному копированию и восстановлению, http://www.usbyte.com/index_recovery.htm,

создан компанией USByte. На нем вы найдете множество любопытных тем

— от поддержания носителей в работоспособном состоянии до разрешения

возникающих с ними проблем. Разумеется, основное внимание уделено тому,

чем занимается компания USByte, — восстановлению данных с поврежденных

носителей.

Разрушающиеся компакт-диски

Многие считают компакт-диск (CD) лучшим архивным носителем

после цифрового видеодиска (DVD). Действительно, CD дешевле DVD и физически

занимает очень мало места (самыми громоздкими носителями являются жесткие

диски). Кроме того, скорость доступа для компакт-дисков относительно

высока, особенно если сравнивать их с магнитными лентами, и многие пользователи

умеют обращаться с ними. Тем не менее, для компакт-дисков характерна

ненадежность и склонность к повреждениям. Одна ошибка способна привести

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

проблемы технологии CD. К сожалению, прочитав их, нелегко разобраться

в противоречивых утверждениях и составить полную картину. Очевидной

неприятностью являются царапины, поэтому следует обеспечить компакт-дискам

должные защиту и уход. Многие пользователи знают об этом, однако полагают,

что при правильном уходе они продлят срок службы CD до 100 лет или больше.

Например, утверждается, что время жизни компакт-дисков MAM-A Gold Standard

CD-R составляет примерно 200 лет (http://www.inkjetart.com/mitsui/).
Однако были выявлены другие проблемы, поставившие под сомнение тезис

о том, что компакт-диск может прослужить 100 лет. Некоторые компакт-диски

буквально распадаются на части. Это объясняется рядом причин, в основном

сводящихся к неправильному уходу и старению.
Корень зла заключается в том, что носитель данных не может самостоятельно

определить ни суть проблемы, ни даже ее наличие. К примеру, смысл статьи http://peripherals.about.com/library/weekly/aa041701a.htm сводится к тому, что люди, обсуждающие данный вопрос, попросту заблуждаются.

По общему мнению, компакт-диски неправильно эксплуатируются, а если

бы с ними обращались правильно, срок их службы был бы действительно

долгим. Даже автор статьи признает, что некоторые компакт-диски не служат

дольше 5 лет в самых лучших условиях. Эта статья очень полезна, поскольку

содержит полезные рекомендации относительно приобретения компакт-дисков.

Иногда лучше проявить осторожность в мелочах, чем столкнуться

с серьезными неприятностями. Разумеется, вы можете сохранять на компакт-дисках

архивы, срок службы которых составляет менее 5 лет. Тем не менее, рекомендуется

создавать не одну, а две архивные копии данных, поскольку это повышает

вероятность сохранности данных в случае повреждения одного из компакт-дисков.

Чтобы свести к минимуму возможность проблем, используйте два компакт-диска

от разных производителей.
Статья http://www.eweek.com/article2/0,1759,1592925,00.asp журнала eWeek также в полной мере раскрывает данную тему. В ней не только

рассматриваются вопросы уязвимости CD, но и потенциальные проблемы DVD.

Автор приводит замечательные советы о том, как избежать неприятностей,

а также предположения о том, как современные проблемы будут преодолены

в будущем. Если только вы не располагаете более ценными источниками

информации, прочитайте указанные статьи и вникните в суть описываемых

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

верхней стороне CD. Некоторые люди пишут на покрытии обычной ручкой,

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

данных. Иногда порча происходит из-за утраты клеем своих свойств. Серебряное

покрытие, защищающее данные, также повреждается, что приводит к их потере.
Еще одну проблему вызывает непрочность краски. Краска может утратить

прочность под воздействием солнечных лучей, однако эта проблема возникает

и при нормальных условиях хранения диска. В статье http://www.rense.com/general152/themythofthe100year.htm рассказано о возможных причинах потери прочности краски CD и, в меньшей

степени, DVD. Короче, существует ряд факторов, связанных с окружающей

средой и находящихся вне вашего контроля, которые могут повредить компакт-диск

с вашими данными.

Медленные магнитные ленты

В накопителях на магнитных лентах применяется одна

из самых старых технологий резервного копирования. Существующие накопители

различны по размерам и объему. Производители магнитных лент постоянно

работают над увеличением емкости своих изделий. Очень трудно найти альтернативный

носитель данных, способный хранить их в таком же объеме, как магнитные

ленты. Кроме того, удельная стоимость хранения информации на магнитной

ленте очень низка. Из-за высоких объемов носители на магнитных лентах

стоят значительно дороже компакт-дисков. Если CD обойдется вам меньше,

чем в доллар, то магнитная лента — как минимум в 20 долларов. Емкость

магнитной ленты, как правило, измеряется гигабайтами (1024 Мбайт) или

терабайтами (1024 Гбайт), в то время как на одном компакт-диске умещается

всего лишь 650 Мбайт данных.

Чтобы создать наглядное представление о емкости магнитной

ленты, приведу следующий пример. Устаревший DAT-накопитель, используемый

мной на сервере, осуществляет записи на носители объемом 48 Гбайт. Этого

достаточно для сохранения всех документов и параметров приложений моей

системы (хотя недостаточно для сохранения самих приложений). Мой DAT-накопитель

очень экономичен — удельная стоимость хранения информации, обеспечиваемая

им, ниже, чем у компакт-дисков. Кроме того, размер ленточного носителя

также меньше по сравнению с CD, что позволяет компактно хранить огромные

объемы данных.
Большинство людей считают магнитные ленты одним из самых надежных средств

хранения резервных копий сроком до 2 лет. Время жизни магнитных лент

относительно велико, а требования к хранению данных хорошо известны.

При надлежащих условиях эксплуатации ленточный носитель способен прослужить

до 10 лет и больше, однако большинство экспертов рекомендуют для поддержания

оптимального быстродействия менять их через 2 года с момента первого

использования. Многолетний опыт применения магнитных лент убережет вас

от неприятных сюрпризов.
Тем не менее, ленточные носители требуют соблюдения условий хранения.

Не следует подвергать магнитные ленты воздействию высоких показателей

влажности и температуры. Важно также предохранять их от попадания пыли

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

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

лишены оптические носители: они физически контактируют со считывающей

головкой, кабестаном и другими компонентами накопителя. Поскольку это

приводит к износу компонентов, теоретически вам необходимо менять их

чаще, чем в случае других типов устройств. На практике оказывается,

что технология совершенствуется быстрее, чем происходит износ, поэтому

обычно целесообразней купить новый накопитель, нежели ремонтировать

старый.
Настоящим «камнем преткновения» для ленточных носителей является их

чрезвычайно низкая скорость. Производители магнитных лент работают над

этой проблемой, однако необходимость физического контакта ленты со считывающей

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

магнитные ленты относятся к классу носителей с последовательным доступом:

другими словами, их чтение производится от начала до конца. Если вам

нужны данные, находящиеся в начале ленты, то для доступа к ним устройству

чтения необходимо перемотать ленту из текущей позиции в начало. Жесткие

диски и другие устройства с произвольным доступом мгновенно перемещаются

в то место, где находятся требуемые данные, избегая холостого чтения.
Технология магнитных лент подходит к завершению своего жизненного цикла.

Например, производители снижают толщину лент, чтобы уместить на носителе

как можно больше данных. Разумеется, тонкая лента занимает меньше места,

чем толстая, однако более подвержена механическим повреждениям, и производители

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

Многие производители делают вывод, что запас идей по усовершенствованию

магнитных лент иссякает. Преимущества ленточных носителей и проблемы

их модернизации в будущем рассмотрены в статьях http://www.eweek.com/article/0,1759,1583336,00.asp и http://www.eweek.com/article2/0,1759,1627778,00.asp журнала eWeek.

Ненадежные жесткие диски

На сегодняшний день самыми быстрыми носителями резервных

копий являются жесткие диски. Прямое резервное копирование с одного

жесткого диска на другой длится несколько минут, а не несколько часов.

Некоторые домашние компьютеры имеют два жестких диска, один из которых

используется в качестве носителя архивной информации. Очевидно, это

не самый лучший способ архивации, однако вполне работоспособный и позволяющий

в полной мере ощутить преимущества жестких дисков в быстродействии.

К счастью, существуют системы, позволяющие объединить в процессе архивации

быстродействие жесткого диска с переносимостью, например (см. http://www.jrwhipple.com/prod_dualdrives.html),

двухприводная система резервного копирования (Dual Drive Backup System).
Как правило, создать резервную копию на жестком диске проще всего, а

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

автоматизировать этот процесс. Для многих пользователей простота архивации

является главной причиной выбора жесткого диска в качестве носителя

данных. Это неудивительно: высокая скорость и доступность жесткого диска

более чем привлекательны.
Жесткие диски являются самыми дорогими носителями информации, по крайней

мере, с точки зрения удельной стоимости. Производители прикладывают

значительные усилия к ее снижению, поэтому есть надежда, что однажды

жесткие диски составят конкуренцию компакт-дискам по стоимостным показателям.

Тем не менее, обе технологии в этом отношении значительно отстают от

магнитных лент. Именно по этой причине многие компании до сих пор пользуются

ленточными накопителями для архивации своих данных.

Рассмотрите перспективу использования носителей — аналогов

жестких дисков. Как правило, они обладают несколько большей надежностью,

однако и более низкой скоростью обмена (скоростью передачи данных с

устройства на устройство). Стоимость аналогов немного выше, чем самих

жестких дисков, но, как правило, эти издержки себя оправдывают. Компания

Iomega предлагает ряд интересных накопителей, одному из которых посвящена

статья http://www.graphics.com/

modules.php?name=News&file=print&sid=2301. Разумеется, в

числе продукции Iomega находится и знаменитый накопитель ZIP, о котором

вы можете прочитать на сайте http://www.iomega.com/zip.
Архивация на жестких дисках наименее надежна. Они не отличаются устойчивостью

к ударам — неудачный толчок может привести к потере всей резервной копии.

Жесткие диски хрупки, легко перегреваются, в них много механических

компонентов. Непрочность жестких дисков требует особо бережного обращения

даже с их переносными моделями, например, выпускаемыми фирмой Olixir

(http://www.olixir.com/).

Не стоит использовать внешние жесткие диски. Предполагаемая

комбинация скоростных характеристик жесткого диска с переносимостью

и возможностью применения одного устройства на нескольких компьютерах

редко воплощается на практике. Если внешний жесткий диск занимает обычный

порт, такой как USB (Universal Serial Bus — универсальная последовательная

шина), скорость передачи данных снижается и становится сопоставимой

с накопителями на магнитных лентах. Использование собственных портов

компьютера обеспечивает скорости, близкие к скоростям внутренних жестких

дисков, однако ценой переносимости — каждая машина должна обладать собственным

портом. Кроме того, стоимость внешних жестких дисков иногда бывает очень

высокой. Неоспоримое преимущество таких дисков состоит в том, что они

не используются постоянно — это увеличивает предполагаемый срок их службы

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

день наилучшей совместимостью обладают компакт-диски, а на втором месте

находятся ленточные накопители. Оба типа носителей имеют стандартные

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

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

Если вы не можете приобрести жесткий диск подходящего производителя,

вы оказываетесь в безвыходном положении.

Наверняка среди читателей уже нашлись те, кто удивляется,

почему я до сих пор не упомянул устройство, стоящее гораздо меньше накопителей

для записи CD, жестких дисков и даже магнитных лент. Речь, конечно же,

идет о дискете — дешевом, но ненадежном и неудобным из-за малого объема

носителе. Она способна хранить не более 1,44 Мбайт данных, однако при

наличии подходящей программы архивации на ней можно разместить резервную

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

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

Полноценная резервная копия может потребовать много дискет. Дискеты,

как ни один из описанных выше накопителей, подвержены повреждениям и

обладают самой низкой надежностью. Дискеты приходится постоянно вставлять

и вынимать из компьютера, что отнимает дополнительное время и снижает

надежность резервной копии.
В прошлом дискеты рассматривались как вполне подходящий носитель архивных

данных, поскольку объемы файлов и жестких дисков были существенно меньше.

В настоящее время системы стали больше, а объемы хранимой информации

велики, как никогда. Хотя дискеты и являются сверхдешевым средством

архивации, я рекомендую пользоваться не ими, а другими устройствами,

описываемыми в этой главе.

Архивация через Интернет

Современные пользователи обладают возможностью архивировать

данные способом, которого не было в прошлом, — на внешних хранилищах

информации в Интернете. Для этого необходимо настроить учетную запись

у одного из поставщиков услуг внешнего сетевого хранения, например,

Ibackup (http:// www.ibackup.com/)

или XDrive (http://www.xdrive.com/).

Иногда услуги по хранению данных в Интернете предоставляются бесплатно

— примером является Free Online Storage (http://www.emailaddresses.com/email_storage.htm).

Основное преимущество резервирования данных в Интернете состоит в его

удобстве. Вам не нужно устанавливать специальные аппаратные средства,

организовывать расписание архивации и тратиться на приобретение носителей.

Все вопросы поставщик услуги решит за вас. Если вы не оплачиваете связь

с Интернетом, такое хранилище обеспечит вас дешевым способом архивации

данных.
Хотя на первый взгляд хранилище в Интернете кажется идеальным средством

удовлетворения ваших потребностей в резервировании, это не так. Вам

придется решить ряд проблем, а некоторые проблемы и вовсе окажутся неразрешимыми,

по крайней мере, легко. Главной проблемой является безопасность. Размещая

данные на чужом компьютере, вы должны понимать, что они становятся доступными

другим людям. Даже шифрование и прочие методы защиты не гарантируют

конфиденциальность. По этой причине не следует помещать в хранилище

в Интернете материалы, касающиеся финансовой или изобретательской деятельности

вашей компании. Хранилище в Интернете подходит лишь для данных, которые

нет нужды скрывать от посторонних.

Слово «бесплатно» звучит привлекательно, однако бесплатные

решения не всегда хороши. Поинтересуйтесь, обеспечивает ли поставщик

гарантированное машинное время — время, в течение которого вы можете

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

гарантирующего безопасность и конфиденциальность данных, чтобы получить

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

сайтов не предоставляет подобных гарантий, что в большинстве случаев

делает такие сайты практически непригодными для архивации. Тем не менее,

бесплатным сайтом можно воспользоваться для временного хранения данных

во время путешествия или для архивации некритичных данных с домашнего

компьютера.
Еще одна проблема состоит в надежности. Если ваша система потерпит крах,

восстановить данные из хранилища в Интернете будет очень трудно. Вы

также не застрахованы от неполадок с соединением по вине поставщика

услуг. Сбои на линиях связи и другие проблемы могут сделать сайт недоступным,

и вы будете вынуждены ждать их решения. Разрыв соединения грозит обернуться

простоями в работе и потерей драгоценного времени.
Наконец, проблему представляет скорость передачи данных. Даже самый

медленный накопитель на магнитной ленте обладает более высоким быстродействием,

чем самое высокоскоростное из Интернет-соединений. Запись резервной

копии потребует значительного времени, а восстановление данных — еще

больше. Таким образом, вся экономия на аппаратных компонентах и эксплуатации

может быть «сведена на нет» затратами времени, требуемыми для решения

даже несложных задач архивации.

Каталогизация и архивация данных

Для хранения некоторых данных требуется промежуточное

хранилище. Например, данные, которые не нужны вам сейчас, но понадобятся

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

места, чем обычно, и при этом доступ к ним будет быстрым. Кроме того,

данные следует разбить на категории, чтобы их было проще отыскать, а

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

найти то, что им нужно. Вспомните, как организована библиотека — без

каталога вы не сумеете быстро отыскать книгу даже при условии, что знаете

ее название.
Задачи каталогизации и архивации данных, которые не нужны вам сейчас,

но потребуются в будущем, должны решаться совместно. Проще собрать данные,

относящиеся к одному проекту, и заархивировать их как единое целое,

чем надеяться, что нужные данные окажутся вместе в тот момент, когда

вы, наконец, решите выполнить архивацию. Второй метод почти никогда

не срабатывает, поскольку часть данных неизбежно оказывается в других

местах, случайно удаляется или повреждается. Каталог представляет собой

карту данных, в то время как архив содержит сами данные в определенный

момент времени. Даже если вы измените данные в будущем, в вашем распоряжении

останутся и исходные данные, и информация об их местонахождении.
К сожалению, большинство программ архивации не предоставляют каких-либо

функций каталогизации, поэтому вам следует самостоятельно создать базу

данных для хранения информации — подойдет любое решение. Лучшие каталоги,

с которыми мне приходилось сталкиваться, были реализованы в виде электронных

таблиц Excel или баз данных Access. Разумеется, при работе в составе

группы вам необходимо в первую очередь позаботиться о доступности каталога

и защите его содержимого.

Концентрируя

внимание на различных методах сжатия, направленных на уменьшение объема

ваших документов, не стоит забывать и о средствах поддержки создаваемых

вами файлов. Например, часть содержимого ваших документов может использовать

шаблоны. Говоря о поддержке, я имею в виду не столько отдельные слова,

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

слов и прочих элементов документа на экране и при печати. Иногда удаление

шаблона приводит к тому, что документ становится нечитабельным. Таким

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

его правильное представление на экране.
В качестве примера рассмотрим следующую ситуацию. Компания архивирует

документ Word. Через 5 лет ее привлекают к судебному процессу, причем

этот документ является одним из вещественных доказательств. Проблема

в том, что никто не может воспользоваться упомянутым документом: хотя

компания и располагает шаблоном с подходящим именем, за 5 лет в него

внесли столько изменений, что воспроизвести с его помощью документ уже

невозможно. Вывод прост: вместе с документом следует архивировать все,

что связано с ним. Это позволит вам выполнить полноценное восстановление

в будущем.
Шаблоны являются не единственными объектами, о которых следует позаботиться

при архивации документов. Иногда разработчики прекращают поддержку определенных

версий документов при обновлении приложения. В этом случае вам нужно

заархивировать приложение целиком, чтобы в будущем иметь возможность

работать с соответствующими документами. Другими словами, для чтения

документа требуется иметь создавшую его программу.
Иногда в работу с документом оказываются вовлеченными и другие приложения.

Например, текстовый документ может содержать встроенную графику, созданную

не текстовым редактором, а другой программой. Если графика имеет стандартный

формат, ее можно просмотреть в любом приложении, в противном случае

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

вам необходимо определить и зафиксировать ресурсы, участвующие в его

открытии. Поместив эту информацию в центральную базу данных, вы сможете

без труда оценить и заархивировать все, что нужно для работы с документом.

Утилиты MakeCab и Expand

Утилита MakeCab создает каталог файлов данных (как

правило, файл с расширением CAB) и по желанию выполняет его сжатие,

а утилита Expand извлекает файлы из каталога. Утилита Expand обладает

одной странностью: в отличие от других подобных ей утилит, она не требует,

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

вы создали каталог с именем Test1.TXT, ничто не мешает вам переименовать

его в Test2.TXT. Возможно, утилиты MakeCab и Expand покажутся вам устаревшими,

однако они обладают множеством полезных функций, и Windows по умолчанию

помещает их на жесткий диск. Единственный их недостаток состоит в том,

что запускаются они из командной строки, а не из удобного графического

интерфейса.

Несмотря на то, что большинство ZIP-приложений способно

читать CAB-файлы, утилиты MakeCab и Expand полезно освоить на случай

возникновения проблем с Windows. Посредством MakeCab вы можете заархивировать

файлы, которые, возможно, являются поврежденными, а с помощью Expand

— поместить в систему их копии с установочного компакт-диска Windows.

Поскольку эти утилиты работают из командной строки, вы можете пользоваться

ими даже при отказе других средств (в аварийной ситуации нет гарантии

работоспособности графического интерфейса).

Запуск утилиты MakeCab из командной строки

Утилита MakeCab создает CAB-файл из файла, указанного

вами. Помимо расширения CAB результирующий файл может иметь расширение

исходного файла, в котором последний символ заменяется подчеркиванием

(например, Test1.TX_ вместо Test1.TXT). За один рабочий цикл утилиты

MakeCab вы можете поместить в CAB-файл только один файл, что увеличивает

срок архивации. Ниже перечислены ключи утилиты MakeCab.
* /D Переменная=Значение — задает переменную MakeCab, которую вы хотите

изменить. Вы указываете имя переменной и присваиваемое значение. Например,

если вы желаете отключить функцию сжатия, введите ключ /D Compression=Off.

В командной строке можно указать любое количество ключей.
Многие разработчики приложений используют MakeCab при создании программ

установки своих продуктов. Если вы желаете детально освоить MakeCab

и смежные утилиты, загрузите пакет средств разработки Microsoft Cabinet

SDK с сайта http://msdn.microsoft.com/library/en-us/dncabsdk/html/cabdl.asp.

Хотя этот продукт не предназначен для всеобщего использования, в нем

вы найдете немало ценной и интересной информации.
* /F директивы — принимает имя файла, содержащие директивы сжатия. Как

правило, вам придется пользоваться этим ключом. Просто укажите имя файла

директив, и MakeCab обработает его.
* /L папка — определяет папку, в которую будет помещен CAB-файл. По

умолчанию используется текущая папка.
* /V уровень — определяет уровень детализации сообщений MakeCab. По

умолчанию установлено значение 1, однако вы можете изменить его на 2

или 3.
Возможности ключа /D не до конца ясны, поскольку в Windows отсутствует

какая-либо документация о нем. Утилита MakeCab содержит переменные,

которые определяют ее режим работы и которые можно изменять. С некоторыми

из этих переменных имеет смысл работать из командной строки, однако

остальные в большей степени предназначены для файлов формата DDF (Diamond

Directive File). Работа с DDF-файлами детально рассмотрена в разделе

«Создание CAB-файлов при помощи утилиты MakeCab». В табл. 2 описаны

основные переменные MakeCab.

Таблица 2. Основные переменные

утилиты MakeCab

Переменная

Командная

DDF-файл

Описание

Cabinet

X

Включение

и выключение режима CAB-файлов

CabinetFileCountThreshold

X

Максимальное

количество файлов, которое может содержаться в CAB-файле. При его

достижении MakeCab создает новый CAB-файл

Compress

X

X

Включение

и выключение сжатия. При выключенном сжатии MakeCab просто выполняет

архивацию в CAB-файл

CompressedFileExtensionChar

X

При

архивации последний символ в расширении файла по умолчанию заменяется

подчеркиванием (например, Test1.TX_ вместо Test1.TXT). С помощью

этой переменной можно задать вместо подчеркивания другой символ

CompressionType

X

X

Стандартным

методом сжатия CAB-файлов является MSZIP. Большинство ZIP-приложений

без проблем читают MSZIP-файлы, однако этот метод работает медленно,

когда количество сжимаемых файлов велико. Если главным фактором

для вас является скорость, а степень сжатия не критична, то во многих

случаях вы можете воспользоваться методом LZX. Некоторые ZIP-приложения

не поддерживают этот метод

DestinationDir

X

X

Папка

для размещения CAB-файла. По умолчанию CAB-файлы помещаются в текущую

папку

DiskDirectory

X

Имя

папки для хранения каждого из дисков при сжатии нескольких дисков

одновременно. Например, если вы задали имя MyArchive, то содержимое

первого диска будет помещено в папку MyArchive1

DiskLabel

X

Отображаемая

метка диска. MakeCab присваивает каждому диску уникальную метку,

содержащую номер диска. Например, если метке присвоено значение

My Archive, то первый диск будет помечен как My Archive 1

GenerateInf

X

Задает

генерацию INF-файла для архива. INF-файл позволяет распаковать архив

и получить доступ к файлам без использования утилиты Expand (подробная

информация изложена в разделе «Извлечение файлов из архива при помощи

утилиты Expand»). С INF-файлами связан еще ряд переменных, однако

они, как правило, используются программами установки, и на данном

этапе вы вполне можете проигнорировать их

MaxCabinetSize

X

Максимальный

размер CAB-файла. Если файл не помещается в архив целиком, MakeCab

заполняет текущий архив до максимального размера, а затем создает

новый архив, в который помещает остаток файла. Процесс продолжается

до тех пор, пока не будет заархивирован весь файл

MaxDiskSize

X

Размер

диска, устанавливаемый для того, чтобы каждый CAB-файл можно было

разместить на отдельном диске. На сегодняшний день MakeCab не осуществляет

непосредственную поддержку DVD, однако поддерживает CD. Вы можете

выбрать один из стандартных размеров диска (CDROM, 1,44 Мбайт, 1,2

Мбайт, 720 Кбайт и 360 Кбайт), либо задать произвольный размер в

байтах

RptFileName

X

Имя

отчета о процессе генерации CAB-файла. Отчет содержит сведения обо

всех ошибках MakeCab, а также статусную информацию

SourceDir

X

X

Папка,

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

папка

UniqueFiles

X

Определяет

возможность дублирования имен файлов. Чтобы обеспечить уникальность

имен файлов, не меняйте значение On, заданное по умолчанию

Чтобы опробовать

MakeCab, откройте окно командной строки в папке, содержащей тестовый

файл, и введите команду:
MakeCab /D Compress=On /D CompressedFileExtensionChar=
# /D CompressionType=LZX /V3 Test1.TXT
Нажмите клавишу Enter. В результате будет создан CAB-файл с именем Test1.TX#,

сжатый методом LZW. Кроме того, утилита MakeCab выведет детальную информацию

о процессе сжатия. Типичные результаты выполнения приведенной команды

показаны на рис. 5.

img5

Рис. 5. Для быстрого сжатия файлов воспользуйтесь

версией MakeCab для командной строки

Создание CAB-файлов при помощи утилиты MakeCab

Возможности утилиты MakeCab несколько ограничены, если

запускать ее из командной строки. Вам не удастся включить в CAB-файл

больше одного файла, в то время, как возможность генерировать CAB-файлы,

содержащие множество файлов, была бы весьма желательной. В этой ситуации

на помощь приходят DDF-файлы, открывающие новые широкие возможности.

Фактически, средствами MakeCab и DDF многие профессиональные разработчики

создают программы установки и утилиты. Тем не менее, целью этой главы

является продемонстрировать каталогизацию и (необязательно) сжатие файлов.

Корпорация Microsoft предоставляет очень мало документации

по работе с CAB-файлами и по созданию DDF-файлов, расширяющих возможности

MakeCab. Часть этой документации содержится в файле http://home.hiwaay.net/~pittman/archive/

makecab.doc. Этот документ весьма труден для чтения, поэтому убедитесь,

что правильно все поняли перед тем, как применять DDF-файлы к реальному

архиву.
Важным преимуществом утилиты MakeCab является возможность создания архивов

на нескольких дисках. Если файл слишком велик, чтобы поместиться на

одном диске, MakeCab автоматически организует сжатие так, чтобы разместить

его на нескольких дисках. Кроме того, MakeCab эффективно использует

пространство CAB-файлов, максимально заполняя их и располагая слишком

большие файлы в нескольких архивах. Наконец, MakeCab выполняет «сквозное»

сжатие файлов, не останавливая процесс на их границах. Теоретически

это увеличивает коэффициент сжатия, однако на практике вы не увидите

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

быть весьма сложными, однако, как правило, для простых архивов особой

сложности не требуется. В листинге 1 показан DDF-файл, созданный мною

для тестовых файлов.
Листинг 1. Простой DDF-файл для архивации
; Установка различных

переменных MakeCab
.Set Cabinet=On
.Set CabinetName1=MyArchive.CAB
.Set Compress=on
.Set DiskDirectory1=CabinetStore
.Set DiskLabel=»Мой тест-архив»
.Set MaxDiskSize=CDROM
.Set RptFileName=Archive.TXT

;

список архивируемых файлов

Test1.TXT
Test2.INI
Test3,HLP
Test4.TST

При создании DDF-файла для архивации необходимо создать

два раздела. В первом выполняется установка переменных MakeCab, а во

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

свои комментарии — соответствующие строки начинаются символом точки

с запятой (;).
Ключевое слово .Set (с обязательной точкой в начале) указывает MakeCab

на определение переменной. Затем следует имя переменной, знак равенства

(=) и значение. Большинство значений представляют собой отдельные слова,

которые необязательно заключать в кавычки. Если же значение состоит

из нескольких слов, то необходимы двойные кавычки, чтобы утилита MakeCab

могла обработать всю фразу целиком. Именно так задано значение переменной

DiskLabel.
Обычно все архивные файлы хранят в одной папке, поэтому вам достаточно

указать лишь их имена. Если же нужно разместить файлы в разных папках,

то задайте для них соответствующие пути. К примеру, если вы желаете

поместить файл Temp.TXT в папку \Temp, находящуюся на диске D, в DDF-файл

следует включить запись вида:
D:\Temp\Temp.TXT
Чтобы создать архив с помощью утилиты MakeCab, нужно воспользоваться

ключом /F. Например, если вы желаете назвать DDF-файл именем MyCatalog.DDF,

введите в командной строке команду:
MakeCab /F MyCatalog.DDF
Нажмите клавишу Enter. Типичные результаты выполнения этой команды представлены

на рис. 6.

img6

Рис. 6. С помощью DDF-файла создается стандартный

CAB-файл, включающий в себя
множество файлов

Обратите внимание, что, судя по рис. 6, полученные результаты гораздо

сложнее, чем при запуске MakeCab из командной строки. При помощи ключа

/V2 вы получаете подробные сведения о работе MakeCab, однако без излишней

детализации. Вы видите результаты присваивания значений переменным,

а также комментарии, включенные вами в код, что позволяет без труда

сравнить полученные результаты с набранным текстом.

Создание DDF-файла вручную может оказаться сложным

и долгим, однако у вас есть альтернатива — воспользоваться командой

Dir. Например, если вы желаете заархивировать все файлы в папке, введите

в командной строке команду Dir *.* /B >> ACatalog.DDF и нажмите

клавишу Enter. В файле ACatalog.DDF будет сформирован список файлов

для архивации. Откройте его, дополните объявлениями переменных и «скормите»

утилите MakeCab.

Извлечение файлов из архива при помощи утилиты Expand

Утилита Expand значительно проще по сравнению с MakeCab.

Она предназначена для отображения или извлечения содержимого CAB-файла.

Ниже перечислены ее ключи.
* /R — переименовывает извлекаемые файлы. К сожалению, функция переименования

работает плохо. Поэтому лучше переименовать файлы вручную, предварительно

разархивировав их в отдельной папке.
* /D — отображает список файлов, входящих в CAB-файл, без извлечения.

Эта команда позволит вам ознакомиться с содержимым CAB-файла перед тем,

как выполнять над ним какие-либо действия.
* /F файлы — производит выборочное извлечение из CAB-файла. Иногда необходимо

извлечь лишь 1–2 файла, а не распаковывать CAB-файл целиком. Этот ключ

работает лишь с CAB-файлами, содержащими множество файлов. Если вы желаете

извлечь содержимое CAB-файла полностью, воспользуйтесь ключом /F *.
Чтобы применить утилиту Expand к отдельному архиву, просто введите его

имя. Например, если вы желаете обработать архив Test1.TX_, наберите

в командной строке команду:
Expand Test1.TX_
Нажмите клавишу Enter. Вся прочая информация (имя папки назначения и

др.) является необязательной.
Работая с архивами, содержащими множество файлов, необходимо указывать

как список файлов, так и папку назначения. Например, чтобы полностью

разархивировать файл MyArchive.CAB, введите команду:
Expand /F:* MyArchive.CAB
Нажмите клавишу Enter. Обратите внимание на то, что я использовал звездочку

(*) как символ-заменитель, чтобы утилита Expand распаковала все файлы

архива. Кроме того, я указал в качестве папки назначения текущую папку

при помощи точки (.). На рис. 7 показаны типичные результаты распаковки

файлов из многофайлового архива.

img7

Рис. 7. Для распаковки многофайлового архива

необходимо составить список файлов и указать папку назначения

Использование ZIP-файлов и других архивных файлов

Пожалуй, формат ZIP является самым популярным форматом

архивации всех времен. Утилиты для работы с ZIP-файлами в большом количестве

представлены в Интернете. Большинство из них, например, WinZip (http://www.winzip.com),

рассчитаны на графический интерфейс, однако есть и утилиты командной

строки, к числу которых относится Power Archiver (http://www.powerarchiver.com/).

Большинство утилит помимо формата ZIP поддерживают и другие форматы

архивации.
Популярность формата ZIP привела к тому, что операционная система Windows

XP имеет его встроенную поддержку. Тем не менее, встроенных средств

поддержки в большинстве случаев недостаточно, поскольку среди них отсутствует

удобное средство создания архивов. Единственная полезная функциональность

— возможность использования проводника для добавления файлов в существующие

архивы и извлечения файлов из существующих архивов так, как будто они

являются папками.

Многие пользователи Windows XP не одобряют встроенную

поддержку ZIP. Предлагаемая по умолчанию настройка позволяет просматривать

архивы в проводнике как обычные папки, что, к сожалению, замедляет процесс

поиска, поскольку проводник ищет требуемые файлы во всех ZIP-архивах

системы. Более того, встроенная поддержка ZIP приводит к периодическим

отказам проводника, оказывает влияние на другие утилиты архивации и

порождает проблемы при их использовании. Чтобы отключить встроенную

поддержку ZIP, откройте окно командной строки в папке \Windows\System32,

введите команду RegSvr32 –U ZIPFldr.DLL и нажмите клавишу Enter. На

экране появится сообщение об успешном выполнении команды. Закройте все

копии проводника и заново откройте их.
Единственное полноценное средство создания архивов в Windows — это утилита

MakeCab (см. раздел «Утилиты MakeCab и Expand» этой главы). Утилита

MakeCab способна генерировать CAB-файлы, которые могут располагаться

на нескольких дисках, и предоставляет полную поддержку программ установки

приложений. Если вы желаете создать постоянное хранилище для своих данных,

воспользуйтесь продуктом, подобным MakeCab, — вы сможете распределить

информацию по нескольким дискам. Тем не менее, MakeCab плохо справляется

с созданием сжатых архивов «на лету», поэтому вам также необходимо ZIP-приложение,

например, WinZip, окно которого показано на рис. 8.

img8

Рис. 8. Вы можете создавать архивы «на лету»

с помощью приложений, подобных WinZip

В дальнейшем я буду использовать WinZip в качестве

примера, однако имейте в виду, что другие продукты имеют аналогичную

функциональность. К примеру, вы не можете защитить архив паролем с помощью

утилиты MakeCab, однако можете сделать это средствами WinZip. Кроме

того, WinZip непосредственно интегрируется в проводник. Вы можете выделить

один или несколько файлов, щелкнуть на них правой кнопкой мыши и выбрать

в контекстном меню команду архивации при помощи ZIP. Фактически вам

даже не нужно отдельно создавать ZIP-архив, когда вы хотите отправить

файл по электронной почте, — Windows самостоятельно создаст электронное

письмо с готовым ZIP-вложением (в зависимости от версии Windows и используемой

программы архивации последняя может предварительно создать ZIP-файл

на жестком диске; в этом случае удалите файл сразу после отправки сообщения).

Некоторые пользователи ошибочно полагают, что запаковав

файл в ZIP-архив и поместив архив на сжатый жесткий диск, можно удвоить

экономию дискового пространства. Файл, обработанный архиватором, подобным

ZIP, нельзя эффективно сжать. Сжатие жесткого диска тоже бесполезно

— файл уже имеет минимальный размер. Таким образом, следует иметь в

виду, что ZIP-архив займет на сжатом жестком диске столько же места,

сколько на обычном.
Большинство программ архивации предоставляют средства, обеспечивающие

передачу данных другим пользователям, например, шифрование и парольную

защиту. Эти средства могут быть полезными и в локальных архивах, однако

локальные архивы, чаще всего, защищают физическими методами. Шифрование

и пароли же оказываются менее важными.

С совместимостью ZIP-файлов возможны проблемы. Изначально

существовал единственный стандарт ZIP, поэтому, архивируя данные с помощью

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

приложении, поддерживающем ZIP. Желание разработчиков сделать свои программы

уникальными привело к отклонениям от стандарта ZIP. Согласно статье

http://www.infoworld.com/infoworld/ article/03/06/10/HNzipsplinters_1.html

на сайте InfoWorld одной из наиболее спорных областей является использование

новых технологий шифрования (чтобы просмотреть статью, вам необходимо

стать членом InfoWorld, однако регистрация является бесплатной). Еще

одна проблема заключается в применении новых методов сжатия, позволяющих

достичь несколько большей экономии дискового пространства. У вас нет

необходимости использовать эти нововведения; многие производители заранее

предупреждают о проблемах с совместимостью, однако лишняя осторожность

не повредит.
Важным преимуществом утилит архивации с графическим интерфейсом является

удобство. Все, что вам нужно сделать для добавления файла в существующий

архив, — перетащить его туда в проводнике. Большинство утилит выводит

на экран диалоговое окно, подобное показанному на рис. 9. Даже если

вы не понимаете назначения всех предлагаемых вам в этом диалоговом окне

элементов управления, вы можете просто щелкнуть на кнопке Добавить (Add),

чтобы включить в архив новый файл. Пользуясь утилитой, подобной MakeCab,

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

возможностей. Например, вы можете выбрать степень сжатия данных или

зашифровать их для защиты от несанкционированного просмотра. Есть возможность

сохранения файла в формате DOS (8-символьное имя и 3-символьное расширение).

Можно сохранить путь к папке, в которой находится файл, чтобы в будущем

восстановить структуру папок. Все перечисленные возможности реализуются

одним щелчком мыши — вам не нужно запоминать ключи командной строки

и заниматься созданием специальных конфигурационных файлов.

Рис. 9. Многие утилиты архивации с графическим

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

Архиватор WinRAR и другие альтернативы

Многообразный мир архивации не сводится к использованию

только ZIP- и CAB-файлов. В вашем распоряжении широкий выбор форматов,

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

JAVA (JAR) поддерживает множество платформ и полезен в случаях, когда

приоритетной задачей является обеспечение совместимости.
К числу интересных форматов относится RAR. Ряд компаний использует его

для публичного распространения своих файлов. Причиной является мощная

поддержка многотомных архивов (более подробную информацию вы можете

получить на сайте http://www.rarlabs.com/rar_file.htm). Создатели RAR

разработали специальное приложение для его поддержки — WinRAR (http://www.rarlabs.com/).

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

в своей схеме архивации. Если вы создаете архивы данных на личном компьютере

или в компании, выберите какой-нибудь один формат, чтобы не вносить

неразбериху. Тем не менее, при взаимодействии с другими пользователями

нужно иметь в виду многообразие существующих форматов архивации.

Обработка электронной корреспонденции

Электронную почту можно сравнить с рабочим слоном —

она неповоротлива, велика и трудна в управлении. Даже при аккуратном

использовании объем корреспонденции способен быстро вырасти до гигантских

размеров, поскольку электронная почта зачастую является основным средством

коммуникаций. Не следует думать, что электронная почта обеспечивает

общение только в среде бизнеса — она широко используется для личных

контактов и даже в научных исследованиях. Одним из моих лучших ресурсов

для работы является хранилище новостей, полученных по электронной почте

от рекламных изданий. За несколько секунд я могу найти в нем материалы,

которые когда-то читал.
Несмотря на тщательный контроль, объем моих электронных сообщений нередко

превышает 360 Мбайт. Это весьма внушительная цифра для данных, однако

если бы я не следил за своими сообщениями, их объем мог легко вырасти

до 1 Гбайт и даже больше, а администраторы зачастую отводят под личные

почтовые ящики по 10 Гбайт и более. Только представьте себе — у многих

пользователей электронная почта начинает занимать больше места, чем

все остальные типы данных вместе взятые!
В следующих разделах рассмотрены несколько методов оптимизации электронной

корреспонденции. Эти методы очень интересны, однако я призываю вас экспериментировать

самостоятельно, поскольку каждый пользователь предъявляет свои требования

к электронной почте. Если у вас есть собственные идеи, и вы хотите поделиться

ими, свяжитесь со мной по адресу электронной почты Jmueller@mwt.net.

Я коллекционирую идеи, связанные с обработкой электронной корреспонденции,

и обязательно размещу ваши материалы на своем веб-сайте.

Организация и систематизация электронных сообщений

Привыкните к мысли о том, что электронная почта будет

занимать много места на вашем жестком диске. Если не считать спам, электронные

письма не подвергаются автоматическому уничтожению. Хаотично разбросанные

кучи электронных сообщений отнимают дисковые ресурсы впустую, потому

что вы все равно не сможете найти среди них то, что вам нужно. Чтобы

без труда находить интересующую вас информацию, следует организовать

и систематизировать электронную корреспонденцию.
Один из лучших способов навести порядок в электронной почте — создать

для нее специальную папку. К сожалению, у этой задачи нет единственного

«наилучшего» решения. Поскольку я занимаюсь различными видами деятельности,

я использую несколько папок для хранения электронной почты. На рис.

10 вы можете видеть два типа папок.

img10

Рис. 10. Используйте папки в качестве вспомогательного

средства организации электронной почты

В верхней части рисунка расположены папки проектов.

Начиная работу над новым проектом (например, написанием книги или общением

с клиентом), я создаю для него отдельную папку электронной почты. Все

папки проекта имеют одинаковый номер, что облегчает их поиск и сортировку.

После завершения проекта я архивирую файлы электронной почты, имеющие

к нему отношение (детальную информацию вы можете получить в разделе

«Архивация файлов электронной почты»). Таким образом, электронная почта

проекта доступна мне в любой момент, однако занимает пространство жесткого

диска только в период работы над проектом.
Иногда папка проекта имеет вложенные папки. Например, я мог найти несколько

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

вложенную папку. Как правило, я стараюсь дать каждой создаваемой папке

осмысленное имя. Так, я создаю папку для каждой из глав моей книги.

Когда глава готова, я просматриваю содержимое папки и избавляюсь от

бесполезной информации. Папки глав являются временными, и я никогда

не занимаюсь их архивацией.
Папка компьютерных новостей является тематической. Она содержит все

сообщения рекламных изданий, которые я сохраняю в исследовательских

целях. Внутри этой папки имеются вложенные папки, каждая из которых

соответствует определенному изданию. Раз в месяц программа напоминания

выводит сообщение о том, что пора удалить устаревшие сообщения из папок

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

если их давность составляет больше одного года или двух лет. Папка,

посвященная компьютерным новостям, вообще не устаревает — сообщения

приходят в нее постоянно, и, чтобы обеспечить актуальность информации,

я должен постоянно заниматься ее поддержкой.
Обратите внимание, что некоторые приложения электронной почты предоставляют

функцию автоматической архивации. Например, в Outlook 2003 вы можете

щелкнуть на папке правой кнопкой мыши и выбрать в контекстном меню команду

Свойства (Properties). Перейдите на вкладку Автоархивация (AutoArchive),

и вы увидите ряд элементов управления архивацией папки (рис. 11). Вы

можете дать Outlook команду уничтожать сообщения по истечении определенного

временного интервала.

Рис. 11. Некоторые приложения электронной

почты позволяют поддерживать
порядок в системе за счет автоматической архивации

Кроме двух типов папок электронной почты, представленных

на рис. 10, существует еще один, предназначенный для хранения предложений.

Люди предлагают мне определенные идеи, однако пока решение о начале

проекта не принято, я не присваиваю ему номер. Только после воплощения

идеи в реальный проект я перемещаю соответствующую корреспонденцию из

папки предложений в папку проектов. Приблизительно раз в месяц я просматриваю

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

или невыполнимыми в силу каких-либо причин.

Архивация файлов электронной почты

Большинство приложений электронной почты располагают

средствами архивации файлов. Например, чтобы в Outlook 2003 поместить

папку в архивный файл, воспользуйтесь командой Файл?Импорт и экспорт

(File?Import and Export) и следуйте инструкциям мастера, выбрав в списке

первого окна мастера пункт Экспорт в файл (Export to a File). Задайте

архивному файлу имя, совпадающее с именем папки. После этого вы можете

просто удалить папку из списка Outlook и заархивировать файл, полученный

путем экспорта. Такой подход удобен, если вы архивируете папку проекта.

Разумеется, Outlook также поддерживает автоматическую архивацию тематических

папок.
Некоторые приложения электронной почты требуют иных методов работы.

К примеру, широкой популярностью пользуется программа Outlook Express,

которая, хотя и напоминает Outlook по имени, во многом от нее отличается.

В Outlook Express каждая папка хранится отдельно, а не в центральной

базе данных, как в Outlook. Чтобы заархивировать папку в Outlook Express,

нужно определить место ее хранения (как правило, где-то глубоко в папке

\Documents And Settings) и найти DBX-файл, имеющий то же имя, что и

папка. После архивации этого файла удалите его из Outlook Express (не

ограничивайтесь удалением файла с жесткого диска, поскольку иначе Outlook

Express восстановит его).

Архивация электронной корреспонденции при стандартной

настройке Outlook Express может оказаться сложной, например, из-за проблемы

поиска файлов. По умолчанию файлы электронной почты расположены глубоко

в папке \Documents And Settings, что затрудняет их обнаружение. Для

решения проблемы измените местоположение файлов электронной почты. Для

этого выберите в меню Сервис (Tools) команду Параметры (Options), затем

в диалоговом окне Параметры (Options) перейдите на вкладку Обслуживание

(Maintenance) и щелкните на кнопке Банк сообщений (Store Folder). На

экране появится диалоговое окно Местоположение банка сообщений (Store

Location). Щелкните на кнопке Изменить (Change) и выберите новое местоположение

файлов электронной почты в вашей системе. Это упростит поиск и регулярную

работу с этими файлами.
При возникновении проблем с поиском файлов сообщений Outlook Express

воспользуйтесь утилитой Dir. Введите имя папки, добавив к нему расширение

DBX. Например, если ваша папка называется My Folder, то для ее поиска

введите в командной строке команду:
Dir «My Folder.DBX» /S
Нажмите клавишу Enter. Не забудьте заключить в кавычки имя папки, содержащее

пробелы, а также указать ключ /S, чтобы выполнять поиск во вложенных

папках. Утилита Dir найдет папку, содержащую искомый файл, и вы сможете

перейти в нее с помощью проводника.

Восстановление файлов электронной почты

Архивация файлов электронной почты полезна лишь в том

случае, если в будущем вы намерены заняться восстановлением сообщений.

Некоторые приложения электронной почты, например, Outlook 2003, позволяют

сделать это относительно легко. Воспользуйтесь командой Файл?Импорт

и экспорт (File?Import and Export ), чтобы запустить мастер импорта

и экспорта, а затем в списке первого окна мастера выберите пункт Импорт

из другой программы или файла (Import from Another Program) и следуйте

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

«интереснее». Например, чтобы восстановить файл в Outlook Express, нужно

«убедить» программу в том, что файл никогда не удалятся. Сначала создайте

в Outlook Express новую папку с тем же именем, что и восстанавливаемый

архив: если архив называется My Folder.DBX, то папка должна носить имя

My Folder. В Outlook Express перейдите в новую папку. Вы увидите, что

она пуста, однако в момент просмотра программа создаст новый файл для

папки (о том, как задать местоположение файлов электронной почты, написано

в разделе «Архивация файлов электронной почты»). После этого можно закрыть

Outlook Express и записать архивный файл поверх только что созданного.

Windows запросит подтверждение на перезапись (отсутствие запроса означает,

что вам не удалось создать пустой файл). При повторном запуске Outlook

Express и переходе в созданную папку вы увидите в ней данные из архива.

Веб-почта

Одним из способов избавиться от беспорядка, вносимого

файлами электронной почты, является их хранение вне вашей системы. Например,

вы можете получить учетную запись на сайте Hotmail, Yahoo! или Google

и держать свои данные в хранилище в Интернете. Имеет смысл опробовать

разные хранилища, поскольку они предлагают разные услуги. Зачастую можно

получить учетную запись для пользования веб-почтой бесплатно, «расплачиваясь»

периодическим просмотром рекламы и следуя определенным ограничениям.

Все поставщики бесплатных услуг веб-почты предоставляют платные версии

с некоторыми полезными функциями, однако сначала опробуйте бесплатную

версию, чтобы сделать правильный выбор.
Работая с веб-почтой, вы столкнетесь с несколькими проблемами, требующими

разрешения. Разумеется, хранение данных в Интернете позволит вам оптимизировать

жесткий диск эффективнее, чем любое локальное приложение, однако не

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

Как правило, это небезопасно. Более того, некоторые системы (например,

Gmail от Google) могут выполнять поиск в ваших сообщениях без вашего

согласия. Прежде чем помещать данные в хранилище в Интернете, хорошо

задумайтесь, стоит ли рисковать их безопасностью. Более подробную информацию

вы можете найти на сайте ComputerWorld по адресу http://computerworld.com/securitytopics/

security/privacy/story/0,10801,92279,00.html?nas=PM-92279.
Даже оптимизировав жесткий диск за счет веб-почты, вы подменяете одну

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

вам нужно загружать из Интернета все элементы пользовательского интерфейса.

Соответственно, время просмотра электронной почты в режиме подключения

увеличивается даже при наличии высокоскоростного соединения. Кроме того,

нельзя рассчитывать на то, что веб-почта будет доступна в любой момент

времени. Другими словами, вы внезапно можете лишиться возможности просмотреть

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

ряда причин. Так, она позволяет работать с электронными сообщениями

с любого компьютера, подключенного к Интернету. Кроме того, веб-почта,

как правило, допускает одновременное использование нескольких учетных

записей (например, для деловой и для личной переписки) без внесения

дополнительной платы поставщику.

Алгоритмы компрессии данных: принципы и эффективность

Уровень сложностиСредний

Время на прочтение12 мин

Количество просмотров25K

Автор статьи: Артем Михайлов

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

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

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

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

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

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

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

Основные принципы алгоритмов компрессии данных

Рассмотрим основные принципы алгоритмов компрессии данных.

1. Удаление избыточности

Первый принцип компрессии данных заключается в удалении избыточности. Избыточность включает повторяющиеся данные и линейные зависимости. Повторяющиеся данные возникают, когда одна и та же информация появляется несколько раз. Для удаления повторяющихся данных, можно использовать методы, такие как метод Лемпеля-Зива-Велча или алгоритм RLE (Run-Length Encoding).

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

2. Замена данных более короткими представлениями

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

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

Замена символов и символьных последовательностей основывается на частотности их появления. Часто используемые символы или последовательности заменяются более короткими кодами, тогда как редкие символы или последовательности заменяются более длинными кодами. Для определения оптимальных замен используется алгоритм Хаффмана или алгоритм адаптивного арифметического кодирования.

3. Использование арифметического кодирования

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

4. Использование сжатия с потерями

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

Виды алгоритмов компрессии данных

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

Без потерь

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

1. Алгоритм Хаффмана

Алгоритм Хаффмана является одним из наиболее известных и широко используемых алгоритмов компрессии данных без потерь. Он был разработан Дэвидом Хаффманом в 1952 году и стал мощным инструментом для сжатия текстовых данных, а также других типов данных с неравномерным распределением символов.

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

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

image

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

После построения дерева Хаффмана, каждый символ получает свой префиксный код, пройдя по соответствующему пути от корня до листа. Путь к левому наследнику представляет «0», а путь к правому наследнику — «1». Таким образом, получается кодирование каждого символа без возможности двусмысленности декодирования.

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

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

2. Алгоритм Лемпеля-Зива-Велча (LZW)

Алгоритм Лемпеля-Зива-Велча (LZW) является еще одним важным алгоритмом компрессии данных без потерь. Он был разработан Абрахамом Лемпелем и Яаковом Зивом в 1977 году, а позже его улучшенная версия была предложена Терри Велчем.

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

Если текущая строка уже присутствует в словаре, LZW переходит к следующему символу и повторяет процесс. Если текущая строка не найдена в словаре, LZW добавляет ее в словарь и заменяет текущую строку ссылкой на предыдущий подходящий элемент словаря. Это позволяет уменьшить объем данных, заменяя повторяющиеся последовательности более короткими ссылками.

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

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

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

С потерями

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

1. JPEG

Алгоритм компрессии JPEG (Joint Photographic Experts Group) является одним из самых широко используемых алгоритмов с потерями для сжатия изображений. JPEG был разработан группой специалистов в области фотографии и изображений в 1986 году и стал международным стандартом.

Основная идея алгоритма JPEG заключается в разделении изображения на частоты и квантование каждой из них. Алгоритм использует преобразование косинусного ряда (DCT) для перевода пространственного представления изображения в частотное представление. Преобразование DCT представляет каждый блок пикселей изображения амплитуды различных частотных компонент, от наиболее низких частот до наиболее высоких.

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

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

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

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

2. MP3

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

Оценка эффективности алгоритмов компрессии данных

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

Коэффициент сжатия

1. Определение и расчет

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

Формула для расчета коэффициента сжатия выглядит следующим образом:
Коэффициент сжатия = (Исходный объем данных - Объем данных после сжатия) / Исходный объем данных

Пример:
Предположим, что у нас есть файл размером 10 МБ (мегабайт) и после сжатия его размер уменьшился до 2 МБ. Тогда коэффициент сжатия можно рассчитать следующим образом:
Коэффициент сжатия = (10 — 2) / 10 = 0.8 или 80%

2. Сравнение различных алгоритмов

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

Примеры алгоритмов сжатия данных и их коэффициенты сжатия:

  • Алгоритм A: Коэффициент сжатия — 0.9 или 90%
  • Алгоритм B: Коэффициент сжатия — 0.7 или 70%
  • Алгоритм C: Коэффициент сжатия — 0.85 или 85%.

Из приведенных примеров видно, что алгоритм A обладает лучшей эффективностью сжатия, поскольку он уменьшил размер данных на 90%. Однако, выбор алгоритма сжатия должен основываться на различных факторах, включая не только коэффициент сжатия, но и время, требуемое для сжатия и распаковки данных, а также требования по сохранению качества.

Потери качества при сжатии с потерями

1. Виды потерь качества

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

Виды потерь качества при сжатии с потерями:

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

2. Баланс между сжатием и сохранением качества

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

Реализация алгоритма компрессии Хаффмана на Python

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

Прежде чем начать, вам понадобится библиотека heapq, которая позволит нам создать минимальную кучу (min-heap) для реализации алгоритма Хаффмана. Установите ее, выполнив следующую команду:

pip install heapq

Перейдем к коду.

import heapq
from collections import defaultdict

class Node:
    def __init__(self, frequency, value):
        self.frequency = frequency
        self.value = value
        self.left = None
        self.right = None

    def __lt__(self, other):
        return self.frequency < other.frequency

def build_huffman_tree(data):
    frequencies = defaultdict(int)
    for char in data:
        frequencies[char] += 1

    heap = []
    for char, freq in frequencies.items():
        heapq.heappush(heap, Node(freq, char))

    while len(heap) > 1:
        node1 = heapq.heappop(heap)
        node2 = heapq.heappop(heap)
        merged = Node(node1.frequency + node2.frequency, None)
        merged.left = node1
        merged.right = node2
        heapq.heappush(heap, merged)

    return heap[0]

def build_code_table(root):
    code_table = {}

    def traverse(node, code):
        if node.value is not None:
            code_table[node.value] = code
        else:
            traverse(node.left, code + '0')
            traverse(node.right, code + '1')

    traverse(root, '')
    return code_table

def compress_data(data):
    root = build_huffman_tree(data)
    code_table = build_code_table(root)

    encoded_data = ''
    for char in data:
        encoded_data += code_table[char]

    return encoded_data

def decompress_data(encoded_data, root):
    current_node = root
    decoded_data = ''

    for bit in encoded_data:
        if bit == '0':
            current_node = current_node.left
        else:
            current_node = current_node.right

        if current_node.value is not None:
            decoded_data += current_node.value
            current_node = root

    return decoded_data

# Пример использования
data = "example data for compression"
encoded_data = compress_data(data)
print('Encoded data:', encoded_data)

decoded_data = decompress_data(encoded_data, build_huffman_tree(data))
print('Decoded data:', decoded_data)

Давайте пошагово проанализируем этот код.

1. Мы начинаем с определения класса Node, который представляет узел дерева Хаффмана. Узел содержит поле frequency для хранения частоты символа и поле value для хранения символа данных. Кроме того, у узла есть левый и правый потомки, представляемые полями left и right.

2. В функции build_huffman_tree мы сначала создаем словарь frequencies, где ключами являются символы данных, а значениями — их частоты. Затем мы создаем пустую кучу heap и помещаем каждый символ в виде экземпляра Node соответствующей частотой в эту кучу. Мы продолжаем объединять два узла с наименьшей частотой, пока не останется только один узел — корень дерева Хаффмана.

3. Функция build_code_table строит таблицу кодов для каждого символа, начиная от корневого узла дерева.

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

5. Функция decompress_data выполняет обратный процесс, используя корень дерева и строку битов сжатых данных, чтобы восстановить исходные данные.

6. Для примера мы создаем строку data и сжимаем ее с помощью функции compress_data. Затем мы декомпрессируем сжатые данные, используя функцию decompress_data и выводим на экран.

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

Заключение

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

Хотите узнать про алгоритмы больше? Регистрируйтесь на бесплатный вебинар от моих коллег из OTUS, где вас познакомят с маленьким чудом — алгоритмом поиска подстроки в строке Кнута-Морриса-Пратта. Это маленький, но очень непростой для понимания алгоритм, поэтому, чтобы в нём разобраться вы сначала построите конечный автомат для поиска шаблона, а потом оптимизируете его: замените двумерную матрицу перехода префиксным Пи-вектором и узнаете, как решить эту задачу за линейное время.

Зарегистрироваться на вебинар

Для того чтобы сэкономить место на внешних носителях (жёстких дисках, «флэшках») или ускорить передачу данных по компьютерным сетям, можно сжать данные — уменьшить их информационный объём, сократить размер файла.

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

Покажем, как можно сжать данные, на простом примере. Есть файл, в котором в 8-битной кодировке записаны сначала 100 русских букв А, а потом — 100 букв Б.

Каждая буква на рисунке занимает 8 бит. Определите информационный объём файла в байтах.

Теперь запишем те же самые данные иначе: сначала количество повторений первого символа, а затем — сам первый символ, потом так же для второго символа.

Каждая ячейка на рисунке занимает 8 бит. Определите информационный объём файла в байтах.

Объём файла уменьшился, это значит, что мы сжали данные.

Коэффициент сжатия — это отношение размера исходного файла I0 к размеру сжатого файла Iсж:

Rсж=I/ Iсж

Определите коэффициент сжатия файла в рассмотренном выше примере.

Почему же этот файл удалось так удачно сжать? Всё дело в том, что в нём были длинные цепочки повторяющихся символов, и мы применили алгоритм, который очень удачно их сжимает. Этот алгоритм называется кодированием цепочек одинаковых символов (по-английски — RLE: Run Length Encoding).

В файле записаны 100 различных символов. Определите коэффициент сжатия файла с помощью алгоритма RLE. Что означает полученное число?

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

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

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как откатить систему назад windows 10 после обновления
  • Как удалить дискорд из автозагрузки windows 10
  • Windows sfc windows resource protection could not start the repair service
  • Не читает флешки windows 10
  • Tapo tp link приложение для windows