2022-06-07-08-06-39-tworzenie-archiwow-i-ich-kompresja-w-systemie-linux.png

Tworzenie archiwów i ich kompresja w systemach Linux

Archiwizacja i kompresja często są określane jako to samo pojęcie. Jednak istnieje spora różnica pomiędzy nimi. Moim celem w tym artykule jest wskazanie różnic oraz sposobów w jaki można wykonać archiwizację, a następnie połączyć ją z kompresją.

Nasz blog może się rozwijać dzięki naszym sponsorom. Nasz kurs dockera powstał dzięki współpracy z chmurami Vultr i tam dokładnie został przetestowany. Nasz szablon pochodzi z Envato MarketPlace. Wszystkie pluginy i elementy stron internetowych, jakie opisujemy, pochodzą z Envato Elements. Wszystkie książki, opisane na tym blogu, są dostepne u wydawcy Helion. Jesteśmy także partnerem Respondent.io, platformy, która płaci za testowanie aplikacji.

Pierwszym zagadnieniem jakim się zajmę będzie archiwizacja. Polega ona na zgrupowaniu plików w jeden co bardzo ułatwia przekazywanie dalej. Jeżeli posiadasz sporą liczbę dokumentów to łatwiej jest je zgrupować w jedno archiwum, a następnie przesłać na przykład przy pomocy poczty e-mail.

Nim przejdziemy do zapoznania się z odpowiednim poleceniem które posłuży archiwizacji musimy mieć pliki na których dokonamy tej czynności. Dlatego stwórzmy katalog, a w nim trzy pliki i dodajmy do nich jakieś treści:

mkdir archiwum-kompresja
touch silencedevs0.txt silencedevs1.txt silencedevs2.txt
cat > silencedevs0.txt
Tekst numer 1:   
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

cat > silencedevs1.txt
Tekst numer 2:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

cat > silencedevs2.txt
Tekst numer 3:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Sposób w jaki oraz jakie dane dodasz nie jest istotny. Wykorzystałem polecenie touch do stworzenia plików ponieważ uważam, że lepiej wizualnie zobrazuje czynności jakie wykonałem. Oto lista plików z ich rozmiarami:

ls -l
-rw-r--r-- 1 silencedevs silencedevs 464 05-31 21:26 silencedevs0.txt
-rw-r--r-- 1 silencedevs silencedevs 463 05-31 21:27 silencedevs1.txt
-rw-r--r-- 1 silencedevs silencedevs 466 05-31 21:27 silencedevs2.txt

Łączny wymiar wynosi 1393 bajtów. Pora zgrupować stworzone przez nas pliki w jedno archiwum. Do tego celu wykorzystamy program tar:

tar -cf pliki.tar *

Przed wykonaniem tego polecenia znajdowałem się wewnątrz katalogu w którym stworzyłem te trzy pliki. Polecenie tar jest programem dzięki któremu utworzymy archiwum o nazwie pliki.tar. Pierwsza z opcji -c oznacza stwórz archiwum, natomiast druga -f używając wskazanych plików. Gwiazdka oznacza, że archiwizować chcemy wszystkie pliki w folderze w którym się znajdujemy. Gdybyśmy chcieli dodać tylko wybrane pliki zamiast gwiazdki wpiszmy ich nazwy po spacji.

Jeżeli chcielibyśmy by zostały wyświetlone nazwy plików przy archiwizacji do powyższego polecenia powinniśmy dodać opcję -v czyli:

tar -cvf pliki2.tar *  
pliki.tar
silencedevs0.txt
silencedevs1.txt
silencedevs2.txt

Pamiętać jednak należy, że opcja -v nie może znajdować się na końcu, tylko w środku. Jak wspomniałem sama archiwizacja nie kompresuje dlatego sprawdźmy jaki rozmiar posiada nasze archiwum:

ls -l pliki.tar -rw-r--r-- 1 silencedevs silencedevs 10240 06-01 11:30 pliki.tar

Zwróćmy uwagę łączny rozmiar trzech stworzonych przez nas plików wynosił 1393 bajtów, natomiast archiwum z nimi posiada aż 10240 bajtów. Dość spora różnica, ale udowadnia, że nie zastosowaliśmy żadnej kompresji tylko stworzyliśmy archiwum które łatwo jest przesłać. Samo archiwum jednak waży o wiele więcej niż łącznie wszystkie pliki w nim zawarte. Dlatego warto zastosować kompresję, chyba że tak jak w tym wypadku dane nie są w jakiś sposób duże i śmiało możemy je przesłać w takiej formie.

Niemniej jednak często istnieje konieczność kompresji danych. Jednak nim przejdziemy do samego polecenia warto się dowiedzieć czym to jest.

Słowo kompresja oznacza zmniejszenie wymiaru plików. Zgodnie z regułą kompresujemy pliki zmniejszając ich wymiar. Jednak występują dwa rodzaje kompresji:

  • kompresja bezstratna;
  • kompresja stratna;

Kompresja bezstratna zmniejsza wymiary archiwum, ale o tyle aby dane po ich dekompresji były identyczne. Ten rodzaj kompresji musimy zastosować do plików takich jak skrypty, programy. Drugim rodzajem kompresji jest stratna. Tutaj dane kompresowane są do takiego stopnia, że ich integralność po dekompresji będzie się różniła, ale za to jako całość archiwum jest mniejsze. Tego typu rozwiązanie powinno być stosowane tylko do plików multimedialnych ponieważ różnice są mało zauważalne.

Kompresja i archiwizacja są bardzo istotnym elementem korzystania z systemów operacyjnych, nie tylko z Linuksa. Prywatnie często zdarza nam się robić kopię bezpieczeństwa naszych dokumentów, zdjęć oraz innych ważnych dla nas plików które potem przechowujemy w bezpiecznym miejscu. O kompresowaniu plików w jakiejkolwiek działalności gospodarczej nie muszę pisać. W większości firm kopie robi się na co dzień, a nawet kilka na dzień w zależności od potrzeb.

Kompresja która nie wyrządza żadnych strat różni się od drugiej tym, że pliki są zmniejszane do takich wymiarów które nie spowodują utraty jakiejś części danych. Dlatego tego typu kompresja musi być zastosowana dla ważnych plików z danymi jak na przykład dokumenty czy też skrypty. W tym przypadku zastosowanie kompresji gdzie pliki ulegają maksymalnemu zmniejszeniu może przynieść niepożądane efekty uboczne. Stosując bezpieczną kompresję mamy pewność, że dane które otrzymasz pozostaną nienaruszone.

Kompresje wykonamy na utworzonym wcześniej archiwum. Do tego celu, można skorzystać z kilku programów lecz najlepiej sprawdzającym się według mnie jest bzip2. Każdy z programów kompresujący pliki posiada swój własny algorytm do tego służący. Program bzip2 kompresuje najlepiej z tych mi znanych dlatego skorzystam z jego w tym artykule. Aby wykonać kompresję archiwum wystarczy posłużyć się poleceniem w następujący sposób:

bzip2 pliki.tar

W ten sposób wykonaliśmy to co zamierzaliśmy i co ważne pliki.tar został zastąpiony plikiem o rozszerzeniu pliki.tar.bz2. Zerknijmy jeszcze na wymiary po kompresji:

ls -l pliki.tar.bz2 
-rw-r--r-- 1 silencedevs silencedevs 589 06-01 11:30 pliki.tar.bz2

Analizując, poprzednio pliki łącznie miały rozmiar 1393 bajtów. Po archiwizacji ważyły trochę więcej bo 10240 bajtów. Po wykonaniu kompresji bezstratnej archiwum ma rozmiar 589 bajtów. Prosta matematyka która udowadnia, ile miejsca możemy zaoszczędzić szczególnie na kopie bezpieczeństwa. Wykorzystanie tego typu kompresji można stosować do wszystkich plików dlatego może zaoszczędzić nam bardzo dużo zasobów na naszych dyskach, partycjach. Oczywiście jeżeli będziesz archiwizował oraz kompresował pliki o dużej wadze to te czynności zajmą o wiele więcej czasu.

Jeżeli chcemy rozpakować nasze skompresowane archiwum musimy posłużyć się poleceniem:

bunzip2 pliki.tar.bz2

Otrzymamy zdekompresowane archiwum pliki.tar. Aby rozpakować archiwum korzystamy z polecenia:

rm *.txt
tar -xvf pliki.tar
silencedevs0.txt
silencedevs1.txt
silencedevs2.txt
ls -l
-rw-r--r-- 1 silencedevs silencedevs 20480 06-01 11:46 pliki2.tar
-rw-r--r-- 1 silencedevs silencedevs 10240 06-01 11:30 pliki.tar
-rw-r--r-- 1 silencedevs silencedevs 464 05-31 21:26 silencedevs0.txt
-rw-r--r-- 1 silencedevs silencedevs 463 05-31 21:27 silencedevs1.txt
-rw-r--r-- 1 silencedevs silencedevs  466 05-31 21:27 silencedevs2.txt

Na samym początku usunąłem wszystkie pliki które wcześniej stworzyliśmy, a następnie je zarchiwizowaliśmy. Po tym skorzystałem z polecenia tar z odpowiednimi opcjami aby rozpakować stworzone archiwum i tym samym wyodrębnić pliki. Na sam koniec sprawdziłem czy pliki zostały rozpakowane.

Programów do kompresji jak już wspomniałem jest kilka. Do tych dobrze znanych należy jeszcze gzip. Różnica jest taka, że gorzej wykonuje kompresję plików, ale działa szybciej. Drugi rodzaj kompresji najczęściej stosuje się do plików multimedialnych. Przyznam, że osobiście nie stosuje kompresji stratnej ze względu na choć może małą skalę strat to jednak wrażliwe okno lub ucho może odnaleźć różnicę. W związku z tym w tym artykule zakończę go na temacie kompresji bezstratnych.

Udostępnij

Porozmawiajmy o Twoich potrzebach

POROZMAWIAJMY O USŁUGACH, JAKICH POTRZEBUJESZ DLA SWOJEGO BIZNESU

Z chęcia pomożemy Ci wzrastać w wybranym przez Ciebie biznesie.