Упаковка и сжатие


Одна из наиболее часто выполняемых задач с информацией — это уменьшение объёма данных для хранения и пересылки. Поскольку текстовая информация обладает свойством большой избыточности (то есть реальное содержание файлов куда меньше, чем их размер), то её можно без потерь структуры и содержания сжать в несколько раз (до 3-5 раз, а иногда и более), а затем восстановить до прежнего состояния. Надо сказать, что исполняемые файлы, документы OpenOffice.org, библиотеки операционной системы тоже подлежат сжатию, но эффективность при этом куда меньше. Кроме сжатия, информацию также можно подвергать упаковке, то есть помещать несколько файлов в один файл, называемый архивом. Сжатие и упаковка могут быть разделены, но большинство программ, выполняющих сжатие информации, одновременно имеют и функциональность упаковщиков. Что мы выигрываем, сжимая и упаковывая информацию? Из нескольких тысяч (например) файлов мы получаем один, и размер этого единственного файла в несколько раз меньше, чем суммарный размер тех файлов, что в него упакованы. Даже если не учитывать сжатие, при хранении и передаче через сетевые соединения один файл более экономичен, чем несколько файлов такого же суммарного размера. Когда же счёт идёт на сотни и тысячи файлов, экономия становится очевидной.

Существует множество утилит для сжатия файлов, только их перечисление заняло бы целый абзац. В операционной системе Windows наиболее популярные утилиты оснащены графическим интерфейсом. В Линукс с этими утилитами, в основном, работают из командной строки. Однако для удобства пользователей графической среды создана программа, которая объединяет в едином графиче­ском интерфейсе все утилиты сжатия и упаковки, — это программа Ark. Более того, программа Ark интегрирована в файловый менеджер Konqueror, что поз­воляет упаковывать и распаковывать информацию, не запуская отдельной про­граммы, — прямо из контекстного меню файлового менеджера.

Рассмотрим задачу: в моём домашнем каталоге есть папка с документами MyDoc. Мне нужно скопировать эту папку на дискету, чтобы перенести её на другой компьютер.

Вызвав на папке контекстное меню и выполнив команду Свойства, я увидел, что общий размер папки — 2,5 Мб. Поскольку я знаю, что объём дискеты — 1,44 Мб, мне понятно, что папка на дискету не поместится. Вот и повод применить программу архивирования/сжатия файлов Ark.

Я щёлкаю правой кнопкой мыши на папке MyDoc и из контекстного меню выбираю команду Упаковать, а затем её вложенное меню Упаковать в.

Как видите, нам предоставлен большой выбор, однако, надо заметить, тут есть некоторая неточность. Если межплатформенные программы создания архивов, такие как zip или 7z объединяют архиватор и программу сжатия в одной утилите, то «родные» утилиты Линукс разделяют эти функции. Есть отдельная утилита создания архивов tar и отдельные утилиты сжатия gzip (создаёт файлы с расширением . gz) и bzip2 (файлы .bz2), работающие с одним файлом. Таким образом, сжать мы можем только один файл, но не папку. Для того чтобы сжать утилитами Линукс папку с файлами, нужно сначала из папки с файлами получить один файл архива (. tar), а затем сжать его программой gzip или bzip2.

Поэтому для папки с файлами у нас на самом деле всего 4 выбора: tar.gz, tar.bz, zip или 7z. Поскольку мне интересно, каким способом файлы сожмутся лучше, я поочерёдно выполню каждую из этих команд. При выполнении сжатия утилитами Линукс на экран будет выведено окно, показывающее, что процесс идёт.

Во время применения утилит zip и 7z на экран выводится дополнительное окно, позволяющее ввести пароль для архива, если вы хотите защитить ваши данные от несанкционированного чтения.

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

Как видите, утилитой с наибольшим коэффициентом сжатия оказалась про­грамма 7z. Остальные результаты также очевидны и говорят сами за себя (при этом для поставленной задачи — разместить папку с документами на дискете — для нас подходят все 4 результата). Однако есть вещи, которые трудно оценить при малом объёме информации и которые могут стать совершенно невыносимыми при больших объёмах. Я говорю о времени, затраченном на архивирование и сжатие. В этом смысле утилита zip будет самой быстрой, а утилита 7z при боль­ших объёмах будет выполнять операции нестерпимо медленно. Так, выигрывая в одном, мы почти всегда проигрываем в другом.

