Гид по технологиям

Как использовать tar: создание, сжатие и распаковка архивов

3 min read Linux Обновлено 21 Dec 2025
tar: создание, сжатие и распаковка архивов
tar: создание, сжатие и распаковка архивов

TL;DR

Tar — это утилита для архивации в Linux, которая умеет одновременно упаковывать и сжимать файлы. Установите tar через пакетный менеджер, используйте -c/-x/-f для создания и извлечения, добавляйте -z/-j/-J или -I для сжатия (gzip, bzip2, xz или свой процесс). Ниже — подробные примеры, чек-листы, рекомендации по выбору алгоритма и сценарии использования.

Быстрые ссылки

  • Что такое tar и как его установить?

  • Создание несжатого архива

  • Создание сжатого архива

  • Как получить больше экономии места с помощью более агрессивного сжатия

  • Другие программы сжатия

  • Распаковка архива


Логотип tar и схема архивации с компрессией

Что такое tar и как его установить?

Tar — это классическая утилита архивации в UNIX/Linux. Она собирает несколько файлов и папок в единый файл-архив (обычно с расширением .tar) и может вызывать программы сжатия для уменьшения размера выходного файла.

Определение в одном предложении: tar — инструмент для упаковки файлов в единый контейнер, с поддержкой потокового сжатия.

Для просмотра локальной справки запустите:

man tar

Как установить tar на популярных дистрибутивах Linux:

  • Debian/Ubuntu/Mint:
sudo apt install tar
  • RHEL/CentOS/Fedora:
sudo yum install tar

Пример подготовки тестовой папки и файлов (используется далее в примерах):

mkdir test; cd test

touch a b c d e f

echo 1 > a; echo 5 > e; echo ‘22222222222222222222’ > b


Здесь мы создали каталог test и шесть файлов, добавив в некоторые из них данные. Файл b содержит повторяющиеся символы и хорошо сжимается.

Важно: если вы не понимаете, как работает сжатие, прочитайте статью о принципах сжатия файлов — повторяющиеся данные обычно сжимаются лучше, сжатые форматы (JPEG, MP4, ZIP и т.д.) часто уже не сжимаются дополнительно.

## Создание несжатого архива

![Создание простого несжатого архива tar](/files/69df189c-eaac-4796-8ce5-f35eb5a85131.png)

Чтобы создать простой несжатый архив, выполните:

tar -hcf all_files.tar *


Затем можно посмотреть размеры файлов:

ls -l | grep -v total | awk ‘{print $5”\tbytes for: “$9}’ | sort -n


Разбор опций команды tar, использованной выше:

- -h — dereference: следовать символическим ссылкам и архивировать файлы, на которые они указывают. Рекомендую включать всегда, чтобы в архив попадали реальные файлы, а не сломанные ссылки.
- -c — создать новый архив (create).
- -f — указание имени архива; требует аргумента (имени файла) сразу после опции.

Обратите внимание: короткие опции можно объединять: -hcf == -h -c -f.

После создания архива вы заметите, что .tar-файл может быть заметно больше суммы исходных файлов — tar добавляет метаданные и заголовки, и, разумеется, сам контейнер ничего не сжимает.

Чтобы определить тип файла в командной строке используйте:

file c

file b

file all_files.tar


Это показывает, является ли файл текстовым, бинарным, сжатым и т.п.

## Создание сжатого архива

Если требуется одновременно архивировать и сжимать, используйте дополнительные опции:

tar -zhcf all_files.tar.gz [a-f]

ls -l | grep -v total | awk ‘{print $5”\tbytes for: “$9}’ | sort -n


![Сравнение размеров сжатого и несжатого архива](/files/995ab23e-070d-459b-ab86-f21108498393.png)

Здесь мы добавили -z — встроенную опцию tar для использования gzip. Обратите внимание, что в примере мы указали шаблон [a-f], чтобы не включать уже созданный all_files.tar внутрь нового архива.

Результат для данного набора файлов в примере — очень компактный архив (186 байт), потому что заголовки tar и повторяющиеся данные сжимаются хорошо. На больших файлах и реальных данных соотношения будут иными.

Советы по шаблонам и регулярным выражениям: используйте регулярные выражения и glob-выражения, чтобы контролировать, какие файлы попадут в архив; команды sed/grep/awk полезны для подготовки списка файлов.

