tar - работа с архивами

tar(1) - это архиватор от GNU. Он берёт несколько файлов и/или каталогов и объединяет их в один большой файл. Это позволяет вам сжать целое дерево каталогов, что невозможно сделать с помощью gzip или bzip2. У tar'а есть много опций, которые подробно описаны на его странице руководства. В этом разделе будет показано только общее использование tar.

Наиболее общее использование tar заключается в распаковке и разархивировании пакета, загруженного с веб- или ftp-сайта. Большинство файлов имеют расширение .tar.gz. Довольно часто их называют “tarball”'ами. Это означает несколько файлов, заархивированных tar'ом, а затем сжатых gzip'ом. Вы также можете встретить файлы .tar.Z. По сути это то же самое, однако встречаются они в основном на старых системах Unix.

Кроме того вы можете натолкнуться на файлы .tar.bz2. В таком виде распространяются исходные тексты ядра, поскольку так они занимают меньше места для загрузки. Как вы уже наверное догадались, это файлы, заархивированные tar'ом и сжатые bzip'ом.

Вы можете извлечь все файлы из такого архива, воспользовавшись tar'ом с несколькими опциями командной строки. Разархивирование тарбола выполняется с помощью опции -z, которая означает, что сначала файл должен быть пропущен через gunzip, а уже потом распакован. Наиболее общий метод распаковки тарболов:

% tar -xvzf файл.tar.gz

Здесь довольно много опций. Что же они означают? Опция -x означает извлечение. Это важно, поскольку она сообщает tar'у, что именно нужно сделать со входным файлом. В данном случае он будет снова разбит на файлы, из которых он был “слеплен”. Опция -v означает включение подробного режима. При этом на экран будут выведены названия всех извлекаемых из архива файлов. Неплохо было бы использовать эту опцию, чтобы распаковка не выглядела слишком скучно. Вы также можете использовать -vv, чтобы вывод был ещё более подробным и вы получили ещё больше информации об извлекаемых файлах. Опция -z сообщает tar'у о том, что файл.tar.gz нужно сначала пропустить через gunzip. И, наконец, опция -f сообщает tar'у, что следующая строка в командной строке - это файл, с которым надо работать.

Существует несколько способов записи этой же команды. На старых системах, на которых отсутствует подходящая копия GNU tar, вы можете увидеть следующую запись этой же команды:

% gunzip файл.tar.gz | tar -xvf -

В этой команде файл сначала распаковывается, а результат отправляется в tar. Т.к. gzip по умолчанию записывает выходные данные на стандартный вывод, эта команда будет записывать распакованный файл на стандартный вывод. Затем конвейер перенаправляет этот поток в tar для распаковки. Знак “-” означает, что данные берутся со стандартного входа. Таким образом команда разархивирует поток данных, полученный из gzip, и запишет его на диск.

Другим способом записи первоначальной команды является убирание знака “-” перед опциями:

% tar xvzf файл.tar.gz

Также вы можете натолкнуться на bzip'нутый архив. Версия tar, представленная в Slackware Linux, может работать с ними точно так же, как и с gzip'нутыми архивами. Просто вместо опции -z вам нужно использовать -j:

% tar -xvjf файл.tar.bz2

Учтите, что tar будет сохранять извлечённые из архива файлы в текущий каталог. Поэтому, если у вас в /tmp есть архив, который вы хотите распаковать в свой домашний каталог, у вас есть несколько вариантов. Первый - архив можно переместить в ваш домашний каталог, а затем развернуть его с помощью tar. Второй - вы можете указать путь к архиву в командной строке. Третий - вы можете использовать опцию -C, чтобы разархивировать тарбол в указанный после этой опции каталог.

% cd $HOME
% cp /tmp/файл.tar.gz .
% tar -xvzf файл.tar.gz

% cd $HOME
% tar -xvzf /tmp/файл.tar.gz

% cd /
% tar -xvzf /tmp/файл.tar.gz -C $HOME

Все приведенные выше записи являются эквивалентными. В каждой из них архив разворачивается в ваш домашний каталог, а исходный сжатый архив остаётся на месте.

Итак, что же хорошего в том, что вы можете распаковывать архивы, если вы не можете создавать их? tar умеет делать и это. В большинстве случаев можно просто заменить опцию “-x” на “-c”.

% tar -cvzf файл.tar.gz .

В этой команде опция -c сообщает tar'у, что нужно создать архив, а опция -z пропускает полученный архив через gzip, чтобы сжать его. файл.tar.gz - это имя создаваемого файла.

Указание опции “-f” не всегда есть обязательным, однако в любом случае лучше её использовать. Без неё tar будет записывать свои данные на стандартный вывод, что обычно используется для перенаправления потока по конвейеру в другую программу, например, так:

% tar -cv файл.tar . | gpg --encrypt

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

Источник: jack.kiev.ua

Оцени публикацию:
  • 6,27
Оценили человек: 6

Похожие статьи:


Комментарии посетителей:
  • |-( |-( |-( |-( А как добавлять в архив ??? -u , -a, -r не работают..он на них ругается
    24 сентября 2010, 06:13 коммент полезен : 0 # |-(
    • Обратите внимание, что добавление архива к архиву работает только над несжатыми архивами, и требует опцию -f
      24 сентября 2010, 06:31 коммент полезен : 0 # Admin
  • Не, мне архив добавить в архив.
    Мне в уже созданный архив добавить файлы. опция -f  не помогает. или я ее не правильно пишу ?
    tar -af /tmp/Xlam > /tmp/ApxuB/qwr.tar
    tar -fa /tmp/Xlam > /tmp/ApxuB/qwr.tar
    испробовал разные варианты ни как..
    24 сентября 2010, 06:52 коммент полезен : 0 # |-(
  • tar -r -f /tmp/ApxuB/qwr.tar /tmp/Xlam немного разобрался в команде..но почему-то он постоянно пишет файлы, т.е. даже уже на существующие файлы он делает копии, что увеличивает размер архива. как можно сделать так чтобы он дописывал туда..
    24 сентября 2010, 07:09 коммент полезен : +1 # |-(
    • Все верно, команду добавления архивов в архив Вы создали правильную, если говорить о множестве файлов добавления, то она будет таковой: /usr/bin/tar -rf archive.tar add1.tar add2.tar
      Чтобы повторно не добавлять уже добавленные файлы, сначала проверяйте существующие файлы в архиве, например командой: /usr/bin/tar -tf archive.tar
      24 сентября 2010, 07:26 коммент полезен : +1 # Admin
  • :-O Большое спасибо :-D =))
    24 сентября 2010, 07:37 коммент полезен : 0 # |-(
  • =) эт снова я =)
    /tmp/ApxuB/ -tf qwr.tar tar -r -f /tmp/ApxuB/qwr.tar /tmp/Xlam
    вот команда, вроде правильно составлена.. но выдает "bash: /tmp/ApxuB/: is a directory" это почему..я опять где то накасячил ?;)
    24 сентября 2010, 08:05 коммент полезен : 0 # |-(
    • Такой командой Вы говорите директории /tmp/ApxuB/ добавить в архив qwr.tar пять файлов: tar -r -f /tmp/ApxuB/qwr.tar /tmp/Xlam
      т.к. это полная ерунда, SHELL вам говорит, что /tmp/ApxuB/ является директорией, и конечно не может создавать архивы!
      Думаю, прежде чем дальше писать сюда подобное, Вам следует хорошенько почитать Man по программе tar.
      24 сентября 2010, 08:55 коммент полезен : 0 # Admin
  • tar -u -f /tmp/ApxuB/qwr.tar /tmp/Xlam/
    я разобрался)) Вот так она работает;) я не правильный ключ ставил.. нужно было этот "-u"поставить и все прокатило )
    спасибо за содействие))
    24 сентября 2010, 08:58 коммент полезен : 0 # |-(
Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » Unix »