tar dla opornych
Ten wpis dedykuję samemu sobie, ponieważ chyba moim najczęstszą wyszukiwaną frazą w wyszukiwarce jest “how to tar?” Ale nie tylko ja mam z tym problem.
Co to jest tar?#
Nazwa z angielskiego pochodzi od słów “tape archiver” co można przetłumaczyć jako archiwizator (plików) na taśmach. Chodzi tu oczywiście o taśmy magnetyczne, gdyż należy wspomnieć, że program został wydany w latach siedemdziesiątych, kiedy głównym nośnikiem przechowywania danych były taśmy. Więc tak, tar to archiwizator. Dzięki niemu możemy tworzyć archiwa. Archiwum to pojedynczy plik zawierający jeden lub więcej innych plików.

Źródło: xkcd.com
Zrozumieć podstawowe operacje i opcje#
Zamiast ciągłego przeszukiwania Internetu w poszukiwaniu przykładowego użycia komendy tar, można zastanowić się tak naprawdę, co te wszystkie opcje oznaczają. Trzy najważniejsze operacje, które możemy wykonać za pomocą komendy tar, to:
- tworzenie archiwum
- wypakowanie archiwum
- podgląd archiwum
Tworzenie archiwum#
Aby utworzyć warzywne archiwum, użyjemy operacji --create, która w dłuższej wersji wygląda tak:
tar --create --file=warzywa.tar ogorek marchew kukurydza
Natomiast w krótszej, “codziennej” o tak:
tar -cf warzywa.tar ogorek marchew kukurydza
Jak widać, opcje -c i -f nie bez powodu tak się nazywają, to po prostu “create” i “file”. Możemy dodać --verbose lub -v aby komenda wyświetliła nam więcej informacji:
$tar -cvf warzywa.tar ogorek marchew kukurydza
ogorek
marchew
kukurydza
W dodatku, możemy mieszać dłuższą i krótszą formę, nikt się nie obrazi:
tar -c --verbose -f warzywa.tar ogorek marchew kukurydza
ogorek
marchew
kukurydza
Ważne jest, aby pierwszym argumentem była opcja, inaczej program zwróci błąd. Sama kolejność nie jest ważna, ale przyjęło się, że podajemy najpierw opcje, a dopiero później nazwy plików, które chcemy zarchiwizować (-f warzywa.tar lub --file=warzywa.tar jest traktowane jako jeden argument).
Co jest ważne #2 - nie używaj opcji -c jeśli chcesz coś dodać do istniejącego już archiwum. Tar usunie zawartość archiwum i stworzy nowy z danym plikiem.
Wypakowanie archiwum#
Aby wypakować archiwum, użyjemy operacji --extract. Jej długa wersja wygląda tak:
tar --extract --file=warzywa.tar
A skrócona z opcją verbose:
$ tar -xvf warzywa.tar
ogorek
marchew
kukurydza
Wypakowanie pojedynczego członka z archiwum#
Jeśli chcemy wypakować pojedynczy folder lub plik (“członka archiwum” wg dokumentacji), to użyjemy komendy:
$ tar -xvf warzywa.tar ogorek
ogorek
TIP: Możemy zwiększyć ilość wyświetlanych informacji, dodając kolejne --verbose lub -v:
$ tar -xvvf warzywa.tar ogorek
-rw-rw-r-- wieprzu/wieprzu 0 2025-11-11 20:53 ogorek
Podgląd archiwum#
Ostatnia z podstawowych operacji to podgląd archiwum za pomocą operacji --list lub po prostu -t. Komenda wygląda tak:
tar --list --file=warzywa.tar
A skrócona wersja:
$ tar -tf warzywa.tar
ogorek
marchew
kukurydza
Przydatną opcją tutaj jest --verbose lub -v, bo możemy podejrzeć więcej informacji o plikach archiwum:
$ tar -tf warzywa.tar
ogorek
marchew
kukurydza
$ tar -tvf warzywa.tar
-rw-rw-r-- wieprzu/wieprzu 0 2025-11-11 20:53 ogorek
-rw-rw-r-- wieprzu/wieprzu 0 2025-11-11 20:53 marchew
-rw-rw-r-- wieprzu/wieprzu 0 2025-11-11 20:53 kukurydza
Jeżeli chcemy wyświetlić samego ogórka, po prostu podajemy go jako argument:
$ tar -tvf warzywa.tar ogorek
-rw-rw-r-- wieprzu/wieprzu 0 2025-11-11 20:53 ogorek
Opcje dodatkowe#
Wildcards - znaki zastępcze#
Bardzo przydatna opcja, gdy nie pamiętamy dokładnej nazwy pliku, lub jego lokalizacji w archiwum. Przykładowo, wyświetlam każdy plik zawierający słowo ogor, również ten, który nie jest w głównym folderze:
$ tar -xvvf warzywa.tar --wildcards '*ogor*'
-rw-rw-r-- wieprzu/wieprzu 0 2025-11-13 23:01 ogorek
-rw-rw-r-- wieprzu/wieprzu 0 2025-11-13 23:01 ukryty/ogorek
Append - czyli dodanie pliku do istniejącego archiwum#
Operacja --append (w skrócie -r) dodaje wybrany plik na koniec istniejącego archiwum:
$ tar --append --file=warzywa.tar ogorek
Co ciekawe, można dodać plik o tej samej nazwie do istniejącego archiwum. Ale uwaga, tar podczas wypakowywania, podąża za kolejnością dodania plików, więc starszy członek zostanie zastąpiony nowszym po wypakowaniu. Po wykonaniu powyższej komendy, wyświetlam zawartość mojego archiwum. Jak widać, ogórki są dwa:
$ tar -tvvf warzywa.tar ogorek
-rw-rw-r-- wieprzu/wieprzu 0 2025-11-11 20:53 ogorek
-rw-rw-r-- wieprzu/wieprzu 0 2025-11-11 20:54 ogorek
Aby wypakować konkretną wersję pliku musimy użyć opcji --occurrence.
Occurence#
Dzięki tej opcji wskazujemy tarowi, o który plik o tej samej nazwie nam chodzi. Domyślnie --occurrence weźmie pod uwagę pierwszy w kolejności plik w archiwum i nie będzie tego archiwum dalej procesował. Ale możemy mu ręcznie wskazać, na którym miejscu jest plik, o który nam chodzi. Przykładowo, chcę usunąć, drugie wystąpienie ogórka:
tar --delete --occurrence=2 -f warzywa.tar ogorek
I jeśli teraz wyświetlimy archiwum, to ogórek będzie już tylko jeden:
tar -tvvf warzywa.tar ogorek
-rw-rw-r-- wieprzu/wieprzu 0 2025-11-11 20:53 ogorek
--occurrence można stosować podczas operacji --delete, --diff, --list, --extract
Update - czyli aktualizacja istniejącego archiwum#
Operacja --update (-u) porówna dany plik o tej samej nazwie co w archiwum i jeśli będzie on nowszy, to zaktualizuje archiwum, jeśli będzie starszy to nic nie zrobi. Uwaga, tak jak w przypadku funkcji --append, plik zostanie dodany na koniec archiwum.
$ tar --update --file=warzywa.tar ogorek
Compare - porównanie archiwum z plikami na dysku#
Dzięki funkcji --compare (lub też --diff i -d) możemy porównać członków archiwum z plikami na dysku. Tar poinformuje nas jeśli plik w archiwum różnić się będzie od tego na dysku, przykładowe uruchomienie:
$ tar -dvf warzywa.tar ogorek pomidor kukurydza
kukurydza
ogorek
ogorek: Mod time differs
tar: pomidor: Not found in archive
Concatenate - łączenie archiwów#
Możemy łączyć archiwa za pomocą --concatenate (--catenate lub -A). Moje archiwum z owocami dodam tymczasowo do tego z warzywami:
tar --concatenate -f warzywa.tar owoce.tar
$ tar -tf warzywa.tar
marchew
kukurydza
ogorek
jablko
malina
Delete - usuwanie plików z archiwum#
Za pomocą --delete (brak skróconej formy) możemy usunąć niepotrzebnie dodane pliki z owocami. Dzięki temu znów możemy cieszyć się idealnym warzywnym archiwum:
$ tar --delete -f warzywa.tar jablko malina
$ tar -tf warzywa.tar
marchew
kukurydza
ogorek
Kompresja archiwum#
Jedna z przydatniejszych funkcji. Tar posiada kilka opcji kompresji, w zależności jakiej metody chcemy użyć. Skupię się na najpopularniejszej czyli --gzip lub -z. Przykładowa komenda: tar -czf warzywa.tar.gz ogorek kukurydza marchew
Co ciekawe, przy podglądzie i wypakowaniu archiwum, nie musimy podawać tej opcji, tar sam rozpozna metodę kompresji:
tar -tf warzywa.tar.gz
ogorek
kukurydza
marchew
The End#
Tar ma opcji multum, wszystko skrupulatnie opisane w oficjalnej instrukcji1. Nie ma sensu więc opisywać tutaj wszystkiego. Ważne jest to, by mieć swoją metodę zapamiętania, jak komenda tar powinna wyglądać. Ja po to napisałem tego posta, a Ty… ty możesz spróbować czegoś innego.
Oficjalna instrukcja GNU: https://www.gnu.org/software/tar/manual/tar.html ↩︎