Использование tar в Linux и FreeBSD для работы с архивами
Утилита командной строки tar используется для работы с архивами в операционных системах на базе UNIX. С ее помощью можно архивировать данные и оптимизировать использование дискового пространства.
Создание и распаковка архивов
Создать
Создание выполняется с ключом c. Синтаксис следующий:
tar -czvf archive.tar.gz /home/dmosk
* в данном примере будет создан архив archive.tar.gz домашней директории пользователя (/home/dmosk)
** где z — сжать архив в gzip (без этого параметра, tar не сжимает, а создает так называемый тарбол); c — ключ на создание архива; v — verbose режим, то есть с выводом на экран процесса (очень удобно для наблюдением за ходом работы, но в скриптах можно упустить); f — использовать файл (обязательно указываем, так как в большей степени работаем именно с файлами).
Распаковать
Распаковка выполняется с ключом x с синтаксисом:
tar -xvf archive.tar.gz
Примеры
Распаковка .gz файла:
tar -xvf archive.tar.gz
* при возникновении ошибки This does not look like a tar archive, можно воспользоваться командой gzip -d archive.tar.gz.
tar -xvjf archive.tar.bz2
* ключ j отвечает за работу с bz2.
Если система ругается на bzip2, значит нужно его установить:
apt-get install bzip2
* соответственно, для CentOS (RPM based), Ubuntu (deb based), FreeBSD (BSD based).
Если видим ошибку tar: Unrecognized archive format, воспользуемся следующей командой:
bzip2 -d archive.tar.bz2
tar -xvzf archive.tar.gzip
* ключ z отвечает за работу с gzip.
Распаковывается, как gzip:
tar -xvzf archive.tgz
Распаковать в определенную папку
tar -C /home/user -xvf archive.tar.gz
* ключ -C используется для указания папки, куда необходимо распаковать файлы из архива.
Распаковка без вложенной папки
Такой способ можно использовать для распаковки в заранее подготовленный каталог. Будет некий эффект переименовывания каталога или аналог «Распаковать здесь»:
tar -C /home/admin/mytar -xvf admin.tar.gz —strip-components 1
* каталог /home/admin/mytar заранее должен быть создан; —strip-components 1 пропустит одну вложенную папку внутри архива.
Исключение файлов по маске
Если необходимо пропустить некоторые файлы, вводим команду с ключом —exclude:
tar -czvf archive.tar.gz /wwwsite —exclude=’sess_*’
* в данном примере мы создадим архив archive.tar.gz, в котором не будет файлов, начинающихся на sess_.
Описание ключей tar
Команды для действия
| Ключ | Описание |
|---|---|
| -A | Добавление файлов в архив. |
| -c | Создание нового архивного файла. |
| -d | Показать отличающиеся данные между каталогом-исходником и содержимым архива. |
| —delete | Удалить файлы внутри архива. |
| -r | Добавить файлы в конец архива. |
| -t | Показать содержимое архива. |
| -u | Добавить файлы, которых нет в архиве. |
| -x | Извлечь файлы из архива. |
* нельзя использовать несколько вышеперечисленных ключей в одной команде.
Дополнительные опции
| Ключ | Описание |
|---|---|
| —atime-preserve | Оставить прежнюю метку времени доступа для файла. |
| -b N | Задать размер блока N x 512. |
| -C | Смена каталога. По умолчанию, используется тот, в котором мы находимся. |
| —checkpoint | Показать имена папок при чтении архивного файла. |
| -G | Использование старого формата инкрементального резервирования при отображении или извлечения. |
| -g | Использование нового формата инкрементального резервирования при отображении или извлечения. |
| -h | Не дублировать символьные ссылки. Только файлы, на которые указывают эти симлинки. |
| -i | Игнорировать блоки нулей. |
| -j | Использование bzip2. |
| —ignore-failed-read | Игнорировать не читаемые файлы. |
| -k | При распаковке, существующие файлы не заменяются соответствующими файлами из архива. |
| -L N | Смена магнитной ленты после N*1024 байт. |
| -m | При извлечении игнорировать время модификации объекта. |
| -M | Многотомные архивы. |
| -N DATE | Сохранять только более новые файлы относительно DATE |
| -O | Направление извлекаемого на стандартный вывод. |
| -p | Извлечение защищенной информации. |
| -P | Не отбрасывает начальный слэш (/) из имен. |
| -s | Сортировка файлов при извлечении. |
| —preserve | Аналогично -ps |
| —remove-files | Удалить исходные файлы после добавления в архив. |
| —same-owner | Сохранить владельца при извлечении. |
| —totals | Вывод байт при создании архива. |
| -v | Протоколирование действий — отображение списка объектов, над которыми происходит действие. |
| -V NAME | Создание архива на томе с меткой NAME. |
| —version | Показать версию tar. |
| -w | Требовать подтверждения для каждого действия. |
| -W | Проверка архива после записи. |
| —exclude FILE | Исключить файл FILE. |
| -X FILE | Исключить файлы FILE. |
| -Z | Фильтрует архив с помощью compress. |
| -z | Использование gzip. |
* актуальный список опций можно получить командой man tar.
Tar не работает с zip-архивами. В системах UNIX для этого используем утилиты zip и unzip. Для начала, ставим нужные пакеты:
yum install zip unzip
apt-get install zip unzip
pkg install zip unzip
* соответственно, для RPM based, deb based, BSD based.
zip -r archive.zip /home/dmosk
* создает архив каталога /home/dmosk в файл archive.zip.
Windows
В системе на базе Windows встроенными средствами можно распаковать только ZIP-архивы. Для работы с разными архивами рекомендуется поставить архиватор, например 7-Zip.
Команда 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
2. Просмотр содержимого архива
Следующая команда выводит содержимое архива, не распаковывая его:
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.








