tar: Tape ARchiver - Архиватор для накопителей на магнитной ленте

Несмотря на то, что мы уже использовали tar в главе Глава 12. Сборка и инсталляция свободного програмного обеспечения, мы до сих пор не объяснили как она работает. Именно для этого этот раздел здесь и помещен. Как и find, tar является одной из старейших стандартных утилит UNIX. И, точно также как tar, имеет несколько специфичный синтаксис:

tar [options] [files...]

Теперь приведем список опций. Обратите внимание, что все приведенные опции имеют и длинный вариант написания, но для ознакомления с ними вам прийдется обратиться к страницам руководства, так как здесь они не будут приведены. И конечно же, мы не станем приводить здесь всех опций :-)

Замечание

стартовая черточка (-) перед короткой опцией tar больше не используется, только после длинной опции.

  • c: эта опция используется для создания нового архива;

  • x: эта опция используется для извлечения файлов из существующего архива;

  • t: предоставляет список файлов в существующем архиве;

  • v: эта опция просто выводит список файлов, которые добавляются или извлекаются из архива, или, в сочетании с опцией t (см. выше), выводит список в длинном формате;

  • f <file>: создает архив с именем <file>, извлекает из архива с именем <file> или получает список файлов в архиве с именем <file>. Если этот параметр отсутствует, то файлом по умолчанию будет /dev/rmt0, который является специальным файлом, связанным с устройством streamer. Если вместо имени файла подставить - (минус), ввод или вывод (в зависимости от того, создается или разворачивается архив) будет ассоциирован со стандартным вводом или стандартным выводом;

  • z: сообщает tar что архив, который должен быть создан, нужно сжать с помощью gzip, или что архив, который нужно развернуть, сжат gzip;

  • j: тоже самое что и z, но программа, используемая для компрессии или декомпрессии это bzip2;

  • p: при извлечении файлов из архива сохраняются все атрибуты, включая владельца, время последнего доступа и так далее. Очень полезно при снятии дампа файловой системы;

  • r: добавляет в конец существующего архива файлы, список которых получен из командной строки. Обратите внимание на то, что архив, к которому вы хотите добавить файлы, не должен быть компрессированным!

  • A: добавляет архив, имя которого получено из командной строки, к другому архиву (имя которого берется у опции f). По аналогии с опцией r, для того чтобы это работало - архивы не должны быть компрессированными;

Существует еще много, много, много других опций, поэтому, для получения полного списка, мы вам советуем обратится к справочному руководству tar(1) manual page. Давайте попрактикуемся и рассмотрим для примера опцию d. Допустим, мы хотим создать архив всех картинок, находящихся в каталоге /shared/images, скомпрессировать их с помощью bzip2, затем назвать его images.tar.bz2, и разместить в своем домашнем каталоге. Для этого наберите следующее:

 #
 # Примечание: вы должны находиться в том каталоге, 
 # файлы из которого вы желаете заархивировать!
 #
$ 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 в manpage.



Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости