Главная >> Команды >> Команда tar в Linux

Команда tar в Linux

В качестве инструмента для архивации данных в Linux используются разные программы. Например архиватор Zip Linux, приобретший большую популярность из-за совместимости с ОС Windows. Но это не стандартная для системы программа. Поэтому хотелось бы осветить команду tar Linux — встроенный архиватор.

Изначально tar использовалась для архивации данных на ленточных устройствах. Но также она позволяет записывать вывод в файл, и этот способ стал широко применяться в Linux по своему назначению. Здесь будут рассмотрены самые распространенные варианты работы с  этой утилитой.


Содержание статьи

Синтаксис команды tar

Синтаксис команд для создания и распаковки архива практически не отличается (в том числе с утилитами сжатия bzip2 или gzip). Так, чтобы создать новый архив, в терминале используется следующая конструкция:

tar опции архив.tar файлы_для_архивации

Для его распаковки:

tar опции архив.tar

Функции, которые может выполнять команда:

Функция Длинный
формат
Описание
-A --concatenate Присоединить существующий архив к другому
-c --create Создать новый архив
-d --diff
--delete
Проверить различие между архивами
Удалить из существующего архива файл
-r --append Присоединить файлы к концу архива
-t --list Сформировать список содержимого архива
-u --update Обновить архив более новыми файлами с тем же именем
-x --extract Извлечь файлы из архива

При определении каждой функции используются параметры, которые регламентируют выполнение конкретных операций с tar-архивом:

Параметр Длиннный
формат
Описание
-C dir --directory=DIR Сменить директорию перед выполнением операции на dir
-f file --file Вывести результат в файл (или на устройство) file
-j --bzip2 Перенаправить вывод в команду bzip2
-p --same-permissions Сохранить все права доступа к файлу
-v --verbose Выводить подробную информацию процесса
--totals Выводить итоговую информацию завершенного процесса
-z --gzip Перенаправить вывод в команду gzip

А дальше рассмотрим примеры того, как может применяться команда tar Linux.

Как пользоваться tar

1. Создание архива tar

С помощью следующей команды создается архив archive.tar с подробным выводом информации, включающий файлы file1, file2 и file3:

tar --totals --create --verbose --file archive.tar file1 file2 file3

Но длинные опции и параметры можно заменить (при возможности) однобуквенными значениями:

tar --totals -cvf archive.tar file1 file2 file3

Создание архива tar

2. Просмотр содержимого архива

Следующая команда выводит содержимое архива, не распаковывая его:

tar -tf archive.tar

Отображение архива

3. Распаковка архива tar Linux

Распаковывает архив test.tar с выводом файлов на экран:

tar -xvf archive.tar

Распаковка архива

Чтобы сделать это в другой каталог, можно воспользоваться параметром -C:

tar -C "Test" -xvf archive.tar

Распаковка в другой каталог

3. Работа со сжатыми архивами

Следует помнить, что tar только создаёт архив, но не сжимает. Для этого используются упомянутые компрессорные утилиты bzip2 и gzip. Файлы, сжатые с их помощью, имеют соответствующие расширения .tar.bz2 и .tar.gz. Чтобы создать сжатый архив с помощью bzip2, введите:

tar -cjvf archive.tar.bz2 file1 file2 file3

Сжатие в bz2

Синтаксис для gzip отличается одной буквой в параметрах, и меняется окончание расширения архива:

tar -czvf archive.tar.gz file1 file2 file3

Сжатие в gz

При распаковке tar-архивов с таким расширением следует указывать соответствующую опцию:

tar -C "Test" -xjvf arhive.tar.bz2

Распаковка bz2

или:

tar -xzvf archive.tar.gz

Распаковка gz

На заметку: архиватор tar — одна из немногих утилит в GNU/Linux, в которой перед использованием однобуквенных параметров, стоящих вместе, можно не ставить знак дефиса.

Выводы

В этой статье была рассмотрена команда tar Linux, которая используется для архивации файлов и поставляется по умолчанию во всех дистрибутивах. В её возможности входит создание и распаковка архива файлов без их сжатия. Для сжатия утилита применяется в связке с популярными компрессорами bzip2 и gzip.

Pеклама
Посмотреть детали

Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали

13 комментариев к “Команда tar в Linux”

  1. Спасибо за статью! Пока я ее читал, любовался на оформление консоли в Manjaro. Как-то можно подобное на Ubuntu установить?

    Ответить
    • Спасибо за отзыв!
      Да, можно. Цветовое оформление можете взять из любого .bashrc в Manjaro (Xfce, по крайней мере). Чтобы не было рамок, просто уберите границы вокруг новых окон в настройках во вкладке "Вид".

      Ответить
  2. Добрый день!
    Антон, а не подскажите, в чем может быть проблема? Linux только осваиваю и потому никак не могу найти решение проблемы. Может архиватор не так работает? Или CentOS нужно переустанавливать...

    [root@mail ~]# dir
    anaconda-ks.cfg iRedMail-0.9.5-1.tar.bz2.1
    iRedMail-0.9.5-1.tar.bz2 iRedMail-0.9.9.tar.bz2
    [root@mail ~]# tar xjf iRedMail-0.9.9.tar.bz2
    tar (child): bzip2: Функция exec завершилась с ошибкой: Нет такого файла или каталога
    tar (child): Error is not recoverable: exiting now
    tar: Child returned status 2
    tar: Error is not recoverable: exiting now
    [root@mail ~]#

    Ответить
  3. Добрый день!
    Возможно ли командой tar создать архив всего ж.д. на ленточном накопителе и потом распаковать его на другой ж.д.?
    Как будет выглядеть синтаксис команды при этом?
    Необходимо создать копию ж.д, но сами диски несколько отличаются конфигурацией (цилиндры/головы/сектора) при одинаковом объеме, поэтому копирование командой dd не осуществляется.
    Заранее спасибо!

    Ответить
  4. -f Вывести результат в файл (или на устройство) file

    ошибка у вас. не вывести, а использовать
    -f, --file [HOSTNAME:]F
    use archive file or device F (default "-", meaning stdin/stdout)

    Ответить

Оставьте комментарий