tar(1) to "the GNU tape archiver". Zbiera kilka plików lub katalogów i tworzy jesten duży plik. Pozwala to na kompresje całych katalogów co jest niemożliwe używając gzip czy bzip2. tar ma wiele opcji, które są wyszczególnione na stronach manuala. Sekcja ta omawia tylko najpopularniejsze opcje komendy tar.
Najpopularniejszym użyciem komendy tar jest dekompresja i rozpakowywanie paczek które pobrałeś ze strony intrenetowej czy serwera ftp. Większość z nich posiada rozszerzenie .tar.gz. Jest ono popularnie zwane “tarball”. Oznacza to że kilka plików zostało zarchiwizowanych używając tar i skompresowanych używając gzip. Możesz także znaleźć je jako pliki .tar.Z. To jest to samo tylko że użyto starszego systemu unixowego.
Alternatywnie możesz znaleźć pliki .tar.bz2. Źródła kernela są tak rozprowadzane ponieważ są mniejsze. Jak pewnie się domyślasz jest to kilka plików zarchiwizowanych tar a następnie zbzippowanych.
Możesz dostać się do wszystkich plików w tym archiwum używając tar i części z argumentów polecenia. Rozpakowywując tarballa użyj flagi
-z
, która oznacza żeby najpierw przepuścić plik przez gunzip i rozpkować go (dekompresja). Najpopularniejszym sposobem
dekompresji tarballa jest:
% tar -xvzf filename.tar.gz |
To całkiem sporo opcji. Więc co one oznaczają? -x
oznacza
rozpakować. To ważne, nakazuje tar dokładnie co ma zrobić z
plikiem wejściowym. W tym wypadku będziemy dzielić z powrotem na mniejsze pliki z jakich utworzono archiwum. -v
oznacza że postęp będzie
wyświetlany na standardowym wyjściu. Wyświetli wszystkie pliki które będą rozpakowywane.
Jest całkiem normalne opuszczanie tej opcji, jeśli coś jest nudzące. Alternatywnie można użyć
opcji -vv
dla listowania jeszcze większej ilości informacji o
każdym z plików. Opcja -z
nakazuje tar uruchomienie filename.tar.gz najpierw przez
gunzip. I nareszcie opcja -f
mówi
ona tar że następnym wyrażeniem dla komendy będzie plik na
którym ma operować.
Jest kilka innych sposobów na zapisanie tych poleceń. Na starszych systemach ze starszą kopią GNU tar, możesz znaleźć zapis:
% gunzip filename.tar.gz | tar -xvf - |
Komenda ta dokona dekompresji pliku, a następnie wyśle wyjście do tar. Podczas gdy gzip zapisze swój wynik na standardowe wyjście o ile mu tak każesz. Strumień wyśle go do tar dla rozpakowania (unarchiving). “-” oznacza nakaz operowania na standardowym wejściu. Rozpakuje strumień danych otrzymany z gzip i zapisze to na dysku.
Kolejnym sposobem zapisania pierwszej komendy jest pominięcie myślnika przed opcjami:
% tar xvzf filename.tar.gz |
Możesz także natknąć się na archiwa zbzzipowane. Wersja tar
dostarczona z Slackware Linux poradzi sobie z tym tak samo jak z archiwum zgzipowanymi.
Zamiast opcji -z
w linii opcji, użyjesz -j
:
% tar -xvjf filename.tar.bz2 |
Ważne jest to aby zaznaczyć że tar umieści rozpakowany plik w
obecnym katalogu. Więc jeśli masz archiwum w /tmp które chcesz
zdekompresować do swojego katalogu domowego, jest kilka opcji. Popierwsze archiwum musi
być przeniesione do twojego katalogu domowego i następnie uruchomione przez tar. Po drugie możesz określić ścieżkę do pliku archiwum w lini poleceń.
Po trzecie możesz użyc opcji -C
do “odpalenia”
tarballa w określonym katalogu.
% cd $HOME % cp /tmp/filename.tar.gz . % tar -xvzf filename.tar.gz % cd $HOME % tar -xvzf /tmp/filename.tar.gz % cd / % tar -xvzf /tmp/filename.tar.gz -C $HOME |
Wszystkie powyższe wyrażenia są równoznaczne. W każdym z przypadków archiwum jest rozpakowywane w twoim katalogu domowym i oryginalne nieskompresowane archiwum pozostaje na swoim miejscu.
Co za frajda jest z rozpakowywania tych archiwów jeśli nie możesz ich tworzyć? Prawdę
mówiąc tar radzi sobie z tym. W większości przypadków wystarczy
zastąpić opcje “-x
” opcją “-c
”.
% tar -cvzf filename.tar.gz . |
W tym poleceniu opcja -c
nakazuje tar utowrzenie archiwum podczas gdy opcja -z
uruchamia na wynikowym pliku archiwum gzip aby je skompresować.
filename.tar.gz jest plikiem jaki chcesz utworzyć.
Określanie opcji “-f
” nie jest niezbędne, ale
jest dobrym zwyczajem. Bez tego tar zapisze na standardowym
wyjściu które jest zwykle dla strumieniowania (piping) tar do
kolejnego programu jak naprzykład:
% tar -cv filename.tar . | gpg --encrypt |
Komenda ta tworzy nieskompresowane archiwum tar bierzącego katalogu, przepuszcza tarballa przez gpg który szyfruje i kompresuje tarballa, czyniąc go teoretycznie niemożliwym do odczytania przez kogokolwiek innego niż osobę znającą sekretny klucz.