### Когда gzip неудобен

- Данные уже сжаты (например, .zip, .jpg) — gzip не даст выигрыша.
- Требуется лучшее сжатие ценой времени — рассмотрите bzip2 или xz.

## Увеличение эффективности сжатия

Можно задать собственную команду сжатия через опцию -I (заглавная i):

tar -I ‘gzip -9’ -hcf all_files.tar.gz [a-f]

ls -l | grep -v total | awk ‘{print $5”\tbytes for: “$9}’ | sort -n


![Использование опции -I для указания программы сжатия](/files/c48b51fe-d559-45cf-a60b-8fba884f36b5.png)

Здесь мы явно передали gzip с уровнем сжатия -9. Это обычно дает лучшее сжатие, но медленнее.

Общая зависимость:

- -1 — быстрое сжатие, меньшая степень сжатия.
- -9 — медленное сжатие, максимальная степень сжатия (для gzip/bzip2/xz могут быть разные флаги).

Пример: переключение компрессора через -I позволяет использовать нестандартные опции или внешние инструменты (pigz — многопоточный gzip и т.д.). Пример с pigz:

tar -I ‘pigz -9’ -hcf all_files.tar.gz [a-f]


pigz устанавливается отдельно и даёт ускорение на многопроцессорных системах.

## Другие программы сжатия

Tar поддерживает несколько распространённых алгоритмов через свои опции:

- -z — gzip (.gz)
- -j — bzip2 (.bz2)
- -J — xz (.xz)
- -I — произвольная команда (например, zstd, pigz)

Примеры максимизации параметров:

bzip2 с максимальным уровнем:

tar -I ‘bzip2 -9’ -hcf all_files.tar.bz2 [a-f]


xz с агрессивной настройкой:

tar -I ‘xz -9e’ -hcf all_files.tar.xz [a-f]


![Пример сжатия bzip2 -9](/files/508afbf4-0cb7-44c1-ab9b-1dc159903ec8.png)

![Пример сжатия xz -9e](/files/0ef8b31b-53eb-4d28-bcdf-e1736dbf0e6e.png)

Замечание: более «тяжёлые» алгоритмы (bzip2/xz) часто дают лучшее сжатие, но потребляют больше CPU и времени. Для больших наборов данных стоит протестировать несколько алгоритмов и замерить время и размер.

Советы по выбору алгоритма:

- Для быстрой упаковки с хорошей скоростью и совместимостью — gzip.
- Для лучшего сжатия ценой времени — xz.
- Для многопоточной компрессии — zstd или pigz (через -I).

## Распаковка архива

Распаковка проста: используйте -x (extract).

Пример очистки примера и распаковки:

rm a b c d e f

tar -xf all_files.tar.gz

ls


Tar автоматически определяет встроенный формат, если вы используете соответствующую опцию (-z/-j/-J) или расширение; если используете -I с кастомным компрессором, при распаковке tar также сможет распаковать, если вы используете аналогичную команду или если расширение подсказывает алгоритм.

Важно: для распаковки требуется установленная программа сжатия (gzip, bzip2, xz и т.д.). Установите через пакетный менеджер при необходимости.

## Практическое руководство: чек-лист перед созданием архива

- Проверить свободное место: df -h
- Убедиться, что в архив не попадают временные/локальные файлы (.git, tmp) — используйте --exclude
- Сформировать список файлов: find . -type f | grep -E '...'
- Решить алгоритм сжатия: gzip/pigz/xz/zstd
- Определить уровень сжатия (-1..-9) по компромиссу скорость/качество
- Выполнить команду tar с --verify (если важно) или посчитать контрольные суммы

Пример исключения временных файлов:

tar –exclude=’*.log’ –exclude=’tmp’ -I ‘pigz -9’ -hcf project.tar.gz project/


## Рольовые чек-листы

- Администратор бэкапов:
  - План бэкапов (ежедневно/еженедельно)
  - Проверка восстановления (раз в неделю)
  - Хранение контрольных сумм рядом с архивами

- Разработчик перед релизом:
  - Собирать артефакты в tar вместо zip для совместимости с CI
  - Исключать большие бинарники, которые хранятся отдельно

- Оператор CI/CD:
  - Использовать многопоточное сжатие (pigz/zstd)
  - Не сжимать артефакты, которые уже хранятся в сжатом виде

