Что такое tar?
tar - это сокращение от 'Tape Archive' (архив на ленте), изначально созданный для резервного копирования данных на магнитные ленты. В настоящее время он используется как стандартный инструмент Linux для объединения нескольких файлов и каталогов в один файл для удобства управления или передачи. Сам по себе tar только объединяет файлы, а сжатие указывается с помощью отдельных опций (-z, -j, -J).
Основные режимы работы
tar работает в одном из основных режимов за раз (создание, извлечение, список).
- -c (Create): Создает новый архивный файл.
- -x (Extract): Извлекает файлы из архивного файла.
- -t (List): Проверяет содержимое (список) архивного файла без распаковки.
- -f (File): Указывает 'файл' архива, с которым нужно работать. Обязателен почти для всех операций.
Основные опции (Shell)
tar используется путем комбинирования опций. Самое важное — выбрать одну из опций: `-c`, `-x` или `-t`.
1. Режимы работы (выберите один)
2. Указание файла и сжатия
3. Цель и дополнительные функции
Сгенерированная команда:
Комбинируйте команды.
Описание:
`tar` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры сценариев использования (Shell)
Примеры наиболее часто используемых комбинаций. (Дефис перед опциями можно опустить, но рекомендуется его указывать.)
Создание архива с gzip (.tar.gz)
tar -cvzf backup.tar.gz /home/user/data
c (создать), v (подробно), z (gzip), f (файл) + [результирующий файл] + [цель]
Распаковка архива gzip (.tar.gz)
tar -xvzf backup.tar.gz
x (извлечь), v (подробно), z (gzip), f (файл) + [целевой файл]
Просмотр содержимого сжатого файла (.tar.gz)
tar -tvf backup.tar.gz
t (список), v (подробно), f (файл) (современный tar автоматически определяет -z)
Распаковка в указанный каталог
tar -xvzf backup.tar.gz -C /opt/restore
Укажите путь с помощью опции -C.
Создание архива с bzip2 (.tar.bz2)
tar -cvjf archive.tar.bz2 ./docs
Используйте опцию j (bzip2) вместо z.
Распаковка архива bzip2 (.tar.bz2)
tar -xvjf archive.tar.bz2
Архивирование с исключением определенных файлов/каталогов
tar -cvzf app.tar.gz ./app --exclude="*.log" --exclude="node_modules"
Используйте опцию --exclude. (Можно использовать несколько раз)
Установка
tar по умолчанию установлен практически во всех дистрибутивах Linux (и macOS). (Обычно это GNU tar). Если по какой-либо причине требуется установка, его можно установить под именем пакета 'tar'.
Установлен по умолчанию
Отдельная установка практически не требуется. Попробуйте ввести `tar --version`, чтобы проверить версию.
Debian/Ubuntu (при необходимости)
sudo apt update && sudo apt install -y tar
RHEL/CentOS/Fedora (при необходимости)
sudo dnf install -y tar
Советы и примечания
Полезные советы
- Опущение дефиса (-): По старой традиции дефис в первой группе опций можно опустить, например, `tar cvf ...` (т.е. `tar cvf` = `tar -cvf`). Однако для ясности рекомендуется использовать `-`.
- Автоматическое определение сжатия: Современный `tar` автоматически определяет сжатие по расширению файла при извлечении (-x) даже без опций `-z`, `-j`, `-J`. (Например, достаточно ввести `tar -xf archive.tar.gz`.)
- Сохранение разрешений (-p): При восстановлении после резервного копирования системы важно использовать опцию `-p` для сохранения исходных разрешений и прав владения файлами.
- Проблемы с путем (-C): Если вы хотите распаковать файлы не в текущее местоположение, а в другое, использование опции `-C /путь` гораздо эффективнее, чем перемещение файлов.
- Осторожно с абсолютными путями: Если вы архивируете файлы с абсолютным путем, например, `/home/user` при создании (-c), то при извлечении (-x) файлы будут распакованы по этому же абсолютному пути. (Современный tar может удалять начальный `/` из соображений безопасности.) По возможности безопаснее архивировать с относительными путями, например, `cd /home && tar -cvf user.tar ./user`.