15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
04.08.2025

Как распаковать файл .tar.gz в Linux: полное руководство с продвинутыми советами

Работа со сжатыми файлами — это повседневная реальность в любой среде Linux. Среди наиболее широко используемых форматов — .tar.gz, двухэтапный формат, который объединяет tar для архивирования и gzip для сжатия. Независимо от того, распаковываете ли вы исходный код программного обеспечения, восстанавливаете резервные копии или развертываете файлы конфигурации на сервере VPS Hosting, знание того, как эффективно и безопасно работать с архивами .tar.gz, является фундаментальным навыком Linux.

Это руководство охватывает все: от базовой команды извлечения до продвинутых методов работы с большими архивами, усиления безопасности и лучших практик написания скриптов.

Что такое файл .tar.gz?

Файл .tar.gz — часто называемый tarball — создается в два этапа:

  1. tar объединяет несколько файлов и директорий в один архив (.tar)
  2. gzip сжимает этот архив, чтобы уменьшить его размер (.tar.gz или .tgz)

Распространенные варианты использования

  • Распространение исходного кода программного обеспечения
  • Упаковка файлов конфигурации и резервных копий
  • Архивирование файлов логов для долгосрочного хранения
  • Передача больших деревьев директорий между серверами

Пример имени файла: project-files.tar.gz

Базовая команда извлечения

Стандартная команда для извлечения файла .tar.gz:

tar -xvzf file.tar.gz

Разбор флагов

ФлагЗначение
-xИзвлечь файлы из архива
-vРежим подробного вывода — выводит каждый файл при извлечении
-zРаспаковать с использованием gzip
-fУказывает имя файла для работы

Эта единственная команда справляется с подавляющим большинством повседневных задач извлечения.

Извлечение в определенную директорию

По умолчанию tar извлекает файлы в текущую рабочую директорию. Чтобы перенаправить вывод в определенное место, используйте флаг -C:

tar -xvzf file.tar.gz -C /path/to/target-directory

> Примечание: Целевая директория должна уже существовать. Создайте ее сначала с помощью mkdir -p /path/to/target-directory при необходимости.

Этот подход особенно полезен в автоматизированных скриптах развертывания или при организации нескольких архивов на производственном сервере.

Просмотр содержимого архива перед извлечением

Перед извлечением архива — особенно из незнакомого источника — хорошей практикой является предварительная проверка его содержимого:

tar -tvzf file.tar.gz

Флаг -t выводит список всех файлов и директорий внутри архива без извлечения. Это помогает вам:

  • Понять внутреннюю структуру директорий
  • Избежать случайного перезаписи существующих файлов
  • Обнаружить подозрительные или неожиданные пути

Извлечение определенных файлов или директорий

Вам не всегда нужно извлекать весь архив. Чтобы извлечь отдельный файл или папку, укажите его путь точно так, как он отображается внутри архива:

tar -xvzf file.tar.gz path/to/specific-file.txt

Чтобы найти точный внутренний путь, сначала выполните команду --list:

tar -tvzf file.tar.gz | grep filename

> Важно: Используйте относительный путь, показанный в списке архива, а не абсолютный путь, начинающийся с /.

Соображения безопасности при извлечении ненадежных архивов

Извлечение файлов .tar.gz из неизвестных или ненадежных источников может представлять серьезные риски безопасности, включая атаки обхода пути, при которых вредоносные архивы перезаписывают критические системные файлы. Применяйте эти защиты:

Предотвращение перезаписи директорий

tar --no-overwrite-dir -xvzf file.tar.gz

Удаление ведущих компонентов пути

Флаг --strip-components удаляет ведущие уровни директорий из извлеченных путей, что нейтрализует попытки внедрения абсолютного пути:

tar --strip-components=1 -xvzf untrusted-archive.tar.gz

Извлечение в изолированную директорию

Всегда извлекайте ненадежные архивы в выделенную директорию-песочницу и проверяйте содержимое перед перемещением файлов в их окончательное место назначения:

mkdir /tmp/sandbox && tar -xvzf untrusted-archive.tar.gz -C /tmp/sandbox

Эти практики особенно критичны на общей инфраструктуре. Если вы управляете несколькими сайтами или клиентами, рассмотрите использование сред Shared Web Hosting со строгими границами разрешений.

Эффективная работа с большими архивами

Для архивов размером в несколько гигабайт стандартное извлечение может казаться черным ящиком. Эти методы улучшают видимость и производительность.

Мониторинг прогресса с pv

pv (pipe viewer) отображает полосу прогресса в реальном времени и скорость передачи:

pv file.tar.gz | tar xzvf -

Установите pv, если он еще не доступен:

# Debian/Ubuntu
sudo apt install pv

# CentOS/RHEL/AlmaLinux
sudo dnf install pv

Отключение режима подробного вывода для более быстрого извлечения

При извлечении очень больших архивов флаг -v может замедлить процесс, выводя тысячи имен файлов в терминал. Удалите его для лучшей производительности:

tar -xzf file.tar.gz

Использование параллельной распаковки с pigz

Для многоядерных серверов pigz заменяет gzip параллельной реализацией и может значительно сократить время распаковки:

tar -I pigz -xf file.tar.gz

Распаковка в два отдельных этапа

Иногда вам нужен более точный контроль — например, при интеграции в конвейер или проверке промежуточного файла .tar перед распаковкой. Вы можете разделить процесс на две команды:

# Step 1: Decompress gzip to get a plain .tar archive
gunzip file.tar.gz

# Step 2: Extract the .tar archive
tar -xvf file.tar

Этот подход полезен, когда:

  • Вы хотите проверить сырой файл .tar перед извлечением
  • Ваш конвейер обрабатывает этапы .tar и .gz отдельно
  • Вам нужно передать файл .tar другому инструменту

Создание архива .tar.gz

Знание того, как создавать архивы, так же важно, как их извлечение. Синтаксис зеркален извлечению, но использует -c (создать) вместо -x:

tar -czvf archive-name.tar.gz /path/to/directory/

Исключение определенных файлов или директорий

tar -czvf archive.tar.gz /path/to/directory/ --exclude='*.log' --exclude='node_modules'

Это бесценно для создания чистых пакетов развертывания или резервных копий без ненужного балласта.

Автоматизация операций .tar.gz в скриптах

На производственных серверах — независимо от того, используете ли вы Dedicated Server или управляемый VPS — автоматизация операций с архивами экономит время и снижает человеческие ошибки.

Пример: скрипт автоматического резервного копирования

#!/bin/bash

BACKUP_DIR="/var/backups"
SOURCE_DIR="/var/www/html"
DATE=$(date +%Y-%m-%d)
ARCHIVE="$BACKUP_DIR/website-backup-$DATE.tar.gz"

mkdir -p "$BACKUP_DIR"
tar -czf "$ARCHIVE" --exclude='*.tmp' "$SOURCE_DIR"

echo "Backup created: $ARCHIVE"

Запланируйте это с помощью задания cron для полностью автоматизированных ежедневных резервных копий:

0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Использование графических менеджеров архивов (опционально)

Если вы работаете в среде рабочего стола Linux, графические инструменты предоставляют альтернативу перетаскивания:

Среда рабочего столаМенеджер архивов
GNOMEFile Roller
15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать