15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
04.08.2025

Jak rozpakować plik .tar.gz w Linux: Kompletny przewodnik z zaawansowanymi wskazówkami

Praca z plikami skompresowanymi to codzienność w każdym środowisku Linux. Wśród najczęściej używanych formatów jest .tar.gz, format dwuetapowy, który łączy tar do archiwizacji i gzip do kompresji. Niezależnie od tego, czy rozpakujesz kod źródłowy oprogramowania, przywrócisz kopie zapasowe, czy wdrożysz pliki konfiguracyjne na serwerze VPS Hosting, umiejętność efektywnego i bezpiecznego obsługiwania archiwów .tar.gz jest fundamentalną umiejętnością Linux.

Ten przewodnik obejmuje wszystko, od podstawowego polecenia ekstrakcji po zaawansowane techniki dla dużych archiwów, wzmacnianie bezpieczeństwa i najlepsze praktyki skryptowania.

Czym jest plik .tar.gz?

Plik .tar.gz — często zwany tarball — jest tworzony w dwóch krokach:

  1. tar łączy wiele plików i katalogów w jedno archiwum (.tar)
  2. gzip kompresuje to archiwum, aby zmniejszyć jego rozmiar (.tar.gz lub .tgz)

Typowe przypadki użycia

  • Dystrybucja kodu źródłowego oprogramowania
  • Pakowanie plików konfiguracyjnych i kopii zapasowych
  • Archiwizacja plików dziennika do długoterminowego przechowywania
  • Przesyłanie dużych drzew katalogów między serwerami

Przykładowa nazwa pliku: project-files.tar.gz

Podstawowe polecenie ekstrakcji

Standardowe polecenie do rozpakowania pliku .tar.gz to:

tar -xvzf file.tar.gz

Rozbicie flag

FlagaZnaczenie
-xRozpakuj pliki z archiwum
-vTryb szczegółowy — wyświetla każdy plik podczas rozpakowania
-zDekompresuj za pomocą gzip
-fOkreśla nazwę pliku do operacji

To jedno polecenie obsługuje zdecydowaną większość codziennych zadań ekstrakcji.

Ekstrakcja do określonego katalogu

Domyślnie tar rozpakuje pliki do bieżącego katalogu roboczego. Aby przekierować dane wyjściowe do określonej lokalizacji, użyj flagi -C:

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

> Uwaga: Katalog docelowy musi już istnieć. Utwórz go najpierw za pomocą mkdir -p /path/to/target-directory jeśli jest to konieczne.

To podejście jest szczególnie przydatne w zautomatyzowanych skryptach wdrażania lub podczas organizowania wielu archiwów na serwerze produkcyjnym.

Podgląd zawartości archiwum przed ekstrakcją

Przed rozpakowaniem archiwum — szczególnie z nieznanego źródła — dobrą praktyką jest najpierw sprawdzenie jego zawartości:

tar -tvzf file.tar.gz

Flaga -t wyświetla listę wszystkich plików i katalogów wewnątrz archiwum bez rozpakowania czegokolwiek. To pomaga Ci:

  • Zrozumieć wewnętrzną strukturę katalogów
  • Uniknąć przypadkowego nadpisania istniejących plików
  • Wykryć podejrzane lub nieoczekiwane ścieżki

Ekstrakcja określonych plików lub katalogów

Nie zawsze musisz rozpakować całe archiwum. Aby wyciągnąć jeden plik lub folder, określ jego ścieżkę dokładnie tak, jak pojawia się wewnątrz archiwum:

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

Aby znaleźć dokładną ścieżkę wewnętrzną, uruchom najpierw polecenie --list:

tar -tvzf file.tar.gz | grep filename

> Ważne: Użyj ścieżki względnej pokazanej w wykazie archiwum, a nie ścieżki bezwzględnej zaczynającej się od /.

Zagadnienia bezpieczeństwa przy rozpakowywaniu niezaufanych archiwów

