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
Sekcja
Linux

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 łączący 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ść efektywnej i bezpiecznej obsługi 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.

Co to jest plik .tar.gz?

Plik .tar.gz — często nazywany tarballem — 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
  • Archiwizowanie 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 ekstrakcji pliku .tar.gz to:

tar -xvzf file.tar.gz

Podział flag

FlagaZnaczenie
-xEkstrahuj pliki z archiwum
-vTryb szczegółowy — wyświetla każdy plik podczas ekstrakcji
-zDekompresja przy użyciu gzip
-fOkreśla nazwę pliku do operacji

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

Ekstrakcja do określonego katalogu

Domyślnie tar ekstrahuje 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 wypakowaniem

Przed wypakowaniem archiwum — szczególnie z nieznanego źródła — dobrą praktyką jest najpierw sprawdzić jego zawartość:

tar -tvzf file.tar.gz

Flaga -t wyświetla listę wszystkich plików i katalogów wewnątrz archiwum bez wypakowywania czegokolwiek. Pomaga to:

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

Wyodrębnianie określonych plików lub katalogów

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

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

Aby znaleźć dokładną ścieżkę wewnętrzną, najpierw uruchom 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 podczas ekstrahowania niezaufanych archiwów

Ekstrahowanie .tar.gz plików 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 następujące zabezpieczenia:

Zapobieganie nadpisywaniu katalogów

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

Usuwanie wiodących komponentów ścieżki

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

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

Ekstrahowanie do izolowanego katalogु

Zawsze ekstrahuj 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 na infrastrukturze współdzielonej. Jeśli zarządzasz wieloma witrynami lub klientami, rozważ użycie środowisk Shared Web Hosting ze ścisłymi granicami uprawnień.

Efektywne obsługiwanie dużych archiwów

W przypadku archiwów o wielkości kilku 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

Podczas ekstrakcji bardzo dużych archiwów flaga -v może spowolnić proces, drukując tysiące nazw plików na terminal. Pomiń ją, aby uzyskać lepszą wydajność:

tar -xzf file.tar.gz

Użyj równoległej dekompresji z pigz

Na serwerach 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 inspekcji pośredniego pliku .tar przed rozpakowaniem. Możesz podzielić proces na dwie komendy:

# 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 osobno
  • Musisz przekazać plik .tar do innego narzędzia

Tworzenie archiwum .tar.gz

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

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

Wykluczanie określonych plików lub katalogów

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 obciążenia.

Automatyzacja operacji .tar.gz w skryptach

Na serwerach produkcyjnych — niezależnie od tego, czy uruchamiasz Dedicated Server czy zarządzany VPS — automatyzacja operacji archiwizacji 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

Używanie graficznych menedżerów archiwów (opcjonalnie)

Jeśli pracujesz w środowisku pulpitu Linux, narzędzia graficzne zapewniają alternatywę typu „przeciągnij i upuść”:

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

Te narzędzia obsługują .tar.gz natywnie i są odpowiednie do okazjonalnego użytku. Jednak w przypadku administracji serwerem wiersz poleceń pozostaje najbardziej niezawodnym i skryptowalnym podejściem.

Szybki przewodnik: Podstawowe polecenia tar

ZadaniePolecenie
Rozpakuj archiwumtar -xvzf file.tar.gz
Rozpakuj do katalogutar -xvzf file.tar.gz -C /target/
Wyświetl zawartośćtar -tvzf file.tar.gz
Rozpakuj pojedynczy pliktar -xvzf file.tar.gz path/to/file
Utwórz archiwumtar -czvf archive.tar.gz /source/
Monitoruj postęp`pv file.tar.gztar xzvf -`
Usuń komponenty ścieżkitar --strip-components=1 -xvzf file.tar.gz
Dekompresja równoległatar -I pigz -xf file.tar.gz

Podsumowanie

Opanowanie obsługi plików .tar.gz wykracza daleko poza wpisanie tar -xvzf. Poprzez zrozumienie formatu, podgląd zawartości przed ekstrahowaniem, zastosowanie flag bezpieczeństwa dla niezaufanych archiwów oraz wykorzystanie narzędzi takich jak pv i pigz dla dużych plików, uzyskujesz pełną kontrolę nad jedną z najistotniejszych operacji w systemie Linux.

Umiejętności te znajdują bezpośrednie zastosowanie w rzeczywistych zadaniach: wdrażaniu kodu źródłowego aplikacji, zarządzaniu kopiami zapasowymi serwera, pakowaniu plików konfiguracyjnych i automatyzacji rutynowych czynności konserwacyjnych. Niezależnie od tego, czy jesteś początkującym uczącym się linii poleceń, czy doświadczonym administratorem optymalizującym przepływy pracy na VPS z cPanel lub dedykowanym serwerze bare-metal, pewna obsługa .tar.gz sprawia, że operacje Linux są szybsze, bezpieczniejsze i bardziej niezawodne.

Jeśli szukasz solidnego środowiska hostingowego, aby zastosować te umiejętności w praktyce, zapoznaj się z AlexHost VPS Hosting — oferującym pełny dostęp root, magazyn SSD i elastyczne dystrybucje Linux gotowe na każde obciążenie.