- Dave McKay
@TheGurkha
- 5 kwietnia 2019 r., 8:00 czasu wschodniego
Pliki tar są archiwami skompresowanymi. Często napotykasz je 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, które mają rozszerzenie .tar.gz
lub .tar.bz2
to skompresowane pliki archiwalne. Plik z rozszerzeniem .tar
jest nieskompresowany, ale będzie to bardzo rzadkie.
.tar
część rozszerzenie pliku oznacza archiwum taśmowe i jest powodem, dla którego oba te typy plików nazywane są 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 wypakowywania plików tar na nasze dyski twarde. Ktoś gdzieś prawdopodobnie nadal używa tar
z taśmą.
.gz
lub Sufiks rozszerzenia .bz2
wskazuje, że archiwum zostało skompresowane przy użyciu gzip
lub bzip2
algorytm kompresji. Polecenie tar
będzie dobrze działać 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 tar
opcji wiersza poleceń.
Wyodrębnianie plików z plików Tar
Załóżmy, że pobrałeś dwa pliki nut. Jeden plik nosi nazwę ukulele_songs.tar.gz
, a drugi guitar_songs.tar.bz2
. Te pliki znajdują się w katalogu Pobrane.
Wyodrębnijmy utwory ukulele:
tar -xvzf ukulele_songs.tar.gz
Po rozpakowaniu plików są one wymienione w okno terminala.
Opcje wiersza poleceń, których użyliśmy to:
- -x: Wypakuj, pobierz pliki z pliku tar.
- – v: Verbose, lista plików w trakcie ich rozpakowywania.
- -z: Gzip, użyj gzip do rozpakowania pliku tar.
- -f: File, nazwa pliku tar plik, z którym
tar
chcemy pracować. Po tej opcji musi następować nazwa pliku tar.
Wyświetl listę plików w katalogu za pomocą ls
, a zobaczysz, że został utworzony katalog o nazwie Ukulele Songs. Wyodrębnione pliki znajdują się w tym katalogu. Skąd się wziął ten katalog? Został zawarty w pliku tar
i wyodrębniony wraz z plikami.
Teraz wyodrębnijmy piosenki gitarowe. Aby to zrobić, użyjemy prawie dokładnie tego samego polecenia co poprzednio, ale z jedną ważną różnicą. Sufiks rozszerzenia .bz2
informuje, ż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
Po raz kolejny pliki są wyświetlane na terminalu podczas rozpakowywania. Dla jasności, opcje wiersza poleceń, których użyliśmy z tar
dla pliku .tar.bz2
, to:
Jeśli podamy pliki w katalogu Download zobaczymy, że został utworzony inny katalog o nazwie Guitar Songs.
Wybieranie miejsca wypakowania plików do
Jeśli chcemy wyodrębnić pliki do lokalizacji inny niż katalog bieżący, możemy określić katalog docelowy za pomocą opcji -C
(określony katalog).
tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/
W naszym katalogu Documents / Songs zobaczymy, że został utworzony katalog Guitar Songs.
Pamiętaj, że katalog docelowy musi już istnieć, tar
nie utworzy go, jeśli go nie ma. Jeśli chcesz utworzyć katalog i mieć tar
wyodrębnić wszystkie pliki jednym poleceniem, możesz to zrobić w następujący sposób:
mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/
Opcja -p
(rodzice) powoduje, że mkdir
tworzy wszystkie wymagane katalogi nadrzędne, zapewniając katalog docelowy jest tworzony.
Zaglądanie do plików Tar przed ich wyodrębnieniem
Do tej pory zrobiliśmy skok wiary i wyodrębniliśmy pliki niewidoczne. Możesz chcieć spojrzeć, zanim skoczysz. Możesz przejrzeć zawartość pliku tar
przed wyodrębnieniem go, używając opcji -t
(lista).Zwykle wygodnie jest przesłać dane potokiem za pomocą polecenia less
.
tar -tf ukulele_songs.tar.gz | less
Zauważ, że nie musimy używać opcji -z
, aby wyświetlić listę plików. Opcję -z
musimy dodać tylko wtedy, gdy wyodrębniamy pliki z pliku .tar.gz
. Podobnie, nie potrzebujemy opcji -j
, aby wyświetlić listę plików w pliku tar.bz2
.
Przewijanie na wyjściu widzimy, że wszystko w pliku tar jest przechowywane w katalogu o nazwie Ukulele Songs, aw tym katalogu znajdują się pliki i inne katalogi.
Widzimy, że katalog Ukulele Songs zawiera katalogi o nazwie Losowe utwory, ramony i możliwe.
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ż ścieżka zawiera spacje.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"
Aby wyodrębnić pojedynczy plik, podaj ścieżkę i nazwę pliku.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"
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 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 numerycznego. Liczba reprezentuje liczbę poziomów katalogów do zignorowania. 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, Na dysku twardym nie jest tworzony najwyższy katalog utworów ukulele w pliku tar. Pliki i katalogi, które zostałyby wypakowane do tego katalogu, są rozpakowywane w katalogu docelowym.
tar -xvzf ukulele_songs.tar.gz --strip-components=1
Są tylko dwa poziomy zagnieżdżenia katalogów w naszym przykładowym pliku tar. Więc jeśli użyjemy --strip-components=2
, wszystkie pliki zostaną wyodrębnione z katalogu docelowego i żadne inne katalogi nie zostaną utworzone.
tar -xvzf ukulele_songs.tar.gz --strip-components=2
Jeśli spojrzysz na stronę podręcznika Linux, zobaczysz, że tar
musi być dobrym kandydatem na tytuł „polecenie mają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 kilka z tych opcji.
Dave McKay po raz pierwszy używał komputerów, kiedy w modzie była taśma perforowana i od tamtej pory programuje . Po ponad 30 latach w branży IT, obecnie jest dziennikarzem technicznym na pełen etat. W swojej karierze pracował jako niezależny programista, kierownik międzynarodowego zespołu programistycznego, kierownik projektu usług IT, a ostatnio , jako inspektor ochrony danych. Dave jest ewangelistą Linuksa i zwolennikiem oprogramowania open source. Przeczytaj pełną biografię „