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.

tar u xkcd

Ź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.