15.3 tar

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.

Grenlandia 2012