Pakowanie i rozpakowywanie plików z poziomu konsoli

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/
view raw create-archive.sh hosted with ❤ by GitHub

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
view raw extract-archive.sh hosted with ❤ by GitHub

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
view raw verbose.sh hosted with ❤ by GitHub

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
view raw list-archive.sh hosted with ❤ by GitHub

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
view raw iso.sh hosted with ❤ by GitHub

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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *