Архивация данных в Windows 9x.
В системе Windows нет встроенных функций для работы с упакованными архивами, поэтому большинству пользователей приходится обзаводиться специальными утилитами и при этом решать проблему многообразия архивных форматов.
Емкость магнитных дисков и оперативной памяти постоянно растет, каналы передачи данных становятся все более мощными, и все же объем передаваемой и хранимой информации по-прежнему остается весьма значимым фактором, заставляющим нас использовать программные средства для работы с упакованными данными.
Архивы: форматы и инструменты.
Для начала несколько слов о терминологии. Принято различать архивацию и упаковку (компрессию, сжатие) данных. В первом случае речь идет о слиянии нескольких файлов и даже каталогов в единый файл — архив (примером использования такой технологии в чистом виде может служить формат TAR), во втором — о сокращении объема исходных файлов путем устранения избыточности (в данной работе рассматривается упаковка без потерь информации, т. е. с возможностью точного восстановления исходных файлов). Как правило, современные архиваторы обеспечивают также сжатие данных, являясь таким образом еще и упаковщиками, однако существуют и чисто “упаковочные” утилиты типа Gzip, сжимающие отдельные файлы, преобразуя их в формат Z или GZ.
При выборе инструмента для работы с упакованными файлами и архивами следует учитывать два фактора: эффективность, т. е. оптимальный баланс между экономией дисковой памяти и производительностью работы, и совместимость, т. е. возможность обмена данными с другими пользователями. Совместимость, пожалуй, сегодня более важна, так как по достигаемой степени сжатия конкурирующие форматы и инструменты различаются на проценты (но не в разы), а вычислительная мощность современных компьютеров делает время обработки архивов не столь существенным показателем, как, скажем, десять лет назад. Поэтому при выборе инструмента для работы с архивами важнейшим критерием для большинства пользователей (во всяком случае тех, для кого обмен большими массивами данных — насущная проблема), вероятно, является способность программы “понимать” наиболее распространенные архивные форматы, даже если эти форматы не самые эффективные.
Действие большинства средств упаковки основано на использовании алгоритмов сжатия, предложенных в 80-х гг. Абрахамом Лемпелем и Якобом Зивом. Многие популярные архивные форматы (ZIP, LZH, ARJ, ARC, ICE и т. п.) появились в эпоху господства DOS. Для работы с ними использовались специализированные архиваторы-упаковщики (утилиты PKZip/PKUnzip, LHA, Arj), которые позволяли архивировать целые каталоги и обеспечивали высокую степень сжатия для текстовых, графических и прочих типов файлов. Эти программы вызывались командной строкой с многочисленными параметрами, довольно громоздкими, хотя и обеспечивавшими богатые возможности. Вскоре стали появляться интегрирующие надстройки, с помощью которых можно было работать с различными форматами архивов не из командной строки, а с помощью меню.
По-настоящему прижились в мире персональных компьютеров, став сегодня фактическими стандартами, лишь немногие из старых архивных форматов — ZIP, ARJ и, пожалуй, еще LZH. Помимо этих традиционных форматов некоторые современные архиваторы позволяют работать с новым межплатформным форматом JAR (Java ARchive), который был создан специально для пересылки многокомпонентных Java-апплет, но может применяться и для работы с упакованными архивами общего назначения (в JAR применяются те же методы сжатия, что и в ZIP). Еще один формат, CAB, был предложен фирмой Microsoft, средства для работы с ним входят в состав Windows 9x; многие архиваторы, ориентированные на форматы ZIP и ARJ, позволяют также распаковывать CAB-архивы.
В настоящее время растет популярность формата RAR и соответствующих программ, созданных нашим соотечественником, челябинцем Евгением Рошалем. Но, хотя технология RAR обеспечивает высокую степень сжатия, стандартом она так и не стала, отчасти из-за не очень гибкого механизма работы с большими архивами. Во многих случаях удачным решением проблемы совместимости является создание архивов в виде самораспаковывающихся программ (EXE-файлов). Многие программы, ориентированные на какой-либо из традиционных типов архивов, способны создавать и EXE-архивы на базе своего “родного” формата. Но это решение не всегда обеспечивает достаточную гибкость (например, не позволяет без специальных инструментов выборочно извлекать файлы из архива).
С приходом Windows архиваторы обзавелись графическим интерфейсом. В некоторых случаях этот интерфейс лишь прикрывал собой ту или иную старую утилиту командной строки, но появились и полноценные, в том числе 32-разрядные, программы со встроенным механизмом для манипулирования архивами (как правило, какого-нибудь одного типа; самая известная ZIP-ориентированная программа такого рода — WinZip фирмы Nico Mak Computing).
В удобном виде манипуляции с командной строкой были “спрятаны” за интерфейсом популярных в России файловых оболочек типа DISCo Commander, FAR и особенно Windows Commander начиная с версий 4.хх. Эти оболочки позволяют путем настройки файлов конфигурации подключать любые внешние DOS-архиваторы командной строки (Arj, PKZip, ARC, LZH и т. п.) и организовывать прозрачное манипулирование архивами, представляя их в виде обычных каталогов. К сожалению, многие утилиты командной строки неспособны полноценно работать с длинными именами файлов (такая возможность появилась в программе PKZip лишь начиная с версии 2.5 для Windows, в Arj — начиная с версии 3.0), а организовать обмен файлами с архивом можно только в пределах окна оболочки. Кроме того, и сами программные оболочки, и вызываемые из их среды архиваторы командной строки — коммерческие продукты (как правило, условно-бесплатные), каждую приходится приобретать отдельно. В отличие от утилит командной строки, рассчитанных на работу с одним типом архивов, Windows-программы более универсальны с точки зрения совместимости по форматам и к тому же используют такие преимущества новой ОС, как возможность давать объектам длинные имена и переносить файлы из одного приложения в другое.
Рассмотренные программы по большей части ориентированы на работу с архивами в формате ARJ или ZIP, но, как правило, содержат встроенные средства (или допускают подключение внешних модулей) для распаковки и просмотра и архивов других типов. В общем, тесты показывают, что программы, ориентированные на формат ARJ (их, кстати, не так много), в среднем работают чуть быстрее аналогичных ZIP-архиваторов и к тому же обеспечивают больший коэффициент сжатия, однако архиватор, несовместимый с форматом ZIP, вряд ли можно сегодня считать полноценным инструментом. Все программы обладают удобными инсталляторами и стандартными средствами деинсталляции. Как правило, архиваторы могут выборочно регистрироваться в качестве средства для обработки распознаваемых ими типов файлов. Практически все архиваторы предусматривают работу с длинными именами объектов, однако если эти имена содержат русские буквы, то 16-разрядные программы их неузнаваемо искажают при упаковке. Наиболее удобные утилиты интегрируются в систему Windows 9x: позволяют упаковывать и распаковывать файлы с помощью перетаскивания, представлять архивы в виде обычных папок, вызывать контекстные меню для упакованных объектов, как для объектов “Рабочего стола” Windows. На архивирование 20-Мбайт массива данных программы тратили (в режиме с параметрами по умолчанию) от 1,5 (ArjFolder) до 4 мин (Q Cab). Наилучшую степень сжатия показала программа Q Cab: созданный ею EXE-архив оказался почти на 10% компактнее остальных архивов, которые, в свою очередь, различались по объему на 1—5%.
Лучшие из рассмотренных программ относятся к категории условно-бесплатных, некоммерческие разработки уступают им в разнообразии функций, совместимости и удобстве (хотя и не в эффективности сжатия). Лидером обзора являются Zip-ориентированные утилиты ZipMagic фирмы Mijenix, Zip Explorer Pro компании Aeco Systems и уже упомянутая WinZip фирмы Nico Mak Computing. Все они обеспечивают совместимость с большим числом форматов, удобны в использовании. Первые две программы, правда, выгодно отличаются от WinZip возможностью работы с архивами как с папками. Практически не уступает лидерам по удобству и возможностям программа Е. Рошаля WinRAR, но она ориентирована прежде всего на не очень распространенный формат RAR, хотя и обеспечивает большинство необходимых функций для манипулирования Zip-архивами. Тем, кто предпочитает бесплатные утилиты, можно рекомендовать для работы с Zip-архивами программу Eazy Zip 98, а для работы с ARJ-архивами — ArjFolder.
ArjFolder 2.85
Бесплатный архиватор ArjFolder, созданный независимым французским программистом Рафаэлем Мунье, предназначен, как нетрудно догадаться по названию, для работы с ARJ-файлами. Фактически ArjFolder с помощью функций “Проводника” Windows 9x строит программную оболочку для DOS-утилиты Arj (эта вызываемая из командной строки утилита входит в состав дистрибутива; вообще говоря, она распространяется условно-бесплатно, так что называть ArjFolder бесплатным пакетом не совсем правильно). Дистрибутив ArjFolder представляет собой самораспаковывающийся EXE-модуль объемом 730 Кбайт. В ходе инсталляции пользователю предлагается установить ArjFolder вместе с утилитой Arj или без нее. Для полноценной работы с архивами следует выбрать первую возможность, в противном случае программа не сможет формировать и пополнять архивы, а ограничится только просмотром содержимого архивов и их распаковкой.
После инсталляции архиватор встраивается в “Проводник” Windows 9x. В системном меню “Пуск| Программы” появляется раздел с программой настройки ArjFolder, предназначенной для управления привязкой архиватора к файлам распознаваемых им типов (программа позволяет создавать, пополнять и распаковывать ARJ-файлы, а также просматривать и распаковывать сжатые файлы и архивы в форматах ACE, ZIP, GZIP, TAR, CAB и RAR). Кроме того, в контекстное меню объектов Windows добавляется команда Add to Arj (“Включить в Arj-архив”). С ее помощью можно создавать или пополнять ARJ-архивы и самораспаковывающиеся EXE-файлы.