11 Archiwizacja i kompresja plików

11.1 Zagadnienia

● Archiwa;

● Kompresja danych;

● Tworzenie i rozpakowywanie archiwów skompresowanych

i nieskompresowanych;

● Inne programy do kompresji plików;

11.2 Archiwa

Zdarza się, że przechowujemy na dysku twardym naszego komputera wiele plików powiązanych w pewnym stopniu z jedną sprawą lub tematyką, ale są już stare i nie używamy ich, choć być może kiedyś się przydadzą. Czasami musimy przygotować wiele plików do transportu na inny dysk, jednak jest ich wiele oraz zajmują dużo miejsca. Być może mamy zapisane pliki, do których chcemy kiedyś wrócić, ale przed tym, chcemy jakoś je uporządkować lub uchronić przed przypadkowym usunięciem. Kiedy wystąpi jedna z wspomnianych sytuacji, pomocą dla nas może być utworzenie archiwum plików. Archiwum to plik zawierający wewnątrz siebie inne pliki, które można później rozpakować (łączenie plików w archiwum nazywamy pakowaniem) i znów z nich korzystać.

Do archiwizacji plików służy wiele różnych programów, które tworzą wiele różnych formatów archiwów. Wszystkie jednak opierają się o podstawowy podział archiwów na dwie kategorie: skompresowane i nieskompresowane.

● Archiwum nieskompresowane to takie, w którym wszystkie pliki przechowywane są w swoim naturalnym rozmiarze, co znaczy, że nie są zmniejszane, aby archiwum zajmowało mniej miejsca na dysku. Oznacza to jednak również, że do ich rozpakowania nie jest potrzebna, trwająca czasem naprawdę długo, szczególnie na starszych komputerach, dekompresja. Programem służącym do tworzenia nieskompresowanych archiwów w systemie Linux jest tar .

Archiwum skompresowane pozwala na umieszczenie plików w jednym dużym pliku z jednoczesnym zmniejszeniem jego rozmiaru względem sumy rozmiarów użytych do tego celu plików. Do jego stworzenia wymagany jest algorytm kompresujący, a do

183

rozpakowania - dekompresujący. Tego typu archiwa tworzy się często, gdy chce się przechować na jednym nośniku bardzo dużą ilość danych. Kompresja plików nie zawsze pozwala na pełne ich odtworzenie po dekompresji. Najpopularniejszym programem służącym do tworzenia archiwów skompresowanych w systemie Linux jest gzip .

11.3 Kompresja danych

Aby utworzyć omawiane w poprzednim punkcie archiwum skompresowane, konieczne jest użycie odpowiedniego algorytmu kompresującego. Jego działanie opiera się na przedstawieniu bitów danego pliku za pomocą mniejszej ilości bitów w taki sposób, aby możliwe było ich późniejsze odtworzenie. Nie każdy algorytm p o z w a la na odtworzenie pełnego rozmiaru pliku, stąd podział na kompresję stratną i bezstratną.

● Kompresja stratna polega na usunięciu najmniej istotnych bitów, a dopiero następnie użycie algorytmu kompresji bezstratnej. Podczas tego typu kompresji najczęściej usuwa się z pliku takie informacje, aby później odtworzony plik wyglądał tak samo dla człowieka. Np. Ze zdjęcia usuwane jest część pikseli, a z filmu część klatek. Co prawda po dekompresji takie pliki nie nadają się już do obróbki, ale dla zwykłego użytkownika ich wygląd nie ulega zmianie. Ważną zaletą kompresji stratnej jest fakt, że archiwum utworzone tą metodą będzie zajmowało zdecydowanie mniej miejsca na dysku, co pozwoli na składowanie tam ogromnych ilości danych.

● Kompresja bezstratna jest wykorzystywana, kiedy zależy nam na możliwości odbudowy całego pliku po dekompresji. Wykorzystuje ona metody zamiany poszczególnych bitów na inne w taki sposób, aby utworzony plik był mniejszy niż suma rozmiarów plików, które wchodzą w jego skład, ale jego pełna odbudowa była możliwa. Tego typu skompresowane pliki zajmują więcej miejsca niż gdyby zostały skompresowane stratnie, jednak ich główną zaletą jest możliwość odtworzenia pełnego oryginalnego pliku.

11.4 Archiwa nieskompresowane w systemie Linux W celu utworzenia archiwum nieskompresowanego w systemie Linux najczęściej używa się programu tar . Nazwę tego programu można rozwinąć jako Tape Archiver, co w języku polskim oznacza archiwizator taśmowy. Zgodnie z nazwą, program ten był początkowo wykorzystywany do przygotowywania archiwów mających być umieszczone na taśmach magnetycznych – dawniej wykorzystywanych nośnikach danych, na których dane były zapisywane dzięki odpowiedniemu namagnesowaniu cienkiej taśmy z tworzywa sztucznego pokrytej warstwą ferromagnetyku (np. Tlenkami żelaza lub chromu).

184

Rysunek 11.1 Taśma magnetyczna

Dziś taśmy magnetyczne nie są już prawie w ogóle używane, a program tar służy do tworzenia archiwów na współczesnych nośnikach danych, takich jak dyski twarde. Nazwa jednak pozostała.

Program tar nie posiada wersji na interfejs graficzny, więc korzystamy z niego przez terminal. Używamy przy tym następującej składni:

tar [opcje] nazwa_archiwum nazwa_pliku_1 (...) nazwa_pliku_n

W miejscu nazwa_archiwum wpisujemy nazwę pliku archiwum, który chcemy utworzyć lub już istniejącego, do którego chcemy dodać nowe pliki. Nazwa archiwum powinna kończyć się rozszerzeniem .tar

W polach nazwa_pliku_X wpisujemy kolejne nazwy plików (lub ścieżki do nich), które chcemy dodać do archiwum. Kolejne nazwy rozdzielamy spacją. Nie ma limitu ilości plików. Podane mogą zostać również katalogi.

Najważniejsze opcje jakich można użyć dla programu tar :

185

● -f – pozwala na określenie nazwy archiwum. W większości przypadków bez tej opcji program wyświetli błąd i nie rozpocznie działania.

● -c – tworzenie archiwum. Nowe archiwum o podanej nazwie zostanie utworzone.

● -x - wyodrębnia (rozpakowuje) pliki z archiwum.

● -r – pozwala na dołączenie wybranego pliku do już istniejącego archiwum ● -z – utworzenie archiwum skompresowanego za pomocą gzip

11.4.1 Tworzenie archiwum nieskompresowanego

Aby utworzyć archiwum nieskompresowane wpisujemy:

tar –cf nazwa_archiwum nazwa_pliku

Rysunek 11.2 Tworzenie archiwum programem tar

W ten sposób powstało nieskompresowane archiwum archiwum.tar , zawierającego folder katalog . Ponieważ program tar automatycznie tworzy archiwa z zawartości podanych folderów, nie trzeba było podawać w tym celu żadnych dodatkowych opcji. Tworzenie archiwum programem tar nie powoduje usunięcia oryginalnych plików, a jedynie utworzenie archiwum obok nich.

11.4.2 Rozpakowywanie archiwów nieskompresowanych Program tar nie wypakuje plików w miejscu, w którym one już istnieją, dlatego przed ich rozpakowaniem należy przenieść lub skopiować archiwum w inne miejsce na dysku (lub inny dysk). Opcjonalnie można również usunąć oryginalne pliki. Gdy już to zrobimy, możemy rozpakować archiwum. Używamy do tego celu takiego samego polecenia jak do pakowania, opcję -c , która służyła do utworzenia archiwum, zastępujemy opcją -x , która wyodrębnia pliki.

186

Rysunek 11.3 Rozpakowanie archiwum

Archiwum zostało rozpakowane w lokalizacji, do której zostało przeniesione. Ponieważ nie było skompresowane, wszystkie pliki są w dokładnie takim samym stanie jak przed archiwizacją.

Rozpakowanie archiwum programem tar również nie spowodowało usunięcia archiwum, a jedynie dodanie obok wyodrębnionych z niego plików.

11.4.3 Dodawanie plików do istniejącego archiwum nieskompresowanego Program tar daje możliwość dodania plików do utworzonego wcześniej archiwum nieskompresowanego. Znów używamy tego samego polecenia, ponieważ korzystamy z tego samego programu, zmieniając jedynie jedną opcję: aby dodać plik do archiwum musimy użyć opcji –r .

Rysunek 11.4 Dodawanie pliku do istniejącego archiwum

187

Na zdjęciu powyżej oprócz dodania nowego pliku do już istniejącego archiwum przedstawiono również jego rozpakowanie, aby potwierdzić, że plik rzeczywiście został do niego dodany.

11.5 Kompresja danych w systemie Linux

Kiedy chcemy przez dłuższy czas przechowywać pliki na dysku, nie korzystając z nich w tym czasie lub przygotować je do transportu na przez medium o mocno ograniczonej pojemności (np. Dysk USB) warto je skompresować. Dzięki kompresji zmniejszy się rozmiar tych plików i pozwoli to np. na przechowywanie większej ich ilości na tym samym dysku. Trzeba jednak pamiętać, że o ile kompresowanie plików zapisanych w formatach nieskompresowanych (np. WAV, XCF, PSD) pozwalają znacząco zmniejszyć ich rozmiar na dysku, to kompresowanie plików, które ze względu na swój format zapisu zostały już raz skompresowane (np. MP3, JPEG, PNG), może nie przynieść oczekiwanych rezultatów.

W systemie Linux do kompresowania plików zazwyczaj używa się programu gzip . Nie tworzy on jednak archiwów skompresowanych, a jedynie kompresuje pliki, dlatego jeżeli chcemy utworzyć archiwum skompresowane za pomocą tego programu najpierw musimy utworzyć archiwum nieskompresowane za pomocą innego programu (np. tar ).

188

Rysunek 11.5 Logo programu gzip

Program gzip umożliwia bezstratną kompresję danych. Jego nazwa oznacza GNU zip, czyli zip dla GNU. z ip był i nadal jest popularnym formatem plików skompresowanych, którego nazwa po angielsku oznacza zamek błyskawiczny - dzięki niej jego twórcy chcieliby aby kojarzył się z szybkim działaniem. Rzeczywiście kompresowanie do tego formatu przebiegało dosyć szybko.

Program gzip , podobnie jak tar , działa tylko w trybie tekstowym. Korzystając z niego należy użyć następującej składni:

gzip [opcja] nazwa_pliku

W miejscu nazwa_pliku wpisujemy jaki plik chcemy skompresować. Pliki skompresowane przez gzip zostaną zapisane w formacie .gz . Jeżeli będziemy kompresować plik archiwum tar , rozszerzenie całego pliku przyjmie postać .tar.gz , czasem podawane w skrócie jako .tgz . W formie takich plików często rozprowadza się programy dla Linuxa lub nawet całe dystrybucje.

11.5.1 Tworzenie archiwum skompresowanego - gzip Do utworzenia archiwum skompresowanego użyjemy programu gzip oraz utworzonego wcześniej archiwum nieskompresowanego .tar .

W celu utworzenia archiwum skompresowanego nie trzeba do polecenia gzip dodawać żadnych opcji – jest to jego domyślna funkcja.

189

Rysunek 11.6 Tworzenie archiwum skompresowanego

Jak widać, użycie programu gzip do utworzenia archiwum skompresowanego od razu usuwa oryginalne archiwum. Jednak ze względu na to, że zostało ono poddane procesowi kompresji bezstratnej można później odzyskać oryginalne pliki w niezmienionym stanie. Do archiwum nieskompresowanego można było dodawać pliki już po jego utworzeniu, ale w przypadku archiwum skompresowanego jest to niemożliwe. Przed utworzeniem takiego archiwum należy dobrze przemyśleć jakie pliki mają się tam znaleźć. Później jedynym sposobem na dodanie tam nowych plików będzie rozpakowanie go, a następnie utworzenie nowego z tymi plikami, które ostatecznie mają się tam znaleźć. Pomimo zaznaczenia przez terminal na ten sam kolor zarówno archiwum skompresowanego jak i nieskompresowanego, w trybie graficznym można je z łatwością odróżnić za pomocą ikony. W standardowej paczce ikon Kubuntu archiwum nieskompresowane jest przedstawiane jako czerwony kwadrat z zamkiem błyskawicznym na górze pośrodku, a archiwum skompresowane analogicznie, jednak z kolorem kwadratu zmienionym na żółty.

190

Rysunek 11.7 Porównanie ikon archiwum skompresowanego z nieskompresowanym

11.5.2 Tworzenie archiwum skompresowanego – tar

Użycie programu gzip nie jest jedyną opcją utworzenia archiwum skompresowanego. Jeżeli użyjemy programu tar dodając do niego opcję -z , możemy od razu utworzyć archiwum skompresowane. Program tar użyje wtedy kompresji gzip , co pozwoli zaoszczędzić czas. Ponadto, utworzenie w ten sposób archiwum nie spowoduje usunięcia oryginalnych plików, co czasem może być przydatne. Utworzone tak archiwa nie różnią się niczym względem archiwów, na których najpierw użyto programu tar , a dopiero potem gzip .

Składnia polecenia wygląda dokładnie tak, jak standardowa składnia dla programu tar .

191

Rysunek 11.8 Tworzenie archiwum skompresowanego za pomocą programu tar Tak utworzone archiwa noszą nazwę tarball. Tarball to angielska nazwa oznaczająca częściowo zestaloną ropę naftową, której grudki można znaleźć na plażach i powierzchni oceanu niedaleko miejsc wycieku ropy. Archiwa skompresowane utworzone przez program tar nazwano w ten sposób, ponieważ kojarzą się ze sobą ze względu na nazwę ( tar - tarball ) , a tarballe posiadają mniejszą objętość niż ropa naftowa, z której się utworzyły, podobnie jak skompresowane archiwum zajmuje mniej miejsca na dysku niż pliki, z których zostało utworzone.

192

Rysunek 11.9 Tarball na jednej z plaż na Florydzie po wycieku z platformy Deepwater Horizon

11.5.3 Rozpakowywanie archiwum skompresowanego – gzip Za pomocą programu gzip można rozpakować archiwum skompresowane, aby uzyskać z powrotem archiwum nieskompresowane .tar . Jest to przydatne, kiedy chcemy już uzyskać dostęp do zarchiwizowanych plików lub np. dodać do archiwum nowy plik (do utworzonych archiwów skompresowanych nie można dodawać kolejnych plików). Istnieją dwa sposoby rozpakowania archiwum przy pomocy programu gzip . Jeden z nich wykorzystuje to samo polecenie co w przypadku procesu pakowania (gzip) i dodaje do niego opcję -d , od angielskiego decompress , co po polsku oznacza dekompresuj . Drugi, polega na użyciu polecenia gunzip również należącego do programu gzip . Po poleceniu gunzip wpisuje się już tylko nazwę pliku archiwum, który ma zostać rozpakowany.

193

Rysunek 11.10 Dekompresja archiwum za pomocą polecenia gzip

Rysunek 11.11 Dekompresja archiwum za pomocą polecenia gunzip Użycie programu gzip , podobnie jak podczas kompresji archiwum, skutkuje usunięciem oryginalnego pliku, w tym wypadku pliku archiwum skompresowanego.

11.5.4 Rozpakowywanie archiwum skompresowanego – tar Dekompresji archiwum można dokonać także dzięki programowi tar . Tutaj jednak archiwum zostanie od razu rozpakowane do plików początkowych, nie do archiwum nieskompresowanego jak w przypadku wykorzystania programu gzip . Program działa analogicznie do rozpakowywania zwykłych archiwów, więc należy pamiętać o tym, że pliki nie zostaną rozpakowane w miejscu, w którym już istnieją. To znaczy, że aby rozpakować takie archiwum należy je przenieść w inne miejsce na dysku (inny katalog) lub usunąć oryginalne pliki. Ponadto, program tar , podobnie jak przy pozostałych akcjach, do których został już wykorzystany, nie usunie oryginalnego pliku, w tym wypadku pliku archiwum skompresowanego.

194

Rysunek 11.12 Dekompresja i rozpakowywanie archiwum Jeżeli chcemy całkowicie rozpakować archiwum skompresowane lepiej użyć od tego programu tar niż gzip . Decyduje o tym mniejsza liczba kroków niezbędna do przeprowadzenia całej operacji dekompresji i rozpakowania.

11.6 Archiwizacja i kompresja danych – inne programy Używanie programów gzip i tar nie jest jedyną możliwością archiwizacji plików w systemie Linux, choć jedyną, która jest dostępna bez instalacji dodatkowego oprogramowania. Podobnie jak w innych systemach operacyjnych, użytkownik Linuxa może samodzielnie zainstalować program, służący do archiwizacji danych, aby mógł np. korzystać z tej funkcji w trybie graficznym. Spośród wielu programów do archiwizacji, do omówienia w tym rozdziale wybraliśmy bardzo popularny i darmowy program 7zip.

Najprostszym sposobem zainstalowania programu 7zip do systemu operacyjnego Linux wydaje się skorzystanie ze znanego nam już Odkrywcy .

195

Rysunek 11.13 Program 7zip dostępny do pobrania w oknie Odkrywcy Po znalezieniu w Odkrywcy programu 7zip możemy zainstalować go na naszym komputerze. Zostanie on automatycznie zapisany w odpowiedniej kategorii w Aktywatorze programów - narzędzia. Możemy go stamtąd otworzyć w trybie graficznym.

196

Rysunek 11.14 Okno programu 7zip

Razem z wersją graficzną programu została zainstalowana również jego wersja tekstowa. Można więc korzystać z niego zarówno w interfejsie graficznym jak i poprzez terminal. Ważne jest, że 7zip jednocześnie tworzy archiwum oraz kompresuje je, co wyklucza konieczność używania dwóch różnych programów, jak to było niezbędne wcześniej podczas korzystania z tar i gzip.

11.6.1 7zip – tryb graficzny

W trybie graficznym obsługa 7zipa jest niezwykle prosta. W celu utworzenia archiwum skompresowanego znajdujemy w interfejsie aplikacji pliki, które chcemy w nim umieścić, zaznaczamy i wybieramy zielony plus z napisem Add w górnym menu programu.

197

Rysunek 11.15 Okno tworzenia archiwum skompresowanego Wyświetli się wtedy okno, w którym będziemy mogli wybrać poszczególne opcje kompresji. Wszystkie zostały opisane i należy jedynie wybrać interesujące nas wartości (zazwyczaj można po prostu pozostawić je w stanie domyślnym). Później naciskamy przycisk OK w dolnym prawym rogu okna, a 7zip rozpocznie kompresję. Kiedy chcemy rozpakować archiwum skompresowane (niekoniecznie utworzone w programie 7zip , obsługuje on wiele różnych formatów archiwów) musimy wybrać interesujący nas plik archiwum a następnie nacisnąć przycisk Extract z niebieskim minusem na górnym pasku.

198

Rysunek 11.16 Wybór archiwum skompresowanego

Rysunek 11.17 Okno rozpakowywania archiwum skompresowanego Następnie wyświetli się okno, w którym musimy wybrać ścieżkę, gdzie pliki z archiwum zostaną rozpakowane oraz jeżeli to konieczne, podać hasło do archiwum. Można też

199

zmienić kilka innych opcji, jednak zazwyczaj nie jest to konieczne. Po wybraniu interesujących nas ustawień klikamy OK. Archiwum zostanie teraz poddane dekompresji i rozpakowane.

11.6.2 7zip – tryb tekstowy

Razem z programem w trybie graficznym podczas instalacji twój system operacyjny został również wzbogacony o zestaw poleceń powiązanych z programem 7zip . Pozwalają one dokonać tego samego co w trybie graficznym za pomocą konsoli. Polecenie uruchamiające program 7zip w trybie tekstowym brzmi 7z , a jego składnia wygląda następująco:

7z [opcja] nazwa_archiwum [nazwa_pliku] W polu opcja wpisujemy jedną z dostępnych dla tego polecenia opcji (w tym przypadku bez myślnika! Tylko litera oznaczająca daną opcję). Spośród wielu pozwalających na uzyskanie tego samego efektu co w trybie graficznym najważniejszymi są:

● a – ang. archive (pl. archiwizuj) - pozwala na utworzenie nowego archiwum skompresowanego;

● e – ang. extract (pl. wypakuj) - pozwala na wypakowanie archiwum skompresowanego;

W polu nazwa_archiwum wpisujemy nazwę, która ma nosić nowe archiwum, jeśli je tworzymy lub nazwę, którą nosi archiwum, jeśli chcemy je rozpakować. Pole nazwa_pliku zostało ujęte w klamry, ponieważ podczas tworzenia nowego archiwum należy tam wpisać po spacji wszystkie pliki lub katalogi, które mają się w nim znaleźć, a podczas rozpakowywania należy je pominąć.

200

Rysunek 11.18 Tworzenie archiwum skompresowanego w trybie tekstowym Po wpisaniu odpowiedniego polecenia, archiwum zostanie utworzone. 7zip nie usuwa katalogu, który posłużył do utworzenia archiwum.

Podczas rozpakowywania archiwum ono samo również nie zostanie usunięte. W przeciwny sposób działa jedynie program gzip .

Oprócz formatu .7z archiwa utworzone przez ten program mogą być również zapisane w jednym z wielu innych popularnych formatów, jak chociażby .zip czy .gz .

201

Rysunek 11.19 Rozpakowywanie archiwum skompresowanego w trybie tekstowym

202

11.7 Sprawd ź czy umiesz!

1. Wyjaśnij po co archiwizować swoje pliki.

2. Podaj dwa rodzaje archiwów i porównaj je ze sobą.

3. Wymień dwie metody kompresji. Czym one się różnią? Powiedz w jakiej sytuacji warto skorzystać z której metody.

4. Jakich programów możesz użyć w celu utworzenia archiwum w systemie Linux?

203