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

Използване на GUI архивни мениджъри (по избор)

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

Десктоп средаАрхивен мениджър
GNOMEFile Roller
KDE PlasmaArk
15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало