Opcje kompresji i porównania plików w systemie Linux

Linux File Compression Options



Ogólnie rzecz biorąc, kompresja jest użyteczną metodą, która zasadniczo polega na kodowaniu informacji przy użyciu mniejszej ilości danych niż oryginalna. W przypadku Linuksa istnieją różne opcje kompresji, z których każda ma swoje zalety.

Ogólna dystrybucja Linuksa oferuje dostęp do kilku naprawdę przydatnych i prostych mechanizmów kompresji. Ten artykuł skupi się tylko na nich.







Rodzaje kompresji

Kompresja to kodowanie i przedstawianie informacji przy użyciu mniejszej liczby bitów niż pierwotnie. W przypadku kompresji plików metoda kompresji wykorzystuje własny algorytm i obliczenia matematyczne do generowania danych wyjściowych, które są zazwyczaj mniejsze niż rozmiar oryginalnego pliku. Ze względu na sposób działania różnych kompresji i losowy charakter plików przebieg może się znacznie różnić.



Istnieją 2 rodzaje kompresji.



  • Kompresja stratna : Jest to ryzykowny rodzaj kompresji, który nie gwarantuje integralności danych. Zasadniczo po skompresowaniu istnieje ryzyko, że oryginalnego pliku nie można odtworzyć przy użyciu skompresowanego archiwum.
    Dobrym przykładem tego typu kompresji jest dobrze znany format MP3. Gdy plik MP3 jest tworzony z oryginalnego pliku audio, jest on znacznie mniejszy niż oryginalny źródłowy plik muzyczny. Powoduje to utratę jakości dźwięku.
  • Kompresja bezstratna : Jest to najczęściej używany rodzaj kompresji. Używając bezstratnej metody kompresji, oryginalny plik można zrekonstruować ze skompresowanego pliku. Wszystkie metody kompresji, które omówię w tym artykule, są bezstratnymi metodami kompresji.

Kompresja Linuksa

Większość metod kompresji jest dostępna w narzędziu smoła . Jeśli chodzi o kompresję zip, użyjemy zamek błyskawiczny narzędzie. Zakładając, że Twój system ma już zainstalowane te narzędzia, zacznijmy.





Na początek potrzebujemy pliku testowego. Uruchom następujące polecenie, aby je utworzyć.

$podstawa64/dev/losowy| głowa -C 20000000 >plik.txt



Utworzy plik tekstowy o rozmiarze 20 MB.

Teraz utwórzmy 10 kopii pliku. Razem to 200 MB.

Zip do kompresji

Zip jest dość powszechny. Aby utworzyć plik zip, narzędzie zip wymaga następującej struktury poleceń.

$zamek błyskawiczny <wyjście>.zamek błyskawiczny<Wejście>

Aby skompresować wszystkie pliki w katalogu testowym w jednym pliku zip, uruchom to polecenie.

$zamek błyskawicznytest.zip*

Rozmiar wejściowy wynosił 200 MB. Po kompresji ma teraz 152 MB!

Domyślnie narzędzie zip zastosuje kompresję DEFLATE. Może jednak również korzystać z kompresji bzip2. Co więcej, możesz także tworzyć pliki zip chronione hasłem! Dowiedz się więcej o suwaku .

Tar do kompresji w systemie Linux

Smoła nie jest metodą kompresji. Zamiast tego jest najczęściej używany do tworzenia archiwów. Może jednak zaimplementować do archiwum kilka popularnych metod kompresji.

Do obsługi archiwum tar (znanego również jako tarball) dostępne jest narzędzie tar. Dowiedz się więcej o smole . Ogólnie rzecz biorąc, narzędzie smoła używa następującej struktury poleceń.

$smoła <opcje> <plik wyjściowy> <Wejście>

Aby dodać pliki testowe do jednego archiwum tar, uruchom następujące polecenie.

$smoła -cvftest.tar*

Tutaj rozmiar pliku pozostaje taki sam.

Gzip do kompresji w systemie Linux

GNU Zip lub gzip to kolejna popularna metoda kompresji, która moim zdaniem jest lepsza niż tradycyjny zip ze względu na lepszą kompresję. Jest to produkt open-source stworzony przez Marka Adlera i Jean-Loup Gailly, który pierwotnie miał zastąpić UNIX Kompresja pożytek.

Do zarządzania archiwami gzip dostępne są 2 narzędzia: tar i gzip. Sprawdźmy oba z nich.

Najpierw narzędzie gzip. Oto jak wygląda struktura poleceń gzip.

$gzip <opcja> <Wejście>

Na przykład następujące polecenie zastąpi test1.txt skompresowanym plikiem test1.txt.gz.

$gzip -vtest1.txt

Jeśli chcesz skompresować cały katalog za pomocą gzip, uruchom to polecenie. Tutaj flaga -r służy do kompresji rekurencyjnej. Gzip przejdzie przez wszystkie foldery i skompresuje poszczególne pliki w każdym z nich.

$gzip -r <ścieżkę foldera>

Gzip obsługuje różne wartości siły kompresji, od 1 (najmniejsza kompresja, najszybsza) do 9 (najlepsza kompresja, najwolniejsza).

$gzip -v -9 <plik>

Aby uzyskać lepszą kontrolę nad danymi wyjściowymi i łatwość użycia, smoła jest lepsza do tego zadania. Uruchom następujące polecenie.

$smoła -cvzftest.tar.gz*

Wynik jest podobny do zip przy użyciu DEFLATE, co daje 152 MB po kompresji.

Bzip2 do kompresji w systemie Linux

Bzip2 to bezpłatne narzędzie typu open source, które wykorzystuje do kompresji algorytm Burrows-Wheeler. Po raz pierwszy wprowadzony w 1996 roku, bzip2 jest często używany jako alternatywa dla kompresji gzip.

Podobnie jak gzip, są 2 narzędzia do pracy z bzip2: tar i bzip2.

Narzędzie bzip2 działa podobnie do narzędzia gzip. Może działać tylko z jednym plikiem na raz. Oto struktura poleceń.

$bzip2 <opcja> <Wejście>

Skompresujmy plik test1.txt. Tutaj flaga -v jest dla trybu pełnego.

$bzip2 -vtest1.txt

Podobnie jak gzip, bzip2 obsługuje również różne poziomy kompresji, zaczynając od 1 (domyślnie, mniejsze zużycie pamięci) do 9 (ekstremalna kompresja, wysokie zużycie pamięci).

$bzip2 -v -9 <plik>

Lepszym sposobem użycia kompresji bzip2 jest użycie tar. Użyj następującego polecenia.

$smoła -cvjftest.tar.bz2*

Kompresja jest nieco lepsza niż poprzednie. Teraz rozmiar pliku zmniejszył się do 151,7 MB.

XZ do kompresji w systemie Linux

To względna nowość w dziedzinie kompresji. Wydany po raz pierwszy w 2009 roku, od tego czasu obserwuje stały wzrost użycia.

Narzędzie do kompresji xz wykorzystuje algorytm LZMA2, który jest znany z większego współczynnika kompresji w porównaniu z gzip i bzip2, co czyni go doskonałym wyborem, gdy chcesz zaoszczędzić maksymalną ilość miejsca na dysku. Wiąże się to jednak z wyższymi wymaganiami dotyczącymi pamięci i zużyciem czasu.

Plik utworzony przez narzędzie do kompresji XZ ma rozszerzenie .xz. Aby skompresować pojedynczy plik, możesz bezpośrednio wywołać narzędzie XZ.

$xz<opcja> <plik>

Na przykład uruchom następujące polecenie, aby skompresować plik test1.txt.

$xz-vtest1.txt

Podobnie jak inne wspomniane metody kompresji, xz obsługuje również różne zakresy siły kompresji, od 1 (najniższa kompresja, najszybsza) do 9 (najlepsza kompresja, najwolniejsza). Jeśli nie dbasz o czas i chcesz po prostu zaoszczędzić miejsce, postaw na skrajność.

$xz-v -9 <plik>

Aby utworzyć skompresowany plik XZ ze wszystkich plików testowych, uruchom to polecenie.

$smoła -cvJftest.tar.xz*

Tutaj rozmiar pliku wyjściowego wynosi 153,7 MB.

Rozpakowywanie skompresowanych archiwów

Wyodrębnienie utworzonych przez nas archiwów jest łatwiejsze niż ich tworzenie. Aby wyodrębnić plik zip, użyj następującej struktury poleceń.

$rozsunąć suwak <Nazwa pliku>.zamek błyskawiczny-D <Miejsce docelowe>

Aby rozpakować utworzone przez nas archiwum zip, uruchom to polecenie. Spowoduje to wyodrębnienie całej zawartości w tym samym katalogu.

$rozsunąć suwaktest.zip

Aby rozpakować archiwa tar, tar.gz, tar.bz2 i tar.xz, musimy użyć smoła narzędzie. Poniższe polecenie smoły ma zastosowanie do wyodrębnienia ich wszystkich.

$smoła -xvf <nazwa_pliku_archiwum>

Na przykład wyodrębnijmy wszystkie pliki ze skompresowanego archiwum bz2.

$smoła -xvftest.tar.bz2

Aby zdekompresować plik gzip (nie tar.gz), uruchom to polecenie.

$gzip -D <plik_gzip>

Podobnie, poniższe polecenie zdekompresuje archiwum bzip2.

$bzip2 -D <bzip2_file>

Ta sama struktura poleceń dotyczy archiwum xz.

$xz-D <xz_file>

Końcowe przemyślenia

Mamy nadzieję, że teraz masz wystarczającą wiedzę, aby poradzić sobie z zadaniami kompresji w różnych okolicznościach. W zależności od konkretnych wymagań, wszystkie metody kompresji oferują bardzo atrakcyjne funkcje.

Ważną rzeczą, na którą należy zwrócić uwagę, jest to, że wynik kompresji nie będzie cały czas taki sam. Przy różnych wprowadzanych danych wynik będzie inny. Na przykład w niektórych przypadkach xz może zaoferować szalony wynik kompresji, podczas gdy w tym przykładzie tak się nie stało. To samo dotyczy innych metod.

Aby dowiedzieć się więcej o tych narzędziach, sprawdź ich odpowiednią stronę podręcznika.

$facet zamek błyskawiczny