Архиватор tar

Материал из Мои заметки
Перейти к: навигация, поиск

Архиватор tar[править]

tar - наиболее распространённый архиватор, используемый в Linux-системах. Сам по себе tar не является архиватором в привычном понимании этого слова, т.к. он самостоятельно не использует сжатие. В то же время, многие архиваторы (например, Gzip или bzip2) не умеют сжимать несколько файлов, а работают только с одним файлом или входным потоком. Поэтому чаще всего эти программы используются вместе. tar создает несжатый архив, в который помещаются выбранные файлы и каталоги, при этом сохраняя некоторые их атрибуты (такие как права доступа). После этого полученный файл *.tar сжимается архиватором, например, gzip. Вот почему архивы обычно имеют расширение .tar.gz или .tar.bz2 (для архиваторов gzip и bzip2 соответственно)

Использование[править]

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

Создание архива[править]

Для создания архива нужно указать tar соответствующее действие, что делается с помощью ключа -c. Кроме того, для упаковки содержимого в файл необходим ключ -f.

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

tar -cf txt.tar *.txt

Эта команда упакует все файлы с расширением txt в архив txt.tar. Так и создается простейший архив без сжатия. Для использования сжатия не нужно запускать что-либо еще, достаточно указать tar, каким архиватором следует сжать архив. Для двух самых популярных архиваторов gzip и bzip2 ключи будут -z и -j соответственно.

tar -cvzf files.tar.gz ~/files

упакует папку ~/files со всем содержимым в сжатый с помощью gzip архив.

tar -cvjf files.tar.bz2 ~/files

создаст аналогичный архив, используя для сжатия bzip2.

Ключ -v включает вывод списка упакованных файлов в процессе работы. К сожалению, более продвинутой индикации хода процесса (например, указания степени готовности в процентах) в tar не предусмотрено. Для этого используйте графические архиваторы (например, Xarchiver) или пользуйтесь средствами файл-менеджера.

Помимо gzip и bzip2 можно использовать, например, lzma (ключ –lzma) или xz (ключ -J), при этом соответствующий архиватор должен быть установлен в системе.

Распаковка архива[править]

Действие «распаковка» задается с помощью ключа -x. И тут снова потребуется ключ -f для указания имени файла архива. Также добавим ключ -v для визуального отображения хода процесса.

tar -xvf /path/to/archive.tar.bz2

распакует содержимое архива в текущую папку.

Альтернативное место для распаковки можно указать с помощью ключа -C:

tar -xvf archive.tar.lzma -C /path/to/folder

Просмотр содержимого архива[править]

Для просмотра содержимого архива используйте следующую команду:

tar -tf archive.tar.gz

Она выведет простой список файлов и каталогов в архиве. Если же добавить ключ -v, будет выведен подробный список с указанием размера, прав доступа и прочих параметров (так же, как по ls -l)

Извлекаем из tar-архива один или несколько файлов[править]

Порой из tar-архивов (.tar, .tar.gz, .tar.bz2) очень больших объемов требуется извлечь далеко не все содержимое, а лишь несколько определенных файлов. В таких случаях разархивировать исходный tar целиком нецелесообразно, поскольку не только потребует заметных ресурсов (в первую очередь, это нагрузка на диск), но и может занять продолжительное время.

Разумеется, авторы tar предусмотрели возможность извлечения из архива лишь указанных объектов. Все довольно тривиально — достаточно перечислить нужные файлы в качестве аргументов tar после самого имени архива. Например:

tar -xf archive.tar myfile1 dir2/myfile2

Эта команда извлечет из архива archive.tar файлы myfile1 и dir2/myfile2. В случае со сжатым архивом все делается аналогичным образом — добавляются соответствующие ключи: «z» для .gz (gzip) и «j» для .bz2 (bzip2).

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

tar -tf archive.tar

А для поиска нужного файла по части его названия/пути достаточно добавить через конвеер grep (или egrep) по вкусу.


Прочие возможности[править]

tar предоставляет множество полезных возможностей. Например, можно указать файлы и каталоги, которые не будут включены в архив, добавить файлы в существующий архив, взять список объектов для запаковки из текстового файла и много что ещё. Во всем многообразии опций как всегда поможет разобраться man tar или же tar --help.