Включите исполнение JavaScript в браузере, чтобы запустить приложение.
25 мар 2025

Команда tar в Linux

Рассказываем с примерами кода, что такое команда tar в Linux. Создаем и распаковываем архивы, выводим список доступных функций, используем компрессоры (утилиты) для сжатия. Полный обзор команд, синтаксиса и принципов работы!

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

В операционных системах Unix/Linux команда tar работает аналогично zip/rar в Windows (но с некоторыми ограничениями). Она позволяет:

  • создавать архивы и записывать файлы в них;
  • распаковывать данные;
  • удалять;
  • просматривать содержимое;
  • обновлять файлы, сохраняя те же названия.

Чтобы увидеть полный список возможностей архиватора, необходимо ввести в консоль tar --help.

Список всех команд для tar в операционной системе Linux
Список всех команд для tar в операционной системе Linux

В справочной информации система подсказывает, как правильно пользоваться настройкой:

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 — исходная папка, которую необходимо архивировать.

Результат — создание архива по заданному пользователем пути. 

Создание архива из исходной папки GitVerse с помощью tar
Создание архива из исходной папки GitVerse с помощью tar

К сожалению, нативно не поддерживается установка пароля на архив (как это можно сделать в 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

Извлечь файлы с помощью tar
Извлечь файлы с помощью 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 

Архивировать со сжатием при помощи tar
Архивировать со сжатием при помощи tar

Архивировать и разархивировать 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.