## Когда tar не подходит или где он терпит неудачу

- Нужна дедупликация на уровне блоков — рассмотрите borg или restic.
- Хочется ускорить передачу по сети с синхронизацией изменений — используйте rsync/rdiff.
- Требуется индексируемая архивация с метаданными и шифрованием — рассмотрите форматы и инструменты архивирования с поддержкой метаданных и шифрования.

## Методология тестирования компрессии (минимальная)

1. Подготовьте репрезентативный набор данных (размер, тип, структура).
2. Для каждого алгоритма и уровня сжатия:
   - Засеките время (time tar ...)
   - Посчитайте итоговый размер
   - Проверте корректность распаковки и контрольные суммы
3. Сравните результат по соотношению Время ↔ Размер и выберите оптимум.

## Ментальная модель выбора компрессора

- Малые текстовые файлы → gzip/xz дадут выигрыш.
- Большие уже сжатые бинарные файлы → не сжимаем.
- Сервер с несколькими ядрами → используем многопоточные компрессоры (pigz, zstd).

## Примеры распространённых команд

Создать архив каталога project и исключить временные файлы:

tar –exclude=’*.log’ -I ‘pigz -9’ -hcf project.tar.gz project/


Распаковать архив в текущую директорию:

tar -xf project.tar.gz


Просмотреть содержимое архива без распаковки:

tar -tf archive.tar.gz


Извлечь один файл из архива:

tar -xf archive.tar.gz path/inside/archive/file.txt


Параллельное сжатие с zstd (если установлен):

tar -I ‘zstd -T0 -19’ -hcf archive.tar.zst files/


## Критерии приёмки

- Архив создаётся без ошибок и содержит ожидаемые файлы.
- Архив распаковывается и файлы идентичны оригиналам (проверка контрольной суммы).
- Размер и время сжатия соответствуют допустимым требованиям (политика SLA или внутренняя цель).

## Визуальное руководство: упрощённый алгоритм выбора (Mermaid)

flowchart TD A[Нужно архивировать?] –>|Да| B{Данные уже сжаты?} B –>|Да| C[Только тар без сжатия] B –>|Нет| D{Нужна скорость или размер важнее?} D –>|Скорость| E[Использовать pigz/zstd с низким уровнем] D –>|Размер| F[Использовать xz или zstd с высоким уровнем] C –> G[Создать .tar] E –> G F –> G G –> H[Хранение/передача/проверка]


## Короткий глоссарий

- tar — утилита архивации
- gzip, bzip2, xz, zstd — алгоритмы/инструменты сжатия
- pigz — многопоточный gzip
- -c/-x/-f/-z/-j/-J/-I — ключи tar для создания, извлечения, имени архива и выбора компрессора

## Безопасность и приватность

- Архивы не шифруются автоматически. Если нужны конфиденциальность и защита, применяйте шифрование (gpg, openssl) поверх полученного .tar.* файла.
- Храните список контрольных сумм и метаданных отдельно от архива для возможности проверки целостности.

## Заключение

Tar — гибкий инструмент архивации с мощной интеграцией алгоритмов сжатия. Он остаётся удобным выбором для бэкапов, упаковки релизов и переноса наборов файлов. Подбирайте компрессор и уровень сжатия под задачу — учитывайте компромисс между скоростью и размером. Тестируйте на репрезентативных данных и автоматизируйте проверку восстановления.

Важно: всегда проверяйте распаковку после создания резервной копии.

---

Спасибо за внимание. Удачного архивирования!
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Intercom на HomePod и iPhone — как пользоваться
Умный дом

Intercom на HomePod и iPhone — как пользоваться

Многокомнатное аудио на Amazon Echo — настройка
Умный дом

Многокомнатное аудио на Amazon Echo — настройка

Как запустить Minecraft Realms — простой сервер за 10 минут
Игры

Как запустить Minecraft Realms — простой сервер за 10 минут

Как чистить ремешок Apple Watch правильно
Гаджеты

Как чистить ремешок Apple Watch правильно

Как заблокировать сайт в Firefox на ПК и мобильных
Руководства

Как заблокировать сайт в Firefox на ПК и мобильных

Бенчмарки для Linux: лучшие инструменты и методика
Инструменты

Бенчмарки для Linux: лучшие инструменты и методика