Rozpakowanie plików .tar.gz z nieznanych lub niezaufanych źródeł może stwarzać poważne zagrożenia bezpieczeństwa, w tym ataki path traversal, w których złośliwe archiwa nadpisują krytyczne pliki systemowe. Zastosuj te zabezpieczenia:

Zapobiegaj nadpisywaniu katalogów

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

Usuń wiodące komponenty ścieżki

Flaga --strip-components usuwa wiodące poziomy katalogów z rozpakowanych ścieżek, co neutralizuje próby wstrzyknięcia ścieżki bezwzględnej:

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

Ekstrakcja do izolowanego katalogu

Zawsze rozpakuj niezaufane archiwa do dedykowanego katalogu piaskownicy i sprawdź zawartość przed przeniesieniem plików do ich ostatecznej lokalizacji:

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

Te praktyki są szczególnie krytyczne w infrastrukturze współdzielonej. Jeśli zarządzasz wieloma witrynami lub klientami, rozważ użycie środowisk Shared Web Hosting z ścisłymi granicami uprawnień.

Efektywna obsługa dużych archiwów

W przypadku archiwów obejmujących kilka gigabajtów standardowa ekstrakcja może wydawać się czarną skrzynką. Te techniki poprawiają widoczność i wydajność.

Monitoruj postęp za pomocą pv

pv (pipe viewer) wyświetla pasek postępu w czasie rzeczywistym i prędkość transferu:

pv file.tar.gz | tar xzvf -

Zainstaluj pv jeśli nie jest jeszcze dostępny:

# Debian/Ubuntu
sudo apt install pv

# CentOS/RHEL/AlmaLinux
sudo dnf install pv

Wyłącz tryb szczegółowy dla szybszej ekstrakcji

Przy rozpakowywaniu bardzo dużych archiwów flaga -v może spowolnić proces, drukując tysiące nazw plików do terminala. Pomiń ją dla lepszej wydajności:

tar -xzf file.tar.gz

Użyj równoległej dekompresji z pigz

W przypadku serwerów wielordzeniowych pigz zastępuje gzip implementacją równoległą i może dramatycznie zmniejszyć czas dekompresji:

tar -I pigz -xf file.tar.gz

Dekompresja w dwóch oddzielnych krokach

Czasami potrzebujesz bardziej precyzyjnej kontroli — na przykład podczas integracji z potokiem lub sprawdzania pośredniego pliku .tar przed rozpakowaniem. Możesz podzielić proces na dwa polecenia:

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

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

To podejście jest przydatne, gdy:

  • Chcesz sprawdzić surowy plik .tar przed ekstrakcją
  • Twój potok przetwarza etapy .tar i .gz oddzielnie
  • Musisz przekazać plik .tar do innego narzędzia

Utwórz archiwum .tar.gz

Umiejętność tworzenia archiwów jest równie ważna jak ich rozpakowanie. Składnia odzwierciedla ekstrakcję, ale używa -c (create) zamiast -x:

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

Wyklucz określone pliki lub katalogi

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

Jest to nieocenione przy tworzeniu czystych pakietów wdrażania lub kopii zapasowych bez niepotrzebnego balastu.

Automatyzacja operacji .tar.gz w skryptach

Na serwerach produkcyjnych — niezależnie od tego, czy prowadzisz Dedicated Server czy zarządzany VPS — automatyzacja operacji na archiwach oszczędza czas i zmniejsza błędy człowieka.

Przykład: Zautomatyzowany skrypt kopii zapasowej

#!/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"

Zaplanuj to za pomocą zadania cron dla w pełni zautomatyzowanych codziennych kopii zapasowych:

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

Korzystanie z menedżerów archiwów GUI (opcjonalnie)

Jeśli pracujesz w środowisku pulpitu Linux, narzędzia graficzne zapewniają alternatywę typu drag-and-drop:

Środowisko pulpituMenedżer archiwów
GNOMEFile Roller
KDE PlasmaArk
XfceThunar Archive Plugin

15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij