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
31.07.2025

Jak rozpakować plik Tar w Linuksie: Zaawansowany przewodnik dla zaawansowanych użytkowników

Ekstrahowanie .tar, .tar.gz, .tar.bz2 i innych formatów tarball to umiejętność fundamentalna w administracji systemami Linux, potokach DevOps i zarządzaniu serwerami. Chociaż polecenie tar wydaje się proste na pierwszy rzut oka, doświadczeni administratorzy mogą wykorzystać jego zaawansowane flagi, integracje skryptów i obsługę przypadków brzegowych, aby osiągnąć chirurgiczną precyzję w operacjach archiwów.

Ten kompleksowy przewodnik obejmuje wszystko, od podstawowej dekompresji do warunkowego ekstrahowania, weryfikacji integralności, benchmarkingu i automatyzacji przepływów pracy — wszystko, czego użytkownik zaawansowany potrzebuje, aby opanować tar na Linuxie.

Czym jest plik .tar?

Plik .tar — skrót od Tape Archive — to skonsolidowany format archiwum, który łączy wiele plików i katalogów w jeden plik, zachowując:

  • Strukturę katalogów
  • Uprawnienia plików
  • Metadane własności
  • Znaczniki czasu

Domyślnie archiwa .tar nie są kompresowane. Kompresja jest stosowana jako dodatkowa warstwa przy użyciu formatów takich jak .gz, .bz2, .xz lub .zst. Ten modułowy projekt daje administratorom precyzyjną kontrolę nad równowagą między szybkością kompresji a współczynnikiem.

FormatRozszerzenieNarzędzie kompresji
Bez kompresji.tar
Gzip.tar.gz / .tgzgzip
Bzip2.tar.bz2bzip2
XZ.tar.xzxz
Zstandard.tar.zstzstd

Podstawowe polecenia ekstrahowania

1. Ekstrahuj plik .tar (bez kompresji)

tar -xf archive.tar

2. Ekstrahuj plik .tar.gz lub .tgz

tar -xzf archive.tar.gz

3. Ekstrahuj plik .tar.bz2

tar -xjf archive.tar.bz2

4. Ekstrahuj plik .tar.xz

tar -xJf archive.tar.xz

5. Ekstrahuj plik .tar.zst (Zstandard)

tar --use-compress-program=unzstd -xf archive.tar.zst

> Uwaga: Zstandard (.zst) oferuje doskonały stosunek szybkości do kompresji i jest coraz bardziej powszechny w nowoczesnych dystrybucjach Linux i warstwach obrazów kontenerów.

Typowe flagi i ich funkcje

Zrozumienie flag tar jest niezbędne do pisania niezawodnych skryptów i obsługi złożonych scenariuszy ekstrahowania. Poniżej znajduje się tabela odniesienia najważniejszych opcji:

FlagaFunkcja
-xEkstrahuj pliki z archiwum
-fOkreśl plik archiwum do użycia
-vWyjście pełne — wyświetla pliki podczas ekstrahowania
-zFiltruj przez kompresję gzip
-jFiltruj przez kompresję bzip2
-JFiltruj przez kompresję xz
-C <dir>Zmień katalog przed ekstrahowaniem
--strip-components=NUsuń N wiodących komponentów ścieżki z nazw plików
--wildcardsWłącz dopasowanie wzorców wieloznacznych podczas ekstrahowania
--no-same-ownerNie przywracaj własności pliku (przydatne dla użytkowników spoza root)
--overwriteNadpisz istniejące pliki bez pytania
--exclude=PATTERNWyklucz pliki pasujące do określonego wzorca
--ignore-zerosPomiń bloki wypełnione zerami (przydatne dla uszkodzonych archiwów)
-tWyświetl zawartość archiwum bez ekstrahowania

Zaawansowane przykłady ekstrahowania

Ekstrahuj do określonego katalogu

Skieruj wyekstrahowaną zawartość do ścieżki docelowej za pomocą flagi -C:

tar -xf archive.tar.gz -C /opt/myapp

> Katalog docelowy musi istnieć przed uruchomieniem tego polecenia. W razie potrzeby użyj mkdir -p /opt/myapp.

Spłaszcz strukturę archiwum (usuń folder najwyższego poziomu)

Gdy archiwum zawija wszystko wewnątrz jednego katalogu najwyższego poziomu, użyj --strip-components aby go usunąć:

