Jak wyodrębnić pliki z pliku .tar.gz lub .tar.bz2 w systemie Linux

Pliki tar służą jako archiwa skompresowane. Spotkasz je często, korzystając z dystrybucji Linuksa, takiej jak Ubuntu, a także w terminalu macOS. W tym artykule przedstawimy sposób na wyodrębnienie zawartości pliku tar, znanego również jako archiwum.

Co oznaczają rozszerzenia .tar.gz i .tar.bz2?

Pliki z rozszerzeniami .tar.gz i .tar.bz2 to archiwa skompresowane. Plik z rozszerzeniem .tar jest nieskompresowany, ale to zdarza się niezwykle rzadko.

Rozszerzenie .tar pochodzi od „taśmowego archiwum” i jest powodem, dla którego obydwa typy plików są nazywane plikami tar. Historia plików tar sięga 1979 roku, kiedy to wprowadzono polecenie tar, pozwalające administratorom systemów na archiwizowanie plików na taśmach. Pomimo upływu czterdziestu lat, wciąż używamy polecenia tar do rozpakowywania plików tar na naszych dyskach twardych. Możliwe, że gdzieś na świecie nadal korzysta się z taśm.

Rozszerzenia .gz lub .bz2 wskazują, że archiwum zostało skompresowane za pomocą algorytmu gzip lub bzip2. Polecenie tar jest w stanie obsłużyć oba typy plików, więc nie ma znaczenia, która metoda kompresji została zastosowana – wystarczy użyć odpowiednich opcji w poleceniu tar.

Rozpakowywanie plików z archiwów Tar

Załóżmy, że pobrałeś dwa pliki z utworami. Jeden plik nosi nazwę ukulele_songs.tar.gz, a drugi guitar_songs.tar.bz2. Oba te pliki znajdują się w folderze Pobrane.

Rozpocznijmy od wyodrębnienia piosenek ukulele:

tar -xvzf ukulele_songs.tar.gz

Po zakończeniu rozpakowywania, pliki są wyświetlane w terminalu.

Użyliśmy następujących opcji wiersza poleceń:

-x: Wypakuj pliki z archiwum tar.
-v: Wyświetl pełną listę plików podczas rozpakowywania.
-z: Użyj gzip do dekompresji pliku tar.
-f: Określa plik tar, z którym ma pracować. Po tej opcji musi być podana nazwa pliku tar.

Wykonując polecenie ls w katalogu, zauważysz, że powstał nowy folder o nazwie Ukulele Songs, w którym znajdują się wyodrębnione pliki. Ten folder był obecny w pliku tar i został rozpakowany razem z plikami.

Teraz przejdźmy do rozpakowania piosenek gitarowych. Użyjemy niemal tego samego polecenia, co wcześniej, z jedną ważną różnicą. Rozszerzenie .bz2 wskazuje, że plik został skompresowany z użyciem bzip2. Dlatego zamiast opcji -z (gzip), użyjemy opcji -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Po raz kolejny pliki są wyświetlane w terminalu podczas procesu rozpakowywania. Warto podkreślić, że użyte opcje wiersza poleceń dla pliku .tar.bz2 to:

-x: Wypakuj pliki z archiwum tar.
-v: Wyświetl pełną listę plików podczas rozpakowywania.
-j: Użyj bzip2 do dekompresji pliku tar.
-f: Określa plik tar, z którym ma pracować.

Określenie lokalizacji wyodrębnienia plików

Jeśli chcesz rozpakować pliki do innej lokalizacji niż aktualny katalog, możesz to zrobić, wskazując folder docelowy przy użyciu opcji -C (zmiana katalogu).

tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/

Po sprawdzeniu w katalogu Dokumenty / Piosenki, zobaczysz, że utworzono folder Guitar Songs.

Warto zauważyć, że katalog docelowy musi być już stworzony, ponieważ polecenie tar nie utworzy go automatycznie. Jeśli chcesz, aby katalog został utworzony oraz aby wszystkie pliki tar zostały rozpakowane w tym katalogu za pomocą jednego polecenia, możesz użyć następującego polecenia:

mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/

Opcja -p (rodzice) umożliwia poleceniu mkdir stworzenie wszystkich wymaganych katalogów nadrzędnych, co zapewnia utworzenie folderu docelowego.

Przeglądanie plików tar przed ich wyodrębnieniem

Do tej pory po prostu wyodrębnialiśmy pliki bez wcześniejszego sprawdzenia ich zawartości. Możesz jednak chcieć zobaczyć, co jest w archiwum, zanim je rozpakujesz. Aby przeglądać zawartość pliku tar, wykorzystaj opcję -t (lista). Dobrze jest przekierować wyjście do polecenia less.

tar -tf ukulele_songs.tar.gz | less

Zauważ, że nie trzeba używać opcji -z do listowania plików. Opcję -z dodajemy jedynie podczas rozpakowywania plików z archiwum .tar.gz. Podobnie jest z opcją -j w przypadku pliku tar.bz2.

Przewijając dane wyjściowe, zobaczysz, że wszystkie pliki w archiwum tar znajdują się w folderze o nazwie Ukulele Songs, a w nim znajdują się pliki oraz inne foldery.

Widzimy, że katalog Ukulele Songs zawiera foldery o nazwach Random Songs, Ramones i Possibles.

Aby wyodrębnić wszystkie pliki z folderu w pliku tar, użyj następującego polecenia. Zauważ, że ścieżka musi być ujęta w cudzysłowy, ponieważ zawiera spacje.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"

Aby wyodrębnić pojedynczy plik, podaj pełną ścieżkę oraz nazwę pliku.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"

Możesz także wyodrębnić określone pliki, używając symboli wieloznacznych, gdzie * oznacza dowolny ciąg znaków, a ? oznacza pojedynczy znak. W przypadku użycia symboli wieloznacznych musisz dodać opcję –wildcards.

tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"

Wyodrębnianie plików bez przywracania struktury katalogów

Jeśli nie chcesz, aby struktura katalogów w archiwum tar była odwzorowana na dysku twardym, użyj opcji –strip-components. Opcja ta wymaga podania parametru numerycznego, który wskazuje liczbę poziomów katalogów do zignorowania. Pliki z tych pominiętych katalogów będą nadal wyodrębniane, ale ich struktura nie zostanie odwzorowana na dysku.

W przypadku naszego przykładowego pliku tar, jeśli określimy –strip-components=1, najwyższy katalog utworów Ukulele nie pojawi się na dysku twardym. Pliki i katalogi, które normalnie byłyby umieszczone w tym katalogu, zostaną wyodrębnione bezpośrednio do katalogu docelowego.

tar -xvzf ukulele_songs.tar.gz --strip-components=1

W naszym przykładowym pliku tar znajdują się tylko dwa poziomy struktury katalogów. Zatem, jeśli użyjemy –strip-components=2, wszystkie pliki zostaną rozpakowane do katalogu docelowego, a żadne inne foldery nie zostaną utworzone.

tar -xvzf ukulele_songs.tar.gz --strip-components=2

Jeśli zajrzysz do dokumentacji Linuksa, strony podręcznika mogą potwierdzić, że polecenie tar ma wiele opcji wiersza poleceń. Na szczęście, aby skutecznie wyodrębnić pliki z archiwów .tar.gz i .tar.bz2, wystarczy zapamiętać kilka z tych opcji.


newsblog.pl