В Linux. 2 Приобретение и инсталляция Linux. 3 Учебник по Linux 4 Администрирование системы. 5 The X window System. 6 Работа в сети

Вид материалаУчебник

Содержание


4.7 Архивация и компрессирование (сжатие) файлов.
4.7.1 Использование tar.
4.7.2 gzip и compress.
4.7.3 Можно вместе.
Подобный материал:
1   ...   52   53   54   55   56   57   58   59   ...   73

4.7 Архивация и компрессирование (сжатие) файлов.


Прежде, чем мы сможем говорить о сохранении (резервировании) программ, мы должны представить инструменты, используемые для архивации файлов и программ в системах UNIX.

4.7.1 Использование tar.


Команда tar наиболее часто используется для архивации файлов. Формат команды tar:


tar opilons files


где options есть список команд и опций для tar, а files список файлов добавляемых в архив или извлекаемых из него.

Например, команда:


# tar cvf backup.tar /etc


упакует все файлы, содержащиеся в /etc, в архив tar под именем backup.tar. Первый аргумент команды tar, ``cvf', это (внутренняя) команда tar. ``c'' указывает tar создать новый архивный файл. Опция ``v'' заставляет tar выводить имя каждого архивируемого файла. Опция ``f'' говорит, что следующий аргумент, backup.tar, имя созданного архивного файла. Остальные аргументы команды tar, имя файла архива и имя добавляемого в архив каталога. Команда:


# tar xvf backup.tar


распакует архивный файл в текущий каталог. Это может быть иногда и небезопасным занятием, когда извлеченные из архива файлы затирают существовавшие файлы.

Поэтому перед извлечением архивированных файлов важно знать, где файлы следует распаковать. Например, вы заархивировали следующие файлы: /etc/hosts, /etc/group и /etc/passwd. Если вы используете команду:


# tar cvf backup,tar /etc/hosts /etc/group /etc/passwd


в начало имени каждого файла добавится каталог с именем /etc. Чтобы извлечь файлы в нужное место, вам потребуется использовать следующие команды:


# cd

# tar wf backup tar


поскольку файлы извлечены с сохраненным в архиве путем.

Если вы заархивировали файлы командой:


# cd /etc

# tar cvf hosts group passwd


имя каталога не сохраняется в архивном файле. Поэтому вы должны выполнить ``cd /etc'' перед извлечением файлов. Вы обратили внимание: то, как вы создали архивный файл сильно влияет на то, в каком месте его следует извлекать. Команда:


# tar tvf backup.tar


может быть использована для просмотра оглавления архивного файла перед его распаковкой. Таким образом вы можете посмотреть, к какому каталогу относятся архивированные файлы и сможете извлечь файлы из архива в нужном месте.

4.7.2 gzip и compress.


В отличие от архивирующих программ для MS-DOS, tar не сжимает автоматически файлы в процессе архивирования. Поэтому, если вы архивируете два одномегабайтных файла, результирующий архивный файл будет размером два мегабайта. Команда gzip может использоваться для сжатия файла (сжимаемый файл не обязан быть tar-файлом). Команда:


# gzip -9 backup tar


сожмет backup.tar и оставит вас наедине с backup.tar.gz, сжатой версией файла. Опция -9 говорит команде gzip, что следует использовать максимально возможную компрессию.

Команда gunzip может быть использована для расжатия сжатого файла. С аналогичным эффектом вы можете использовать команду ``gzip -d''.

gzip сравнительно новый инструмент в кругах, приближенных к UNIX. Долгие годы вместо этого использовалась команда compress. Однако, по нескольким причинам (тут и патентные проблемы относительно алгоритма, и то, что gzip значительно эффективнее) compress оказался не у дел.

Обработанные командой compress файлы заканчивались расширением .Z. Например, backup.tar.Z это сжатая compress версия файла backup.tar, а backup.tar.gz сжатая gzip версия. Чтобы еще надежнее запутать дело, для обозначения gzip файлов некоторое время использовалось расширение .z (маленькая ``z''). В настоящее время официальное расширение .gz. Команда uncompress используется для развертывания файла, который был обработан командой compress. Функционально она равнозначна команде compress -d. Но команда gunzip тоже знает, как обращаться с такими файлами.

4.7.3 Можно вместе.


Чтобы заархивировать и сжать группу файлов, вы можете использовать команды:


# tar cvf backup.tar /etc

# gzip -9 backup.tar


Результат будет backup.tar.gz. Для распаковки этого файла используйте обратную последовательность команд:


# gunzip backup.tar.gz

# tar xvf backup.tar


Разумеется, всегда следует убедиться перед распаковкой файла, что вы в нужном каталоге.

Вы можете опереться на некоторую сообразительность UNIX, позволяющего сделать это одной командной строкой:


# tar cvf - /etc|gzip -9c>backup.tar.gz


Здесь мы посылаем tar-файл, сформированный из /etc, в файл ``-'', который представляет стандартный вывод. Результат по конвейеру поступает на ввод команды gzip, которая сжимает этот файл и результат сохраняет в backup.tar.gz. Опция -c команды gzip говорит, что вывод команды gzip посылает результат на стандартный вывод, который перенаправляется на backup.tar.gz.

Единственная команда для распаковки этого архива:


# gunzip -c backup.tar.gz|tar xvf -


Опять, команда gunzip рассжимает содержимое файла backup.tar.gz и посылает результирующий файл на стандартный вывод. Он по конвейеру передается команде tar, которая читает файл ``-'', что в данном случае олицетворяет стандартный вывод.

К счастью, команда tar также содержит опцию z, автоматически сжимая-расжимая файлы, используя алгоритм компрессии gzip.

Команда:


# tar cvf backup.tar.gz /etc


эквивалентна:


# tar cvf backup.tar /etc

# gzip backup.tar


Как и команда:


# tar xvf backup.tar.Z


может быть использована вместо:


# uncompress backup.tar.Z

# tar xvf backup.tar


За дополнительной информацией обратитесь к man-руководству по tar и gzip.