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

Opublikowany: 2022-01-29
Bash shell na koncepcji pulpitu Unity
Fatmawati Achmad Zaenuri/Shutterstock.com

Pliki tar to skompresowane archiwa. Spotkasz je często podczas korzystania z dystrybucji Linuksa, takiej jak Ubuntu, a nawet podczas korzystania z terminala w systemie macOS. Oto jak wyodrębnić — lub rozpakować — zawartość pliku tar, znanego również jako archiwum tar.

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

Pliki z rozszerzeniem .tar.gz lub .tar.bz2 są skompresowanymi plikami archiwum. Plik z rozszerzeniem .tar jest nieskompresowany, ale będzie to bardzo rzadkie.

Część .tar rozszerzenia pliku oznacza archiwum taśm i jest to powód, dla którego oba te typy plików są nazywane plikami tar. Pliki tar pochodzą z 1979 roku, kiedy utworzono polecenie tar , aby umożliwić administratorom systemu archiwizowanie plików na taśmie. Czterdzieści lat później nadal używamy polecenia tar do wyodrębniania plików tar na nasze dyski twarde. Ktoś gdzieś prawdopodobnie nadal używa tar z taśmą.

Przyrostek rozszerzenia .gz lub .bz2 wskazuje, że archiwum zostało skompresowane przy użyciu algorytmu kompresji gzip lub bzip2 . Polecenie tar będzie działać szczęśliwie z obydwoma typami plików, więc nie ma znaczenia, która metoda kompresji została użyta — i powinna być dostępna wszędzie, gdzie masz powłokę Bash. Wystarczy użyć odpowiednich opcji wiersza poleceń tar .

Wyodrębnianie plików z plików Tar

Załóżmy, że pobrałeś dwa pliki z nutami. Jeden plik nazywa się ukulele_songs.tar.gz , drugi to guitar_songs.tar.bz2 . Pliki te znajdują się w katalogu Pobrane.

Dwa pliki tar w katalogu pobierania

Wyodrębnijmy utwory na ukulele:

 tar -xvzf ukulele_songs.tar.gz
Reklama

Po wyodrębnieniu plików są one wyświetlane w oknie terminala.

Wyodrębnianie wszystkich plików z pliku tar

Użyte opcje wiersza poleceń to:

  • -x : Rozpakuj, pobierz pliki z pliku tar.
  • -v : Pełne, wypisz pliki podczas ich rozpakowywania.
  • -z : Gzip, użyj gzip do rozpakowania pliku tar.
  • -f : Plik, nazwa pliku tar , z którym ma pracować tar. Po tej opcji musi następować nazwa pliku tar.

Wypisz pliki w katalogu za pomocą ls , a zobaczysz, że utworzono katalog o nazwie Ukulele Songs. Wypakowane pliki znajdują się w tym katalogu. Skąd wziął się ten katalog? Znajdował się w pliku tar i został wyodrębniony wraz z plikami.

Katalog Ukulele Songs utworzony w katalogu Downloads

Teraz wydobądźmy utwory gitarowe. Aby to zrobić, użyjemy prawie dokładnie tego samego polecenia co poprzednio, ale z jedną ważną różnicą. Przyrostek rozszerzenia .bz2 informuje nas, że został skompresowany przy użyciu polecenia bzip2. Zamiast używać opcji -z (gzip), użyjemy opcji -j (bzip2).

 tar -xvjf guitar_songs.tar.bz2 

Wyodrębnianie pliku tar utworów gitarowych w folderze Pobrane

Po raz kolejny pliki są wyświetlane w terminalu podczas ich wyodrębniania. Aby było jasne, opcje wiersza poleceń, których użyliśmy z tar dla pliku .tar.bz2 to:

  • -x : Wyodrębnij, pobierz pliki z pliku tar.
  • -v : Pełne, wypisz pliki podczas ich rozpakowywania.
  • -j : Bzip2, użyj bzip2 do rozpakowania pliku tar.
  • -f : Plik, nazwa pliku tar, z którym ma pracować tar.

Jeśli wymienimy pliki w katalogu Download, zobaczymy, że został utworzony inny katalog o nazwie Guitar Songs.

Katalog utworów gitarowych utworzony w katalogu Downloads

Wybieranie miejsca, w którym można wyodrębnić pliki

Jeśli chcemy rozpakować pliki do lokalizacji innej niż bieżący katalog, możemy określić katalog docelowy za pomocą opcji -C (określony katalog).

 tar -xvjf guitar_songs.tar.gz -C ~/Dokumenty/Utwory/
Reklama

Zaglądając do naszego katalogu Documents/Songs, zobaczymy, że został utworzony katalog Guitar Songs.

Katalog utworów gitarowych utworzony w katalogu Documents/Songs

Zauważ, że katalog docelowy musi już istnieć, tar nie utworzy go, jeśli go nie ma. Jeśli chcesz utworzyć katalog i tar do niego wszystkie pliki za pomocą jednego polecenia, możesz to zrobić w następujący sposób:

 mkdir -p ~/Dokumenty/Utwory/Pobrane && tar -xvjf guitar_songs.tar.gz -C ~/Dokumenty/Utwory/Pobrane/

Opcja -p (rodzice) powoduje, że mkdir tworzy wszystkie wymagane katalogi nadrzędne, zapewniając utworzenie katalogu docelowego.

Zaglądanie do plików smoły przed ich rozpakowaniem

Do tej pory wykonaliśmy tylko skok wiary i wydobyliśmy niewidoczny widok plików. Możesz chcieć spojrzeć przed skokiem. Możesz przejrzeć zawartość pliku tar przed jego rozpakowaniem, używając opcji -t (lista). Zwykle wygodnie jest potokować dane wyjściowe za pomocą polecenia less .

 tar -tf ukulele_songs.tar.gz | mniej

Zauważ, że nie musimy używać opcji -z , aby wyświetlić listę plików. Wystarczy dodać opcję -z , gdy wyodrębniamy pliki z pliku .tar.gz . Podobnie nie potrzebujemy opcji -j , aby wyświetlić listę plików w pliku tar.bz2 .

Zawartość pliku tar przepuszczona przez less

Przewijając dane wyjściowe, widzimy, że wszystko w pliku tar jest przechowywane w katalogu o nazwie Ukulele Songs, aw tym katalogu znajdują się pliki i inne katalogi.

Drugi widok zawartości pliku tar przepuszczonego przez less

Reklama

Widzimy, że katalog Ukulele Songs zawiera katalogi o nazwie Random Songs, Ramones i Possibles.

Aby wyodrębnić wszystkie pliki z katalogu w pliku tar, użyj następującego polecenia. Zwróć uwagę, że ścieżka jest ujęta w cudzysłów, ponieważ w ścieżce znajdują się spacje.

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

Wyodrębnianie pojedynczego folderu z pliku tar

Aby wyodrębnić pojedynczy plik, podaj ścieżkę i nazwę pliku.

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

Wyodrębnianie pojedynczego pliku z pliku tar

Możesz wyodrębnić wybrane pliki za pomocą symboli wieloznacznych, gdzie * reprezentuje dowolny ciąg znaków, a ? reprezentuje dowolny pojedynczy znak. Używanie symboli wieloznacznych wymaga użycia opcji --wildcards .

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

Wyodrębnianie utworów ze smoły za pomocą symboli wieloznacznych

Wyodrębnianie plików bez wyodrębniania katalogów

Jeśli nie chcesz, aby struktura katalogów w pliku tar była odtwarzana na dysku twardym, użyj opcji --strip-components . Opcja --strip-components wymaga parametru liczbowego. Liczba oznacza, ile poziomów katalogów należy zignorować. Pliki z ignorowanych katalogów są nadal wyodrębniane, ale struktura katalogów nie jest replikowana na dysku twardym.

Jeśli określimy --strip-components=1 w naszym przykładowym pliku tar, najwyższy katalog Ukulele Songs w pliku tar nie zostanie utworzony na dysku twardym. Pliki i katalogi, które zostałyby wyodrębnione do tego katalogu, są wyodrębniane w katalogu docelowym.

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

Wyodrębnianie plików z pliku tar z --strip-components=1

Reklama

W naszym przykładowym pliku tar są tylko dwa poziomy zagnieżdżania katalogów. Jeśli więc użyjemy --strip-components=2 , wszystkie pliki zostaną wyodrębnione w katalogu docelowym i nie zostaną utworzone żadne inne katalogi.

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

Wyodrębnianie plików z pliku tar z --strip-components=2

Jeśli spojrzysz na stronę podręcznika Linux, zobaczysz, że tar musi być dobrym kandydatem do tytułu „polecenie posiadające najwięcej opcji wiersza poleceń”. Na szczęście, aby umożliwić nam wyodrębnianie plików z plików .tar.gz i tar.bz2 z dobrym stopniem szczegółowej kontroli, musimy pamiętać tylko o kilku z tych opcji.

POWIĄZANE: Najlepsze laptopy z systemem Linux dla programistów i entuzjastów