tar -xf archive.tar.gz --strip-components=1

Jest to szczególnie przydatne podczas wdrażania aplikacji bezpośrednio do katalogu docelowego bez pośredniej warstwy folderu.

Ekstrahuj tylko określone pliki

Możesz wyekstrahować poszczególne pliki, określając ich ścieżki, tak jak pojawiają się w archiwum:

tar -xf archive.tar.gz path/to/file1 path/to/file2

Ekstrahuj pliki pasujące do wzorca wieloznacznego

Użyj --wildcards do filtrowania ekstrahowania według wzorca:

tar -xf archive.tar.gz --wildcards '*.conf'

To ekstrahuje tylko pliki konfiguracyjne .conf z archiwum — idealne do selektywnego przywracania konfiguracji bez dotykania innych danych.

Wyklucz pliki podczas ekstrahowania

Wyklucz określone pliki lub wzorce z ekstrahowania:

tar -xf archive.tar.gz --exclude='*.log'

Możesz łączyć wiele flag --exclude aby filtrować kilka wzorców jednocześnie.

Benchmark czasu ekstrahowania

Użyj narzędzia time do pomiaru czasu ekstrahowania — przydatne przy porównywaniu formatów kompresji lub optymalizacji przepływów pracy kopii zapasowych:

time tar -xf archive.tar.gz

Obsługa przypadków brzegowych

🧱 Radzenie sobie z uszkodzonymi archiwami

Jeśli archiwum jest częściowo uszkodzone — na przykład z powodu przerwane pobierania lub błędu dysku — użyj --ignore-zeros aby pominąć uszkodzone bloki wypełnione zerami i odzyskać jak najwięcej danych:

tar -xzf broken.tar.gz --ignore-zeros

Ta flaga mówi tar aby kontynuować przetwarzanie nawet po napotkaniu nieoczekiwanego EOF lub bloków zerowych, maksymalizując odzyskiwanie danych.

🔍 Podgląd zawartości archiwum przed ekstrahowaniem

Zawsze sprawdzaj archiwum przed ekstrahowaniem, szczególnie podczas pracy z niezaufanymi źródłami lub w środowiskach produkcyjnych:

tar -tf archive.tar.gz

To wyświetla wszystkie pliki wewnątrz archiwum bez pisania czegokolwiek na dysk.

✅ Sprawdzenie integralności dla archiwów skompresowanych Gzip

Sprawdź, czy archiwum .tar.gz nie jest uszkodzone przed próbą ekstrahowania:

gzip -t archive.tar.gz && echo "Archive integrity OK"

Dla archiwów .tar.xz:

xz --test archive.tar.xz && echo "Archive integrity OK"

Włączenie sprawdzania integralności do zautomatyzowanych skryptów zapobiega nieudanym wdrożeniom spowodowanym uszkodzonymi plikami kopii zapasowych.

Wskazówki dotyczące skryptów dla administratorów systemów

Integracja tar w skryptach powłoki to jeden z najpotężniejszych sposobów automatyzacji kopii zapasowych, wdrażania i przywracania przepływów pracy na serwerach Linux.

Zautomatyzowany skrypt kopii zapasowej

#!/bin/bash
TARGET_DIR="/var/www"
ARCHIVE="/backups/site-$(date +%F).tar.gz"

tar -czf "$ARCHIVE" -C "$TARGET_DIR" . && echo "Backup saved to $ARCHIVE"

Ten skrypt tworzy archiwum skompresowane z datą katalogu głównego sieci Web. Sparuj go z zadaniem cron dla w pełni zautomatyzowanych codziennych kopii zapasowych.

Zautomatyzowany skrypt rozpakowania i wdrożenia

#!/bin/bash
SRC="$1"
DEST="$2"

mkdir -p "$DEST"
tar -xzf "$SRC" -C "$DEST" --strip-components=1

Przekaż ścieżkę archiwum i katalog docelowy jako argumenty. Flaga --strip-components=1 zapewnia usunięcie katalogu najwyższego poziomu, umieszczając pliki bezpośrednio w $DEST.

Równoległa ekstrakcja dla dużych archiwów

Na serwerach wielordzeniowych możesz przyspieszyć ekstrakcję archiwów .tar.gz za pomocą pigz (równoległy gzip):

tar -I pigz -xf large-archive.tar.gz -C /destination

Jest to szczególnie cenne na hostingu VPS lub

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