Вместо предисловия
Эта статья посвящена одному из самых мощных в мире средств управления архивами. В этой статье нет рассказа о том, зачем нужны архивы, как их создавать, как добавлять в них файлы и как вытаскивать из них информацию. Предполагается, что читатель уже владеет этой информацией и использует какое-нибудь средство управление архивами. Таких средств очень много, они разные и по интерфейсу и по функциональности. Мы поговорим об управления архивами RAR и о средстве управления, ориентированным на платформу Windows, под названием - WinRAR. Несмотря на то, что самыми популярными архивами, на сегодняшний день, является ZIP, именно RAR обладает большим потенциалом и большей функциональностью. Эта статья именно о том, что отличает RAR от обычных архиваторов. К сожалению, даже те, кто используют WinRAR в повседневной работе, не используют весь его потенциал, поэтому статья будет интересна и тем, кто использует WinRAR, и тем, кто пока использует другие архиваторы. Статья не претендует на описание всех настроек WinRAR и не может служить заменой руководства пользователя. В статье просто сконцентрировано внимание на некоторые аспекты использования WinRAR.
Вспомним былое...
Вспомним далекий 1993 год. В это время, в мире сжатия информации, уже начал терять популярность мега-продукт того время - архиватор LHA, он сгибался под ударами новых имен: ARJ и ZIP. Новые продукты сжимали информацию быстрее и сильнее чем старый, добрый LHA. Конечно, в то время еще можно было встретить одичавших фанатов ZOO или ICE, но скорость ZIP’а и безграничные настройки ARJ делали свое дело. Робкие попытки вмешаться в битву титанов, ни к чему не приводили. Были, конечно, интересные разработки, вроде LIMIT или AIN, но они остались в памяти только узкого круга людей.
Чтобы взойти на Олимп, нужно было что-то экстраординарное, нужен был продукт, способный потрясти воображение пользователей, нужно было что-то такое, что сразу привлекло бы к себе внимание и не отпускало его никогда. Именно, тогда, в тот далекий 1993 год, никому не известный программист Евгений Рошал представил первую публичную версию нового, "убойного" архиватора. Так появился RAR 1.30...
Отвлечемся и расскажем немножко о теории сжатия информации. Большинство программ сжатия основано на алгоритмах Лемпеля-Зива, так называемое семейство алгоритмов LZ. Основная идея алгоритма заключается в поиске повторяющихся строк и подстрок, такие строки сохраняют в специальном словаре, а сами строки заменяются специальными кодами-ссылками. Эти коды однозначно характеризуют строки, попавшие в словарь. Строки, попавшие в словарь, но уже редко встречающиеся, постепенно вытесняются из словаря и записываются на диск. Это очень и очень упрощенное описание того, что происходит при сжатии, на самом деле все гораздо сложней. Но поскольку статья посвящена не методам сжатия информации, скажем только, что размер словаря очень сильно влияет на степень сжатия и скорость работы. Чем больше размер словаря, тем лучше сжатие и медленнее скорость, и наоборот - чем меньше размер словаря, тем слабее сжатие, но скорость возрастает.
Но вернемся в 1993 год. Едва появившись, RAR сразу привлек к себе всеобщее внимание. Ряд несомненных преимуществ выделяли его сразу: он лучше сжимал информацию, он мог создавать непрерывные или solid архивы (что это такое - мы поговорим позже), и, наконец, у него был псевдографический интерфейс. Именно наличие псевдографического интерфейса принесло ему всеобщую любовь и обожание. Больше не нужно было мучаться с командной строкой, набирая в ней многочисленные и не слишком понятные команды, не нужно было искать в бесконечном списке ключей нужный. Псевдографический интерфейс давал удобный доступ к командам, создавал удобный механизм управления архивами, он давал неискушенным пользователям наглядный и простой механизм создания архивов и извлечения из них данных. Он так понравился, что стали даже появляться утилиты, реализующие псевдографический интерфейс у обычных архиваторов. Вспомним, хотя бы, утилиту SupARJ (от слова SuperARJ). Она позволяла с помощью псевдографического интерфейса использовать ARJ для управления архивами, являясь, по сути, надстройкой над ARJ.
Вот так выглядела одна из первых версий RAR’а.
Хотелось бы обратить внимание на интересный параметр "Packing speed" - скорость упаковки. Первые версии RAR показывали, с какой скоростью пакуется информация. Начиная c 1.50, этот параметр исчез к нашему всеобщему сожалению...
Этапы большого пути
За 10 лет пор RAR прошел длинный путь развития, если обернуться назад и кратко описать значительные вехи этого пути, то получится примерно вот так:
Версия 1.30 - первый публичный релиз. Особенности - псевдографический интерфейс, возможность создания непрерывных или solid архивов, высокая степень сжатия. В отличие от ARJ и ZIP, которые имеют размер словаря 32K, RAR создает архивы со словарем 64K.
Версия 1.50. Полностью изменен формат архивов. Предыдущий был ориентирован исключительно на MS DOS, новый вариант позволил заняться как переносом RAR на другие платформы, так и расширением формата, то есть добавлением дополнительных информационных блоков. Изменен алгоритм шифрования, в версиях 1.3-1.4 шифрование практически отсутствовало. Появилась версия для RAR для OS/2.
Версия 2.0. Переписано ядро RAR. Теперь ядро стало полностью независимым от процессора и от операционной системы. Пользователь теперь может создавать и работать с архивами, у которых разный размер словаря (64K, 128K, 256K, 512K, 1024K). Появилась возможность добавления избыточной информации в архив для последующего восстановления испорченных архивов. Появился режим сжатия мультимедийной информации. Существенно усилен алгоритм шифрования данных. Появились версии для Windows, Linux, Mac, Solaris.
Версия 3.0. Изменен алгоритм поиска строк в словаре, что существенно повысило производительность. Теперь можно создавать архивы со словарем размером в 2048K и 4096K. Переработан алгоритм сжатия мультимедийной информации. Добавлен алгоритм сжатия PPMII Дмитрия Шкарина, который превосходит все существующие методы сжатия текстовой информации. Изменен алгоритм шифрации, теперь RAR использует непробиваемый и не взламываемый AES.
Непрерывные архивы
Если попытаться создать архив, то WinRAR предложит множество настроек для создаваемого архива, пользователи их обычно игнорируют, оставляя настройки, выставленные по умолчанию, но если разобраться, там можно встретить много интересного.
Первое, о чем хотелось поговорить - скромный параметр "Создать непрерывный архив". Непрерывные, или Solid архивы - это особый тип архивов, при создании которых содержимое словаря сжатия не сбрасывается при добавлении следующего файла. Немножко не понятно, не правда ли? Попробуем разобраться, в чем тут дело. Классические архиваторы используют словарь сжатия для хранения повторяющихся строк. Для каждого файла в архиве создается свой собственный словарь. Когда в архив поступает следующий файл, то вновь, с нуля, строится словарь сжатия. Основная идея непрерывных архивов состоит в том, что не нужно каждый раз создавать словарь с нуля, а нужно попытаться использовать его для следующего файла. В таком случае, если файлы по структуре данных похожи, можно получить выигрыш в сжатии, практически без потери скорости. Выигрыш обычно бывает всегда, но его величина - вещь непредсказуемая. Непрерывный архив, по сравнению с обычным, может занимать места в несколько раз меньше чем простой, а иногда выигрыш может составить всего несколько процентов. Основное правило такое - чем больше файлов в архиве и чем они меньше, тем больше выигрыш. Но как показывает практика, обычно выигрыш составляет 25%-30%. По-моему, неплохо.
Однако у непрерывных архивов есть одно неприятное свойство: если нужно распаковать один файл из середины архива, то WinRAR будет вынужден распаковать все файлы, что стоят в архиве перед нужным. Получается, что такие операции, как удаление файлов из архива, добавление новых файлов в архив, распаковка некоторых файлов, занимает гораздо больше времени. Поэтому если в дальнейшем с архивом предполагается производить интенсивные операции, то лучше отказаться от использования непрерывных архивов, но такие случаи довольно редки. Обычно архив просто создают, и затем целиком распаковывают, операции по изменению содержимого архива встречаются не часто.
Интересно то, что многие использовали этот подход еще до появления RAR. Правда, приходилось делать это в два этапа, но ради выигрыша в сжатии народ шел на такие жертвы. Если взять архиватор, который не поддерживает создание непрерывных архивов, и заставить его создать архив с нулевым сжатием, а потом создать еще один архив, куда поместить первый, то можно получить что-то вроде непрерывного архива. Этот метод активно применялся среди программистов для лучшего сжатия исходных текстов программ. При использовании WinRAR подобные ухищрения, к счастью, не нужны.
Восстановление информации
Вторая настройка, на которую хотелось обратить внимание - "Информация для восстановления".
Ни для кого не секрет, что архивы временами портятся. Иногда архив лежит на диске никому не нужный годами, и вдруг, когда он понадобился, выясняется, что архив испорчен. Почему так бывает и кто виноват, выяснить, обычно не удается. Иногда архивы "бьются" при скачивании с FTP, когда связь плохая и закачка то прерывается, то возобновляется. Иногда не читается дискета или CD с очень важным архивом. В этом случае, используя различные ухищрения можно все-таки считать данные, но при распаковке появляется грозное сообщение о том, что архив поврежден. В общем, все может случиться. Достаточно изменить всего один бит информации в архиве, как этот архив откажется распаковываться и информация будет потеряна.
WinRAR, однако, может помочь в этой беде, если только об этом позаботились предварительно. Если активировать параметр "Информация для восстановления", то WinRAR будет добавлять в архив специальную информацию, которая поможет спасти данные в случае повреждения архива. Информация для восстановления добавляется в архив блоками, как бы "размазываясь" по архиву. Размер архива при добавлении такой информации увеличивается. В настройках можно выбрать, на сколько нужно увеличить размер архива
По умолчанию размер архива увеличивается на 1%. Это базовый, минимальный уровень. Чем больше информации для восстановления добавляется в архив, тем более тяжелые повреждения можно восстановить. 1% позволяет восстановить последовательно поврежденные данные длиной до 0,6% от общего объема архива. То есть, если размер архива равен 1Mb, то при 1% информации для восстановления, можно восстановить блок поврежденной информации размером в 1048576 * 0.006 = 6291 байт (или около того, WinRAR восстанавливает информацию блоками по 512 байт, поэтому число должно быть кратно 512). Это вполне достаточно для восстановления архива вытащенного c плохой дискеты, или с поцарапанного CD.
Восстановление испорченного архива выглядит вот так
Как мы видим, при восстановлении архива fart.rar, WinRAR создал специальный архив fixed.fart.rar, в который и будут помещены все восстанавливаемые данные. Затем WinRAR обнаружил в архиве присутствие информации для восстановления, и без труда восстановил поврежденные информационные блоки.
Возможность добавления информации для восстановления - очень мощное средство. Рекомендуется выставить эту настройку для всех архивов по умолчанию. Тогда если архив будет поврежден, то шансы на его восстановления резко возрастут. Лучше всего для всех обычных архивов добавлять один процент избыточной информации, а для важных, потеря данных в которых критична, выставлять 5%. Думаю стоить пожертвовать небольшим увеличением размера архива, ради возможности восстановить информацию.
Блокировка архивов
Еще одна полезная опция, которой редко кто пользуется, является возможность блокировки архива.
Блокировка архивов - очень полезная вещь, но, к сожалению, не вполне востребованная. Заблокированный архив невозможно изменять, из него нельзя удалять файлы, нельзя вносить в него новые и нельзя обновлять уже существующие. Единственно, что можно сделать с таким архивом - просто распаковать его или отдельные файлы из него. Для чего это нужно? В основном для того, чтобы нельзя было случайно изменить содержимое архива. В некоторых случаях целостность архива - весьма важна, и блокировка архива помогает решить эту проблему.
Использование профилей
WinRAR содержит много различных настроек управления архивами, и каждый раз выставлять их не слишком удобно. Поэтому в WinRAR реализован механизм профилей архивов.
Выставив настройки один раз их можно сохранить как профиль, и затем одним нажатием мыши вызывать уже настроенный профиль, что очень и очень удобно.
Если порыться глубже, то можно понять, что от настроек сжатия очень сильно зависит результат. Если выбрать максимальные настройки сжатия, то WinRAR все великолепно сожмет, но этот процесс займет очень много времени. Поэтому лучше создать один профиль с максимальным и медленным сжатием, а другой очень быстрый, но сжимающий похуже. Основными параметрами, которые влияют на процесс, являются "Метод сжатия" и "Размер словаря"
Для лучшего сжатия их необходимо выставить соответственно в "Максимальный" и "4096", также очень рекомендуется для максимального сжатия использовать непрерывные архивы. Даже если в архиве всего два файла, то благодаря непрерывному архиву можно выиграть несколько процентов. Для быстрого сжатия лучше использовать размер словаря в 64, а метод сжатия выставить - "Обычный". Если вместо "Обычного" выставить "Быстрый", то скорость возрастет не на много, а вот уровень сжатия сильно ухудшится. Самое интересное, что даже при таких, быстрых настройках, WinRAR будет сжимать лучше, чем ZIP. Только не забывайте добавлять избыточную информацию для восстановления, с ней - как-то спокойнее...
Использование паролей
У каждого из нас всегда найдется какая-то личная информация, которую никому показывать не хочется, и если она вдруг даже случайно попадется кому-то на глаза, то будет весьма и весьма неприятно. Использование архивов, в которых файлы шифруются по паролю, может помочь решить проблему. Но не все так хорошо, как хотелось бы. В ZIP’е, например, используется очень слабая защита по паролю, ее и шифрованием назвать - язык не поворачивается. Пароль к ZIP можно подобрать даже в домашних условиях. Если не хочется ждать, то в Интернете даже есть фирмы, которые специализируются на взломе ZIP архивов. Выглядит это так: по специальному адресу посылается ZIP-архив, пароль к которому нужно подобрать, через пару дней приходит ответ, что пароль успешно подобран, и после небольшой оплаты вам по почте приходит пароль к архиву. Такие фирмы умеют даже подбирать пароли, набранные русскими буквами. Как видим все просто, быстро и легально.
С WinRAR - все гораздо сложнее. Дело в том, что WinRAR, начиная с версии 3.00, использует алгоритм шифрации AES, который с недавнего времени является официальным американским криптостандартом. Стойкость этого алгоритма к взлому не вызывает сомнения. Несмотря на наличие подбиралок пароля к WinRAR, взлом путем простого перебора пароля весьма сомнителен. Перебор паролей происходит очень медленно, и процесс может растянуться на миллионы лет (это не шутка, подбор пароля действительно может занять пару миллионов лет). Но тут есть единственное "но". Дело в том, что с помощью перебора можно действительно подобрать пароль, но тут WinRAR не причем. Дело в том, что в Интернете можно встретить огромные password-list, так называемые списки паролей. В такие списки заносятся все слова, все имена, названия улиц, клички животных, которые могут использоваться в качестве паролей. Например, если использовать пароль "Metallica", то взлом его с использованием списка паролей никакой проблемы не составит. За несколько минут программа перебора паролей найдет его, если использовать password-list.
Отсюда следует несколько советов. Первое - минимальная длина пароля должна составить не менее 6 символов - чем больше символов, тем сложнее взломать архив. Второе - не используйся простых слов в качестве пароля. Перебор по списку занимает минимальное время, списков паролей - очень много, есть и русские, причем не спасают даже русские слова, набранные в английской кодировке. Лучше всего брать простое слово и изменять его, добавляя цифры, например, "Metallica2000" или "Meta2000llica", или пишите слова с ошибками. Таких паролей в словаре нет, и архивы будут надежно защищены.
В WinRAR также реализована очень удобная опция "Шифровать имена файлов"
Это дает очень важную особенность - не позволяет без знания пароля видеть внутреннюю структуру архива. Обычные пароли в ZIP скрывают от чужих глаз только содержимое файлов, но имена файлов - видны. Иногда по именам файлов в архиве можно многое узнать. В WinRAR реализован как механизм обычных архивов, так и механизм архивов, в который шифруется все - даже имена файлов. Поэтому для полной секретности не забывайте ставить эту опцию.
Выводы
Эта статья описывает только небольшое количество настроек WinRAR. Очень богатый функционал делает его незаменимым инструментом как у простых, так и у очень продвинутых пользователей. Учитывая то, что WinRAR может помимо своих собственных архивов RAR, может создавать архивы ZIP, а умеет распаковывать архивы CAB, ARJ, LZH, TAR, GZ, ACE, UUE, BZ2, JAR, то один WinRAR заменит целую кучу утилит на рабочем месте.
Формат RAR не ограничен по количеству файлов в архиве, также не ограничен по размеру архива, что выгодно отличает его от ZIP. WinRAR позволяет паковать мощнее, а создание непрерывных архивов, режим сжатия мультимедийной информации, добавление информации для восстановления и мощная система шифрации делает WinRAR одним из лучших архиваторов в мире на сегодняшний день. Кому нужен ZIP :)?