В качестве инструмента для архивации данных в 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.
не лишне упомянуть, что там ещё есть 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)