Библиотека сайта rus-linux.net
Предыдущий | Содержание | Следующий |
5.7 Архиваторы
В Slackware Linux есть несколько программ, которые могут быть использованы для сжатия и архивирования файлов. Эти программы особенно полезны для создания резервных копий документов (backups) и для обмена файлами между компьютерами по сети. Вы можете найти, как программы для работы со стандартными Unix так и со стандартными Windows архивами.
5.7.1 gzip
gzip(1) это GNU программа сжатия. Она берёт один файл и сжимает его. Пример обычного использования выглядит вот так:
$ gzip infile
|
Выходной файл будет назван infile.gz
и почти всегда будет меньше
входного. Обратите внимание, что infile.gz
заменит infile
.
Это значит, что infile
прекратит своё существование. Останется только
его сжатая копия. Обычные текстовые файлы существенно сожмутся, в то время как
jpeg картинки, mp3, и другие подобные файлы почти не сожмутся, так как они уже
сжаты. Приведённый выше пример, это нечто среднее между качеством сжатия и
затраченным временем. Максимальное сжатие может быть получено при помощи такой
команды:
$ gzip -9 infile
|
Это займёт больше времени, но выходной файл будет настолько сжатым, насколько gzip вообще может его сжать. Использование меньших значений займёт меньше времени, но соответственно и качество компрессии будет хуже.
Распаковывание gzipped (запакованных GNU zip) файлов может быть выполнено при
помощи двух команд, которые на самом деле являются одной и той же программой.
gzip распакует любой файл с узнаваемым им расширением. Вот
список расширений, которые узнаёт команда: .gz
, -gz
,
.z
, -z
, .Z
, или -Z
. Первый метод -
применить команду gunzip(1) к файлу:
$ gunzip infile.gz
|
Выполнение этой команды приведёт к тому, что вместо указанного файла в этом же
каталоге появится его распакованная версия и .gz
часть его имени
исчезнет.
Второй метод распаковывания gziped файла, это вызвать gzip в применении к файлу:
$ gzip -d infile.gz
|
Это приведёт к точно такому же результату, как и вызов gunzip. Объяснение
очень просто: gunzip это всего лишь символическая ссылка на
/bin/gzip
:
$ cd /usr/bin |
$ ls -l gunzip |
lrwxrwxrwx 1 root root 9 Feb 2 09:45 gunzip -> /bin/gzip |
Так что выполнение gunzip на самом деле лишь вызов gzip хоть и под другим именем. Программа может определить, по какому имени к ней обратились, и работает в соответствии с этим. В этом случае, gzip увидит, что его вызвали как gunzip и распакует файл. Поэтому вы можете на ваше усмотрение пользоваться любой из команд, для распаковки gziped файлов.
5.7.2 bzip2
bzip2(1) это альтернативная программа сжатия, установленная в Slackware Linux. Она использует алгоритм отличный от gzip, который имеет как преимущества, так и недостатки. Главное преимущество bzip2 это размер сжатых файлов. bzip2 почти всегда сожмёт лучше, чем gzip. Иногда файлы получаются гораздо меньше, чем фалы сжатые gzip-ом. Это может быть значительным преимуществом для людей, с медленным модемным соединением.
Недостаток bzip2 в том, что она более интенсивно использует CPU, чем gzip. А это значит, что использование bzip займёт больше времени и будет более требовательно к процессору, чем gzip. Когда вы решаете, каким архиватором пользоваться, надо взвесить это соотношение скорость - сжатие, и выбрать, что важнее.
Использование bzip2 очень похоже на использование gzip, так что мы не станем много времени тратить на её обсуждение. Просто вызовите bzip2, указав имя файла:
$ bzip2 infile
|
Вывод обычно будет меньше, чем входной файл, и получит название infile.bz2. Как и с gzip, входной файл будет заменён сжатым.
Вы можете так же указывать числовой аргумент, чтобы балансировать скоростью и качеством сжатия, как и с gzip. Следующий пример показывает, как достигнуть максимального сжатия при помощи bzip2:
$ bzip2 -9 infile
|
Есть два способа распаковывания файлов, заканчивающихся .bz2
расширением, как и с gzip. Вы можете использовать bzip2 или
bunzip2(1) для распаковки bzipped файлов. Использование bzip2
потребует указания аргумента:
$ bzip2 -d infile.bz2
|
Эта команда распакует bziped файл и заменит его распакованной копией. Этот
результирующий файл потеряет .bz2
расширение. Аналогично, вы
можете использовать bunzip2 для распаковки файла:
$ bunzip2 infile.bz2
|
все произведённые программой действия будут абсолютно идентичными, так как опять
мы имеем дело с символьной ссылкой. Проверка /bin/bunzip2
показывает,
что это просто символьная ссылка на /bin/bzip2
. Используется тот же
трюк, что и с gzip. Вы увидите, что вызов программ при помощи
нескольких различных имён, для получения разного их поведения, это любимый
трюк Linux программистов.
$ cd /bin |
$ ls -l bunzip2 |
lrwxrwxrwx 1 root root 5 Feb 2 09:45 /bunzip2 -> bzip2 |
5.7.3 tar
tar(1) это GNU ленточный архиватор. Он берёт несколько файлов или каталогов и создаёт один большой файл. Это позволяет вам сжимать целое дерево каталогов, чего нельзя достигнуть при простом использовании gzip или bzip2. tar имеет много параметров командной строки, которые описаны в man странице программы. В этом разделе будут рассмотрены наиболее распространённые варианты использования tar.
Чаще всего tar используется для распаковки и раз-архивирования пакетов,
скачанных с вэб или ftp сайтов. Большинство файлов будут иметь .tar.gz
расширение. Это так называемый ''tarball''. Это означает, что несколько файлов
были помещены в архив при помощи tar и затем этот архив был сжат при
помощи gzip. Иногда они так же имеют расширение .tar.Z
. Это
означает то же самое, но обычно встречается на более старых Unix системах.
Так же вы можете встретить иногда .tar.bz2
файлы. Исходный текст ядра
поставляется в таком виде, потому что так вам придётся скачивать меньший файл.
Как вы уже вероятно догадались, это несколько файлов, объединённых в архив при
помощи tar и сжатых при помощи bzip2.
Вы можете получить файлы из таких архивов, при помощи tar команды с определёнными аргументами командной строки. Разархивирование tarbal-а требует указания ключа -z, что фактически вызовет вначале выполнение gunzip, для распаковки файла. Обычно tarbal-ы распаковываются такой командой:
$ tar -xvzf hejaz.tar.gz
|
Довольно много опций. Что же все они означают? ''-x'' значит извлечь
(extract). Это важно, так как именно этот параметр говорит tar-у,
что именно делать с входным файлом. В этом случае мы опять разобьём архив на
все те файлы, из которых он был составлен. ''-v'' скажет программе быть
''многословной'' (verbose). Указание этого ключа приведёт к тому, что в процессе
извлечения будет выводиться список файлов, которые извлекаются. Вы можете смело
отказаться от использования этого ключа, если вас раздражает вывод подобной
информации. Так же вы можете использовать ''-vv'', чтобы программа стала совсем
многословной, и отображала ещё больше информации о файлах, которые извлекаются.
опция ''-z'' говорит tar-у, вначале пропустить файлhejaz.tar.gz
через gunzip. Ну и наконец, ''-f'' опция указывает, что далее в
командной строке будет указанно имя файла, с которым надо работать.
Есть так же несколько других способов написания той же самой команды. На более старых системах, в которых отсутствует приличная версия GNU tar, вы можете встретить такой синтаксис:
$ gzip -dc hejaz.tar.gz | tar -xvf -
|
Эта строчка команд вначале распакует файл и затем пошлёт вывод tar-у. Так как gzip запишет вывод на стандартный вывод, если его попросить, эта команда запишет распакованный файл в стандартный вывод. Через pipe файл будет послан tar-у для раз-архивирования. ''-'' означает работать со стандартным вводом. Программа разархивирует поток данных, который она получит от gzip и запишет вывод на диск.
Другой способ записи первой команды это запись без тире перед опциями:
$ tar xvzf hejaz.tar.gz
|
Возможно вам так же понадобится работать с bziped архивами. Версия tar, поставляемая со Slackware Linux может работать с ними так же как и с gziped архивами. Вместо ''-z'' опции вам надо воспользоваться ''-y'':
$ tar -xvyf foo.tar.bz2
|
Следует отметить, что tar поместит извлечённые файлы в текущем каталоге.
Так что если ваш архив находится в /tmp
каталоге, а распаковать вы его
хотите в домашний каталог, есть два варианта решения проблемы. Первая - архив
можно переместить в домашний каталог и затем обработан с tar. Или же
вы можете указать путь к архиву в командной строке:
$ tar -xvzf /tmp/bar.tar.gz
|
Содержимое архива будет вывалено в ваш домашний каталог, а исходный архив так
и останется в /tmp
каталоге.
Второй наиболее распространённый вариант использования tar это создание ваших собственных архивов. Создание архива не более сложная процедура, чем разархивирование других файлов; просто требует другого набора опций командной строки.
Чтобы создать сжатый tar архив всех файлов текущего каталога (включая поддиректории и их файлы), вам следует воспользоваться командой:
$ tar -cvzf archive.tar.gz .
|
В этой командной строке ''-c'' опция указывает, что должен быть создан архив, а
''-z'' сжимает получившийся архив при помощи gzip. archive.tar.gz
это файл, который вы хотите создать. Вы можете назвать его как вам
заблагорассудится, а если вы так же укажете полный путь, то файл будет создан
в указанном каталоге. Вот пример:
$ tar -cvzf /tmp/archive.tar.gz .
|
В этом случае архив будет создан в /tmp
каталоге. Вы можете так же
указать все файлы и каталоги, которые вы хотите включить в архив, перечислив их
в конце команды. В этом случае .
это каталог, который будет включён в
архив. Вы можете заменить его на список всевозможных файлов или всего того, что
захотите включить в архив.
5.7.4 zip
Ну и наконец, есть две утилиты для работы с zip
файлами. Которые
являются очень популярными в мире WIndows, итак в Linux есть программы для
работы с ними. Программа для сжатия называется zip(1), а программа для
распаковки называется unzip(1).
Сжимать довольно легко:
$ zip foo *
|
Эта команда создаст файл foo.zip
, который будет содержать все
файлы в текущем каталоге. zip автоматически добавит .zip
расширение, так что вам не надо указывать его в командной строке. Вы так же
можете пробежаться по текущему каталогу, пакуя все каталоги, которые там
есть:
$ zip -r foo *
|
Распаковывать файлы тоже не сложно.
$ unzip foo
|
Это распакует все файлы из файла foo.zip
, включая все
каталоги, присутствующие в архиве.
zip утилиты имеют несколько расширенных опций для создания само-распаковывающихся (self-extracting) архивов, для пропуска некоторых из файлов, управления размером сжатого файла, вывода на экран отчётов и гораздо больше. Смотрите man страницы для zip и unzip, чтобы узнать как использовать эти опции.
5.7.5 Итог
В этом разделе обсуждались программы, которые были использованы для сжатия и распаковывания архивных файлов. Вы должны знать, что такое файл-архив, как создать таковой при помощи tar и вид сжатия на ваш выбор, как извлечь файлы из архива и как работать с Windows-овскими архивами. Почти всегда при скачивании и закачивании вы будете иметь дело с архивами, так что важно уметь работать с ними.
Предыдущий | Содержание | Следующий |
File translated from TEX by TTH, version 2.89.
On 24 Apr 2001, 16:43.