Есть ли ещё какие-то нюансы, которые я упустил из виду? Да, конечно. Я сжимал папку, в которой находились документы и другие папки с названиями на английском языке. А как поведут себя утилиты сжатия и архивирования, если язык будет русский?

Хуже всех себя ведёт в этом вопросе утилита zip. Она ухитряется испортить имена файлов и папок на русском языке даже при упаковке и распаковке внутри операционной системы Линукс (то есть при переносе информации, предположим, с одной Линукс-машины на другую). А уж при переносе информации с Линукс-машины на Windows-машину утилита zip корёжит имена файлов ещё больше (хотя трудно себе это представить).

Утилиты gzip и bzip2 корректно работают с русскими именами файлов и па­пок внутри Линукс, но портят их при переносе на Windows-машины. Архиватор 7z в этом отношении самый порядочный, он прекрасно сохраняет правильное написание при переносе архивов как с Линукс на Windows, так и обратно.

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

  1. Если файлы с русскими именами упаковываются на Линукс-машине, а распаковываться будут под Windows, используйте 7z.
  2. Если файлы с русскими именами упаковываются и распаковываются на
    Линукс-машине, используйте gzip, когда важна скорость, и 7z или bzip2,
    когда нужно добиться наибольшего сжатия.
  3. При английских именах файлов можно использовать любую утилиту, в зависимости от того, что для вас важнее — скорость сжатия или размер ар­хива.

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

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

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

Распаковать в имя _ архива — в текущем каталоге будет создана папка с именем архива, и в эту папку будет распаковано всё содержимое архива (включая вложенные в него папки. Так что если в архиве есть папка MyDoc, то она тоже будет создана внутри папки с именем архива).

Распаковать в… — вы можете выбрать место, куда будет распаковано со­держимое архива.

Как я уже говорил, кроме переноса или передачи информации между ком­пьютерами, архивирование может применяться для хранения редко используе­мой информации или для создания резервных копий (для восстановления важ­ной информации в случае её утери. Вдруг диск, на котором хранятся важные файлы, имеет дефект? Сегодня он работал, а завтра — перестал, и извлечь из него содержимое после поломки можно не всегда. К сожалению, это не такое уж редкое событие — аварийная ситуация с диском).

В Xfce нет программы Ark, её заменяет программа Xarchiver. Всё, что мы говорили о форматах сжатия, остаётся в силе, поскольку Xarchiver так же, как и Ark, — это графический интерфейс к утилитам командной строки. Но в отличие от Ark, Xarchiver в Лёгком Линукс не интегрирован с файловым менеджером, поэтому использовать его нужно как отдельную программу.

Для запуска Xarchiver нужно выполнить команду Меню Xfce→ Инстру-менты→>Xarchiver. На экран будет выведено окно программы.

Как выполнить в этом окне задачу сжатия папки, которую я успешно выпол­нил в программе Ark?

Первым делом нужно щёлкнуть на кнопке Создать новый.

На экран будет выведено окно, в котором нужно указать имя создаваемо­го архива, папку, в которой вы создаёте архив, а также выбрать формат (тип архива), в котором будет создан архив. Я дал архиву имя Папка с документами и сохраняю его в своей домашней папке в формате 7z.

Для того чтобы выбрать для сохранения архива другую папку, можно щёлк­нуть на строке Просмотреть другие папки. После задания всех параметров я щёлкаю на кнопке Создать — и новый архив, пока ещё пустой, создан. Теперь нужно в этот архив уложить мою папку MyDoc. Для этого я щёлкаю на кнопке добавления файлов к архиву.

На экран будет выведено окно. Я найду в нём папку MyDoc, выделю её при по­мощи мыши и затем щёлкну на кнопкеДобавить. Несколько секунд будет идти

добавление файлов в архив (о чём можно будет прочитать в строке состояния в нижней части окна), затем процесс будет завершён.

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

Если на другом компьютере также будет Xfce, то двойной щелчок на значке архива в файловом менеджере запустит Xarchiver и откроет в нём содержимое архива. Затем нужно просто щёлкнуть на кнопке Извлечь файлы и вы получите содержимое архива в распакованном виде. Сам архив после этого можно удалить.

Оставить комментарий

*

Реклама