Упаковщики и архиваторы в LinuxX-Stranger Сегодняшняя статья предназначается для начинающих пользователей Linux: мы обсудим такие программы, как упаковщики и архиваторы, и то, чем же они представлены в Linux. Но прежде чем начинать свой рассказ, позволю сделать маленькое отступление. Буквально пару дней назад вернулся я из поездки в Крым. Был я там с друзьями на знаменитом винзаводе "Массандра", чтобы пройти дегустацию великолепных вин производства данного предприятия. Пока мы сидели в холле, ожидая начала мероприятия, я обратил внимание на одну худенькую девушку, которая стояла у стойки, где продавались вина эксклюзивного разлива. Каково же было мое удивление и восхищение, когда я заметил в руках у девушки полиэтиленовый пакетик с изображением Тукса и знакомой надписью "Linux"! Вот так! Людей, которым нравится Линукс, можно найти где угодно!:) Ну, а теперь вернемся к нашей теме. Упаковщики и архиваторы — в чем разница? Такие программы, как pkzip/pkunzip и arj, знакомые вам еще по ОС Windows, совмещают две разные функции: архивирование, т.е. помещение содержимого нескольких файлов в один (с сохранением информации о каждом файле), и упаковку, т.е. сжатие файла. В Unix-подобных операционных системах, в т.ч. и в Linux, эти функции по историческим причинам реализуются отдельными программами: для упаковки используются compress, gzip, bzip2, а для архивации — tar. Замечание: программы-архиваторы разрабатывались в первую очередь для резервного копирования (обычно на ленту). Кроме tar, есть еще программы cpio и dump/restore, но их мы рассматривать не будем. Кроме того, в любом из *nix есть программа ar, которая хоть и умеет делать архивы из произвольных файлов, в первую очередь предназначена для создания библиотек объектных файлов. У каждого архиватора и упаковщика есть свое стандартное расширение для имени файла (в таблице приведены наиболее встречающиеся).
Упаковщик compressСompress упаковывает указанный ему файл и добавляет к имени расширение .Z. Пример использования: Упаковщик gzipGzip был создан как более мощная замена для compress. Используется он точно так же: Упаковщик bzip2Bzip2 был создан сравнительно недавно — в 1996 году. Он использует при паковке алгоритм Burrows-Wheeler (вместо Lempel-Ziv, применяемого в compress/gzip/zip), что позволяет достигать еще больших степеней сжатия. Платой за это является несколько большее время упаковки.
Используемые bzip2 ключи почти идентичны gzip'овым. Но bzip2 по умолчанию использует наилучшее сжатие ("-9"): Общие свойства compress, gzip и bzip2:• Во-первых, при упаковке и распаковке эти программы "заменяют" исходный файл упакованным/распакованным следующим образом: они читают содержимое исходного файла и пишут результат в файл с таким же именем, но с добавлением/удалением расширения (.Z/.gz/.bz2), а затем удаляют исходный файл. Поэтому, если на диске недостаточно места для обоих файлов одновременно (или есть ограничения по дисковой квоте), то упаковка/распаковка может не удаться. • Во-вторых, при упаковке и распаковке все они стараются сохранить максимум информации о файле — упакованному/распакованному файлу устанавливаются те же права доступа и время, что и исходному. • В-третьих, если не указывать имя файла, то упаковываться/распаковываться будет стандартный ввод, а результат отправляться на стандартный вывод. Это позволяет использовать упаковщики в конвейерах, к примеру, сразу ужимая результаты какой-либо вычислительной программы. • В-четвертых, если указать ключ "-c" ("cat"), то вместо замены исходного файла результат будет отправлен на стандартный вывод. • В-пятых, для каждого из форматов есть программа, позволяющая просмотреть содержимое файла, не распаковывая его на диске. Для .Z и .gz это zcat, zmore и zless, а для .bz2 — bzcat и bzless. Кроме того, по файлам .Z и .gz можно вести поиск "a-la grep" — для этого служит программа zgrep. Замечание: Вообще-то, zcat — это синоним "gunzip -c", а zless и bzless — очень простые скрипты. Поскольку zgrep также является скриптом, то несложно написать его аналог для bzip2. Архиватор tarПервоначально tar был разработан для резервного копирования на ленту, отсюда и его название — Tape ARchiver. Но поскольку возможность помещать большое количество файлов внутрь одного чрезвычайно удобно (к примеру, для хранения и передачи групп файлов, например, дистрибутивов), то он получил более широкое распространение. Вообще, в каждом *nix есть свой подвид tar, со слегка отличающимися опциями. Но основные опции (создать, развернуть, проверить архив) одинаковы во всех версиях. В Linux используется GNU-версия tar, которая доступна в большинстве других Unix (иногда под именем "gtar").
Если tar используется для работы с файлами-архивами (а не с лентой), то его вызов обычно выглядит так:
Например, чтобы создать архив /tmp/someconfs.tar, содержащий файлы /etc/fstab и /etc/passwd:
– Во-вторых, при нормальной работе tar ничего не печатает на экране (в отличие от pkzip и arj). Чтобы он показывал обрабатываемые файлы, надо указать ключ "v": Если указать "vv", то кроме имен будут показываться те же атрибуты, что и при "ls -l". Вообще у tar довольно нестандартный синтаксис команд: хотя все ключи и можно указывать обычным способом (т.е. через "-"), и даже длинные ключи (с "--"), но обычно первым параметром ему указывается сочетание из нескольких букв, первая из которых является командой, а остальные — ключами. Так, "f" — это тоже ключ, который говорит, что далее указано имя файла-архива (поэтому "f" надо указывать в конце списка). Замечание: Хотя в большинстве систем tar прекрасно понимает именно такой синтаксис, в некоторых старых Unix'ах перед "сочетанием букв" обязательно надо указывать "-".
Для просмотра архива используется команда "t" (ключ "v" указывает, что надо выдавать более полную информацию):
Обычно .tar-файлы держат упакованными (чаще всего gzip'ом). Самое простое — создать архив и затем упаковать его. Но можно указать в качестве имени архива "-" — тогда результат будет отправлен на стандартный вывод, и затем передать его gzip'у, стандартный вывод которого перенаправить в файл:
При использовании GNU tar (например, в Linux) есть еще более простой способ: можно указать ключ "z", который означает "пропустить файл через gzip": Замечание: если сказать tar'у создать архив в той же директории, откуда берутся исходные файлы (к примеру, в текущей: "tar cf archive.tar."), то сам .tar-файл тоже попадет в архив — точнее, та его часть, что была создана на момент начала добавления его самого. Дело в том, что tar (в отличие от Dos'овских pkzip и arj) не проверяет, что файл, который он собирается поместить в архив, — это сам архив. Поэтому лучше сами файлы-архивы создавать вне того дерева, из которого берутся файлы, или прямо указывать список всех файлов, которые надо положить в архив. Совместимость с zip/unzip, unarjДля манипуляций с .zip-файлами практически в любом *nix есть программы zip и unzip. Ключи zip и unzip почти идентичны оным у pkzip/pkunzip. Получить краткую справку по ним можно, запустив любую из этих программ без параметров. Для распаковки .arj-файлов есть программа unarj. В отличие от "настоящего" arj, она не умеет создавать .arj-архивы, не оптимизирована по скорости и поддерживает лишь небольшое количество опций. Поддерживаются самые часто используемые опции arj — просмотр и распаковка, но при распаковке нет возможности указать, какие файлы надо извлекать — можно распаковать только весь архив. Краткую справку можно получить, набрав просто "unarj" без параметров. Про упаковщик-архиватор RAR я не писал сознательно. Данная программа давно заслужила авторитет у пользователей платформы Windows, но вот в Linux до сих пор наиболее употребимы gzip и bzip2. Источник: http://www.nestor.minsk.by/kg
| ||||||||||||||||||||||||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |