Синтаксис команды tar
В операционных системах Unix/Linux команда tar работает аналогично zip/rar в Windows (но с некоторыми ограничениями). Она позволяет:
- создавать архивы и записывать файлы в них;
- распаковывать данные;
- удалять;
- просматривать содержимое;
- обновлять файлы, сохраняя те же названия.
Чтобы увидеть полный список возможностей архиватора, необходимо ввести в консоль tar --help.
В справочной информации система подсказывает, как правильно пользоваться настройкой:
tar [OPTION...] [FILE]...
Синтаксис для архивации файлов выглядит таким образом:
tar <-опция> <результат> <архивируемые файлы>
Синтаксис для распаковки в Linux:
tar <-опция> <имя архива>
В России на базе Linux доступна серверная операционная система enterprise-уровня Platform V SberLinux OS от разработчика ПО СберТех. Отечественное программное обеспечение включено в Реестр российского ПО (РРПО) и поставляется в двух вариантах:
- Platform V SberLinux OS Server (SLO) — ОС для бизнес-приложений, используемая при работе с серверами;
- Platform V SberLinux OS Core (SLC) — ОС для работы с контейнерами приложений.
Как пользоваться tar
Чтобы архивировать и извлекать файлы, пользователь может выбрать любой из способов:
- задавать команды через консоль;
- использовать встроенный архиватор.
Ниже рассмотрим варианты для для работы через консоль. Например, у нас есть папка под названием GitVerse. Чтобы архивировать ее, необходимо ввести в консоль:
tmp $tar -cf backup.tar GitVerse
Синтаксис команды построчно:
- tmp — название папки;
- $tar — вызов утилиты;
- -cf — команда;
- backup.tar — название архива на выходе;
- GitVerse — исходная папка, которую необходимо архивировать.
Результат — создание архива по заданному пользователем пути.
К сожалению, нативно не поддерживается установка пароля на архив (как это можно сделать в zip или rar). Но доступны другие функции, в том числе сохранение прав доступа.
Список основных операций представлен в таблице.
Ключ | Что делает | Моды, функция |
-x | Извлечь (распаковать) | --extract, --get |
-u | Обновить | --update |
-t | Посмотреть содержимое | --list |
-r | Добавить данные в конец архива | --append |
-d | Проверить различия (чем отличается archive от file system | --diff, --compare |
-с | Создать | --create --delete |
Существуют так называемые Operation modifiers. Это модификаторы (особые параметры для каждой из основных опций). Обзор некоторых из них представлен в таблице ниже.
Ключ | Что делает | |
-G | --hole-detection=TYPE | Обнаружение дыр определенного типа |
-G | --level=NUMBER | Определение уровня дампа |
-G | --ignore-failed-read | Игнорирование нечитаемых файлов |
-n | --no-seek | Создание not seekable-архива |
-n | --seek | Создание seekable-архива |
-n | --occurrence[=NUMBER] | Обработка только №-нного вхождения. Используется только в сочетании с--delete, --diff, --extract or --list |
-n | --sparse-version=MAJOR[.MINOR] | Версия для sparse-формата |
-S | --sparse | Обработка sparse-файлов (специальная обработка разреженных данных) |
-C | --directory=DIR | Смена директории на указанную |
-C | --exclude=PATTERN | Исключение по шаблону (паттерну) |
-C | --exclude-backups | Исключение бэкапов (резервное копирование) |
-C | --exclude-caches | Исключение кэша (каталогов, содержащих CACHEDIR.TAG). При этом tag file остается |
-C | --exclude-caches-all | Исключение всех каталогов с CACHEDIR.TAG |
-C | --exclude-ignore=FILE | Исключение файлов ignore |
-v | --verbose | Вывод списка упакованных files |
-v | --totals | Вывод итоговой информации завершенного процесса |
-O | --to-stdout | Извлечение в стандартный output |
-p | --sort=ORDER | Сортировка в определенном порядке: нет (none, default), по имени (name) или по индексу (inode) |
-p | --same-permissions | Сохранение всех прав доступа |
-s | --preserve-order, --same-order | Аргументы в том же порядке, что и files в архиве |
-H | --format=FORMAT | Создание архива в заданном формате. Вместо FORMAT можно подставить gnu, v7, oldgnu, pax, posix, ustar |
Стоит учитывать, что tar следует философии UNIX: «Делать только одну вещь, но делать ее хорошо». Именно по этой причине команда не создает сжатые архивы. Вместо этого для компрессии используются утилиты gzip и bzip2. Ранее применяли еще и compress, но сегодня она практически вышла из употребления.
В таблице ниже приведены Compression options — «опции для сжатия».
Ключ | Функция | Что сделать |
-a | --auto-compress | Определить программу сжатия (compression program) |
-I | --use-compress-program=PROG | Фильтровать при помощи утилиты PROG (must accept -d) |
-j | --bzip2 | Сжать при помощи --bzip2 |
-J | --xz | Использовать утилиту xz |
-J | --lzip | Использовать lzip |
-J | --lzop | Применить --lzop |
-J | --no-auto-compress | Не использовать автокомпрессор |
-Z | --compress, --uncompress | Использование сжатия |
Всего разработчикам доступно более 300 команд, позволяющих архивировать данные и извлекать их.
Примеры использования
Ниже рассмотрим несколько базовых примеров, когда используют команду в операционной системе Linux.
Извлечь файлы
В обзоре выше рассматривали синтаксис команды, чтобы создать архив из папки под названием GitVerse. В результате получился backup. Теперь можно извлечь данные при помощи команды распаковки:
tmp $tar -xvf backup.tar
Создать архив со сжатием
Например, необходимо не просто создать архив, а еще и сжать его с помощью gzip (сокращение от GNU Zip). При компрессии создается file, в котором будет дополнительное расширение .gz от этой утилиты. Получается конструкция такого вида:
GitVerse.tar.gz
Дело в том, что снова срабатывает принцип UNIX-программирования: «Делай что-то одно, но делай хорошо». Это значит, что gzip не может сжать два и более файла. Для начала их нужно архивировать с помощью tar, затем — компрессировать через gzip. В результате file на выходе будет иметь «двойное расширение» — tar.gz (или просто tgz).
Теперь можно создать архив с его сжатием:
Downloads $tar -czf GitVerse.tar.gz GitVerse
В этой записи:
- Downloads — название папки;
- $tar — вызов утилиты;
- -czf — создание сжатого file»;
- GitVerse.tar.gz — название файла, который нужно создать;
- GitVerse — директория.
Команды для распаковки начинаются с -х. В примере ниже:
Downloads $tar -xzf GitVerse.tar.gz
Архивировать и разархивировать zip-формат
Рассматриваемый в статье инструмент не работает с zip-архивами. В UNIX-системах используются утилиты zip и unzip. Поэтому разработчику нужно установить пакеты — например, через строчку кода в консоли (зависит от дистрибутива):
yum install zip unzip
Чтобы создать zip, используется команда:
zip -r gitverse.zip /home/GitVerse
Чтобы распаковать его, необходимо ввести в консоль:
unzip gitverse.zip
Дополнительные команды для работы
Ниже приведем некоторые примеры команд для ежедневной работы (все начинаются с ключевого слова tar):
- -I pbzip2 -xf <имя>.tar.bz2 <файл> — многопоточная архивация данных;
- --xvf <название папки> "file1" "file2" — разархивирование (распаковка) нескольких файлов;
- -tf <название папки> — посмотреть, что внутри (без распаковки архива);
- --czf - <название папки> | wc -c — проверка размера, который имеет конкретный архив;
- --exclude='git_*' -czvf sbertech.tar.gz /wwwsite — исключение по маске (в итоговую папку не попадают любые документы, начинающиеся на git, поскольку пользователь поставил их в исключение);
- -zcvf - /git | split -b 10M - git_home.tar.gz — создание архива, который будет разбит на части по 10М каждая.
Выводы
Мы рассмотрели команду для архивирования в Linux и UNIX-подобных системах. Tar поставляется по умолчанию во всех дистрибутивах Линукс.
Основное предназначение — создать или распаковать архив файлов без их сжатия. Если необходимо еще и сжать файлы, используются дополнительные утилиты — например, bzip2 и gzip.