В качестве инструмента для архивации данных в 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
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
Синтаксис для gzip отличается одной буквой в параметрах, и меняется окончание расширения архива:
tar -czvf archive.tar.gz file1 file2 file3
При распаковке tar-архивов с таким расширением следует указывать соответствующую опцию:
tar -C "Test" -xjvf arhive.tar.bz2
или:
tar -xzvf archive.tar.gz
На заметку: архиватор tar — одна из немногих утилит в GNU/Linux, в которой перед использованием однобуквенных параметров, стоящих вместе, можно не ставить знак дефиса.
Выводы
В этой статье была рассмотрена команда tar Linux, которая используется для архивации файлов и поставляется по умолчанию во всех дистрибутивах. В её возможности входит создание и распаковка архива файлов без их сжатия. Для сжатия утилита применяется в связке с популярными компрессорами bzip2 и gzip.
Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали












не лишне упомянуть, что там ещё есть xz, в большинстве случаев сейчас он лучше gz/bz2
Здравствуйте,подскажите,как распаковать архив xz?
спасибо автору статьи БОЛЬШОЕ!
меня посетил склероз, тщетно пытался нагуглить.
а тут вот!
Спасибо за отзыв )
от склероза помогает man, в данном случае man tar
не лишне было бы упомянуть о многотомных архивах.
ну если в ваш магазин завезли свежую партию нгмд, то это, безусловно, актуально
Спасибо за статью! Пока я ее читал, любовался на оформление консоли в Manjaro. Как-то можно подобное на Ubuntu установить?
Спасибо за отзыв!
Да, можно. Цветовое оформление можете взять из любого .bashrc в Manjaro (Xfce, по крайней мере). Чтобы не было рамок, просто уберите границы вокруг новых окон в настройках во вкладке "Вид".
Добрый день!
Антон, а не подскажите, в чем может быть проблема? 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 ~]#
Вы забыли перед флага тире поставить:
"tar -xjf iRedMail-0.9.9.tar.bz2"
Добрый день!
Возможно ли командой tar создать архив всего ж.д. на ленточном накопителе и потом распаковать его на другой ж.д.?
Как будет выглядеть синтаксис команды при этом?
Необходимо создать копию ж.д, но сами диски несколько отличаются конфигурацией (цилиндры/головы/сектора) при одинаковом объеме, поэтому копирование командой dd не осуществляется.
Заранее спасибо!
-f Вывести результат в файл (или на устройство) file
ошибка у вас. не вывести, а использовать
-f, --file [HOSTNAME:]F
use archive file or device F (default "-", meaning stdin/stdout)