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

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

tar [options] [files...]

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

Замечание

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

Существует еще много, много, много других опций, поэтому, для получения полного списка, мы вам советуем обратится к справочному руководству 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.