Archiwizacja i kompresja danych

Damian Stelmach

Mam nadzieje, że każdy kto trafił na ten wpis, jest już na tyle ogarnięty informatycznie, że wie czym są archiwa. Dla tych co jednak nie wiedzą to powiem, że archiwum to nic innego jak karton do którego spakowaliśmy garnki, talerze i sztućce, aby łatwiej je przechować lub przenieść w inne miejsce…
wróć, to nie artykuł na blaga kulinarnego, tylko tutorial z Linuxa więc jeszcze raz. Archiwum to paczka, która zawiera zbiór katalogów i plików, widoczna dla systemu operacyjnego jako jeden obiekt, jeden plik, tworzony po to aby łatwiej był nam je przechowywać czy przenosić, a także zabezpieczać. Znacie paczki 7zip czy innego Winrar’a? To są właśnie archiwa, do których zapakowano pliki. Archiwizację stosuje się w celu łatwiejszego przechowywania i porządkowania danych. Archiwa są często również bazą kopii zapasowych danych firmowych czy instytucjonalnych, a także za ich pomocą dystrybuowane jest czasami oprogramowanie. Jeśli chcemy np. zainstalować na Linuchu WordPress’a, to możemy to zrobić właśnie za pomocą archiwum. Nie wiem czy pamiętacie szczegóły z poprzedniego odcinka, tam również pojawił się temat archiwizacji. Podczas usuwania usera z systemu można jednocześnie stroszyć kopię jego danych zapisanych w katalogu domowym, takie kopia zapisywana jest na dysku właśnie jako archiwum.

Z archiwizacją jednoznacznie łączy się również pojęcie kompresji, czyli zamiany sposobu zapisu danych na nośnikach w taki sposób, aby zajmowany one mniej miejsca niż zbiór źródłowy. Sposoby kompresji danych w systemie Linux, również w tym wpisie zaprezentuje.

W Ubuntu, jak i w wielu innych dystrybucjach opartych na jądrze Linux występuje kilka narzędzi, programów do zarządzania archiwami, najpopularniejsze to tar oraz zip. Dla większości użytkowników ich działanie jest do siebie zbliżone, zasadnicza różnica jest taka, że tar sam w sobie nie obsługuje kompresji, a zip już tak. Oczywiście da się archiwum tar również skompresować, ale do tego wykorzystywane są zewnętrzne narzędzia takie jak gzip czy bzip.

Tyle teorii, teraz nieco praktyki. Dzisiaj omówimy sobie narzędzie tar wraz z jego podstawowymi opcjami ponieważ jest to domyślny program do zarządzania archiwami instalowany na Linux’ach. Zaczniemy od prostego zadania, a mianowicie wykonamy sobie archiwum z katalogu z nazwie dokumenty:

tar -cf archiwum_dokumenty.tar dokumenty

gdzie: tar rozpoczyna tworzenie archiwum, c tworzy archiwum, f pozwala nadać nazwę z rozszerzeniem: archiwum_dokumenty.tar, a dokumenty to katalog z plikami, na bazie którego wykonujemy archiwum. Oczywiście tworzymy archiwum w bieżącej lokalizacji, można również podać nazwę wraz z pełną ścieżką jeśli chcielibyśmy utworzyć archiwum z katalogu, który zapisany jest w innym miejscu.

Jeśli podczas tworzenia archiwum, chcemy zobaczyć jakie pliki są do tego archiwum dodawane, możemy dodać parametr v, wówczas nasze polecenie będzie wyglądało tak:

tar -cvf archiwum_dokumenty.tar dokumenty

A co jeśli tak zajdzie konieczność udokumentowania tego co do archiwum wrzuciliśmy? Nic trudnego, możemy skorzystać przecież ze znanego już nam przekserowania strumienia. Zakładając, że info o tym co jest w archiwum chcemy zapisać do pliku dok_arch nasze polecenie będzie wyglądało tak:

tar -cvf archiwum_dokumenty.tar dokumenty > dok_arch 

Oczywiście nawet jeśli nie zrobiliśmy dokumentacji tego co jest w archiwum na etapie jego tworzenia, to zawsze możemy do niego zajrzeć korzystając z parametru t. Wówczas nasze polecenie będzie wyglądało tak:

 tar -tf dok.tar 

Dodanie kolejnego pliku lub katalogu do archiwum? Prosta sprawa, wystarczy skorzystać z parametru r, podać nazwę archiwum z rozszerzeniem, a także lokalizację z nazwą pliku. Wówczas nasze polecenie może wyglądać np. tak:

tar -rf dok.tar dokumenty/2020/faktura12_2020.txt

a do naszego archiwum zostanie dodany plik faktura12_2020.txt

Jak już mówiłem tar sam w sobie nie obsługuje kompresji, można jednak korzystając z tego programu i odpowiednich parametrów wymusić skompresowanie archiwum za pomocą „zewnętrznego” oprogramowania do kompresji, m.in. gzip. Załóżmy, że chcemy utworzyć skompresowane archiwum z katalogu dokumenty. Użyć do tego możemy takiego polecenia:

tar -czf dok.tar.gz dokumenty
gdzie parametr z umożliwia skompresowanie archiwum za pomocą oprogramowania gzip. Ważne, aby nowotworzone archiwum miało rozszerzenie .tar.gz

Jeśli z jakiś powodów nie chcemy kompresować archiwum na etapie jego tworzenie lub też otrzymaliśmy paczkę, którą chcemy dopiero kompresować to łatwo możemy to wykonać stosując polecenie gzip, z nazwą archiwum, które chcemy skompresować:

gzip dok.tar
Wówczas automatycznie utworzony zostaje plik z rozszerzaniem .tar.gz, a archiwum z samym rozszerzaniem .tar znika.

Dekompresję, czyli działanie odwrotne do kompresji wykonać możemy stosując polecenie gunzip wraz z nazwą skompresowanego archiwum:

gunzip dok.tar.gz

Umiemy już archiwa tworzyć i je kompresować, to zobaczmy teraz jak rozpakować archiwum. Do tego użyć możemy parametru x, a całe polecenie może wyglądać tak:

tar -xf dok.tar

Domyślnie tar rozpakowuje archiwa do katalogu, w którym archiwum było zapisane. Jeśli chcemy do oczywiście możemy określić inną lokalizację do rozpakowania archiwum, pod warunkiem oczywiście, że taka istnieje. Do tego użyć możemy parametru C. Takie polecenie np:

tar -xf dok.tar -C /Home/stefan
Rozpakuje archiwum do katalogu domego usera stefan