Помните Arj? Это архиватор был такой в стародавние времена :-) Если помните, то помните наверняка и про интересную особенность тогдашних архиваторов: если файл сжать сначала одним (например, arj), а потом другим (скажем, zip), то итоговый размер получался меньше, чем при использовании каждого из этих архиваторов по отдельности (или одного и того же два раза). Причина этого заключалась в несовершенстве алгоритмов сжатия. Принцип работы любого архиватора заключается в устранении избыточности информации: как правило в любом файле некоторые байты (или даже группы байтов) повторяются чаще, нежели остальные. Архиватор заменяет их более короткими блоками, в результате чего размер файла становится меньше, а вместо, например, осмысленного текста он теперь представляет псевдослучайную последовательность непонятных символов. Так вот, когда развитие алгоритмов сжатия только начиналось, архиваторы устраняли избыточность не полностью (хотя сами «считали», что уже как бы всё), при этом другой алгоритм мог «дожать» файл ещё
В настоящий момент все современные архиваторы используют возможности своих алгоритмов по максимуму, и вышеописанный способ не работает (по этой же причине не сжимаются картинки в jpeg или фильмы: сжатые картинки и фильмы по сути своей являются архивами, а с точки зрения другого архиватора — случайной последовательностью). Однако, в некоторых случаях архивация файлов в два этапа позволяет уменьшить размер архива в несколько (!) раз. Об этом и пойдет речь в статье.
Самым популярным сейчас является архиватор (точнее, формат) Zip. Самым популярным, но далеко не самым лучшим, однако, если вы хотите, чтобы файл можно было распаковать всегда и везде, лучше использовать именно его. Во всех хороших архиваторах присутствует возможность создания «непрерывного архива», когда несколько упаковываемых файлов обрабатываются как единый поток. При упаковке однотипных файлов это позволяет уменьшить размер архива за счет того, что степень избыточности у них похожая и повторяющиеся фрагменты одинаковые. В Zip такой возможности нет, все файлы он сжимает по отдельности. Поэтому, если вам нужно упаковать несколько файлов, есть смысл предварительно записать их последовательно друг за другом. Логичнее и проще всего сделать это средствами самого архиватора: просто упакуйте файлы с настройкой «Без сжатия», содержимое их при этом не изменится, но вместо нескольких файлов получится один. После этого полученный архив упакуйте с максимальными настройками. Если файлов много и они похожи (
Но это ещё не всё :-) Если вы пользуетесь, например, пакетом OpenOffice.org, то, возможно, знаете, что документы в нём представляют собой несколько
- Переименовываем, например, .odt файл в.zip.
- Распаковываем его содержимое, запаковываем обратно с настройкой «Без сжатия» и переименовываем обратно в .odt: размер файла увеличится, но он будет продолжать нормально открываться, потому что это
всё-таки zip-архив . - Если теперь запаковать его хорошим архиватором (например,
7-zip *), то размер полученного файла будет существенно меньше, чем был изначально.
Конечно, описанные здесь хитрости не рассчитаны для ежедневного использования, но в случае, когда, например, файл «не полазит» в почту —
__________
This work is licensed under a Creative Commons Attribution-Noncommercial 3.0 Unported License.
0 коммент. :
Отправить комментарий