tar, как и find, - это одна из старейших утилит UNIX®, поэтому ее синтаксис несколько специфичен. Вот он:
tar [опции] [файлы...]
Вот список некоторых опций. Обратите внимание, что все они имеют эквивалентную длинную запись, но вам понадобится обратиться к странице руководства tar(1), т.к. здесь мы их перечислять не будем.
![]() | Замечание |
|---|---|
Теперь в tar не используется начальное тире ( |
x: используется для извлечения файлов из существующего
архива.
v: подробный режим. Выводит список файлов, добавленных
или извлеченных из архива, или, в сочетании с опцией t
(см. выше), выводит список файлов в длинном формате вместо короткого.
f <имя_файла>: создает архив с именем
имя_файла, извлекает из архива с именем
имя_файла или выводит список файлов архива
имя_файла. Если этот параметр отсутствует, файлом по
умолчанию будет /dev/rmt0, который обычно является
специальным файлом, связанным со
стримером.
Если именем файла является - (тире), ввод или вывод
данных (в зависимости от того, создается архив или выполняется извлечение из
него) будет ассоциирован со стандартным вводом или стандартным выводом.
z: сообщает tar'у, что создаваемый архив должен
быть сжат при помощи gzip, или что архив, из которого выполняется
извлечение, упакован gzip'ом.
j: эквивалент z, но для упаковки
используется программа bzip2.
p: при извлечении файлов из архива сохраняет все файловые
атрибуты, включая владельца, время последнего доступа и так далее. Очень
полезна для дампов файловой системы.
r: добавляет в существующий архив файлы, список которых
указан в командной строке. Обратите внимание, что архив, к которому вы
хотите добавить файлы, должен быть не упакованным!
A: добавляет указанные в командной строке архивы в архив,
определенный опцией f. По аналогии с опцией
r, чтобы это сработало, архивы должны быть не
упакованными.
Существует еще великое множество других опций, поэтому для получения полного
списка вы можете обратиться к странице руководства tar(1).
Взгляните, например, на опцию d.
Давайте рассмотрим пример. Допустим, вам нужно создать архив со всеми
изображениями каталога /shared/images, упаковать его
bzip2'ом, назвать images.tar.bz2 и поместить в
свой домашний каталог /home. Для этого наберите
следующее:
# # Примечание: вы должны находится в каталоге, файлы # которого вы хотите заархивировать! # $ cd /shared $ tar cjf ~/images.tar.bz2 images/
Как видите, здесь мы использовали три опции: c сообщила
tar'у, что нам нужно создать архив, j упаковала
его при помощи bzip2, а f ~/images.tar.bz2 создала
архив в нашем домашнем каталоге с именем
images.tar.bz2. Теперь у нас может возникнуть желание
проверить целостность архива. Для этого мы можем вывести список его файлов:
# # Возвращаемся назад в наш домашний каталог # $ cd $ tar tjvf images.tar.bz2
Здесь мы сообщили tar'у вывести список (t) файлов
архива images.tar.bz2 (f
images.tar.bz2), и предупредили его о том, что этот архив был
упакован при помощи bzip2 (j), а также о том, что
нам интересно получить список в длинном формате (v).
Теперь, предположим, что вы удалили каталог с картинками. К счастью у вас
остался нетронутый архив, и теперь вы хотите распаковать его в исходное
местоположение в /shared. Но т.к. вы не хотите
нарушить работу команды find при поиске новых изображений, вам нужно
сохранить все атрибуты файлов:
# # переход в каталог, в который вы хотите выполнить распаковку # $ cd /shared $ tar jxpf ~/images.tar.bz2
Теперь давайте предположим, что вам нужно извлечь из архива только каталог
images/cars. Тогда вы можете набрать следующее:
$ tar jxf ~/images.tar.bz2 images/cars
Если вы попытаетесь сделать резервную копию специальных файлов, программа
tar поместит их в архив «как есть», не выполняя дампа
их содержимого. Поэтому вы можете спокойно поместить в архив файл
/dev/mem. Также tar корректно работает и со
ссылками, так что не волнуйтесь насчёт этого. По поводу символических ссылок
взгляните на опцию h в странице
руководства.
Мы уже говорили об этих двух программах, когда рассматривали tar. В отличии от WinZip® для Windows®, архивирование и сжатие осуществляется двумя различными утилитами: tar для архивации и две программы для сжатия bzip2 и gzip, рассмотрением которых мы сейчас и займемся. Вы также можете воспользоваться другими утилитами сжатия данных, такими как zip, arj или rar, которые также существуют для GNU/Linux (но весьма редко используются).
Для начала следует отметить, что bzip2 был написан для замены gzip. Его степень сжатия обычно гораздо выше, но с другой стороны для него требуется больше памяти при работе. Несмотря на это, gzip все еще используется для совместимости со старыми системами.
Обе команды имеют похожий синтаксис:
gzip [опции] [файл(ы)]
Если не указано имя файла, и gzip, и bzip2 будут ожидать данные со стандартного ввода и отправлять результат на стандартный вывод. Поэтому вы можете использовать обе программы в каналах. Они также имеют набор общих опций:
Теперь приведем несколько примеров. Допустим, вы хотите упаковать в текущем
каталоге все файлы, названия которых заканчиваются на
.txt, используя программу bzip2 с максимальным
коэффициентом сжатия. Вы можете сделать это так:
$ bzip2 -9 *.txt
Теперь вы хотите дать попользоваться кому-то своими картинками, но у этого человека нет bzip2, а есть только gzip. Вам нет необходимости распаковывать архив, а затем снова упаковывать его. Вы можете просто распаковать его на стандартный вывод, затем, воспользовавшись каналом, упаковать стандартный ввод и перенаправить результат в новый архив: Например, так:
bzip2 -dc images.tar.bz2 | gzip -9
>images.tar.gzВы могли вызвать bzcat вместо bzip2 -dc. Это аналог программы gzip, но называется она zcat, а не gzcat. Также в вашем распоряжении bzless для bzip2-файлов и zless для gzip, если вы хотите просматривать упакованные файлы непосредственно, без предварительной распаковки. В качестве упражнения найдите и попробуйте команды, необходимые для просмотра сжатых файлов без их распаковки и без использования утилит bzless или zless.