Często zachodzi potrzeba obsługi archiwów z poziomu linii komend lub w jakimś skrypcie shellowym. Potrzebujemy spakować lub rozpakować pliki aby przykładowo szybciej je przesłać przez sieć. Z pomocą przychodzi nam program tar. Jednak nigdy nie mogę zapamiętać przełączników potrzebnych do poprawnego uruchomienia program. Który przełącznik odpowiada za jaki typ archiwów. Dlatego postanowiłem sobie zapisać to w poście, abym nie musiał się przekopywać przez dokumentację za każdym razem jak używam tara.
Tworzenie archiwum
Nowe archiwum możemy stworzyć używając poleceń podanych poniżej. Flaga c (–create) oznacza, że chcemy stworzyć nową paczkę. Kolejny przełącznik oznacza typ archiwum. Nie podając żadnego, tworzymy archiwum tar (po prostu łączymy wszystkie pliki w jeden plik, bez żadnej kompresji), dodając przełącznik -z lub –gzip stworzymy archiwum tar.gz, czyli dodatkowo kompresujemy plik programem gzip (GNU zip). Użycie flagi –j lub –bzip2 włącza kompresję bzip2. Kolejną flagą jest -J lub –xz które tworzy archiwum .xz w którym użyty jest algorytm LZMA2. Zwykle algorytm ten tworzy archiwa o 30% mniejsze od gzip i 15% mniejsze niż bzip2. Możemy też użyć flagi -a która spowoduje automatyczne wykrycie typu archiwum na podstawie rozszerzenia.
tar cf nazwa_archiwum.tar katalog/ | |
tar czf nazwa_archiwum.tar.gz katalog/ | |
tar cjf nazwa_archiwum.tar.bz2 katalog/ | |
tar czf nazwa_archiwum.tar.xz katalog/ |
Dekompresja archiwum
Rozpakowywanie archiwów jest analogiczne do ich tworzenia, jedynie zamiast flagi c ustawiamy flagę x (–extract).
tar xf nazwa_archiwum.tar | |
tar xzf nazwa_archiwum.tar.gz | |
tar xjf nazwa_archiwum.tar.bz2 | |
tar xzf nazwa_archiwum.tar.xz |
Dodatkowe operacje
Jeśli chcemy widzieć co się dzieje, jakie pliki są przetwarzane możemy dodać flagę -v lub –verbose.
tar cjvf nazwa_archiwum.tar.bz2 katalog/ | |
tar xjvf nazwa_archiwum.tar.bz2 |
Możemy również jedynie wyświetlić zawartość archiwum bez jego rozpakowywania. Robimy to przełącznikiem t lub –list.
tar tjvf nazwa_archiwum.tar.bz2 |
Ciekawą operacją może też być dodanie pliku do istniejącego archiwum (-r lub –append), oraz operacja aktualizacji archiwum nowszymi plikami (-u lub –update).
tar rjvf nazwa_archiwum.tar plik_do_dodania | |
tar ujvf nazwa_archiwum.tar.bz2 katalog/ |
Ciekawostką jest, że za pomocą programu tar możemy też podglądnąć zawartość obrazu płyty CD w formacie ISO 9660.
tar -tf image.iso |
Podsumowanie
Przedstawiłem tutaj tylko podstawowe operacje i parametry. Manual linuxowego programu tar ma kilka stron opisujących użycie różnych parametrów. Jednak myślę, że w 90% przypadków wystarczą Ci te opisane tutaj.