Archiwa

Z openSUSE wiki

Zalet kompresji plików nie trzeba nikomu przedstawiać. W tym artykule poznasz szczegóły obsługi kompresorów i archiwizatorów pod openSUSE.

Spis treści


gzip

gzip (GNU zip) jest popularnym programem do kompresji plików. Zaprezentuje jego wydajność na przykładzie pliku .svg:

$ du -b copyleft-flag.svg
2673    copyleft-flag.svg
$ gzip --best copyleft-flag.svg
$ du -b copyleft-flag.svg.gz
1139    copyleft-flag.svg.gz

Można wybierać stopień kompresji, z zakresu -1 (równoważne z --fast) do -9 (równoważne z --best), domyślnie ustawiony jest -6.

$ gzip --fast copyleft-flag.svg
$ du -b copyleft-flag.svg.gz
1211    copyleft-flag.svg.gz

gzip użyty z opcją -c wypisze skompresowane dane na standardowe wyjście, a bez podania argumentu (lub podania -) pobierze dane ze standardowego wejścia, co jest przydatne podczas pisania skryptów. Użyty z opcją -r i katalogiem jako parametr, rekursywnie kompresuje pliki w wskazanym katalogu.

Do dekompresji można użyć polecenia gunzip, albo gzip z opcją -d.

$ ls
copyleft-flag.svg.gz
$ gunzip copyleft-flag.svg.gz
$ ls
copyleft-flag.svg

Dokumentacja w pakietach RPM jest kompresowana za pomocą programu gzip. Można ją dekompresować i przeglądać za pomocą poniższych poleceń

 $ cat README.gz | gunzip -c

ale można zrobić to za pomocą polecenia zcat, uzyskując identyczny wynik (plik "README.gz" jest oczywiście przykładowy).

 $ zcat README.gz

bzip2

bzip2, tak jak gzip jest kompresorem danych, ale osiąga nieco lepszą wydajność kompresji. Niestety, jest to okupione większymi wymaganiami sprzętowymi i dłuższym czasem kompresji/dekompresji. Z tego powodu, projekt OpenBSD odrzucił bzip2 na korzyść gzip.

Zaprezentuję tu małe porównanie na przykładzie pliku "CREDITS" z źródeł jądra 2.6.14.7.

$ du -b CREDITS
9223   CREDITS
$ bzip2 -k -9 CREDITS
$ gzip -9 CREDITS
$ du -b CREDITS.*
35307   CREDITS.bz2
39788   CREDITS.gz

Choć nie zawsze kompresja jest wydajniejsza:

 
$ du -b copyleft-flag.svg
2673    copyleft-flag.svg
$ bzip2 -k -9 copyleft-flag.svg
$ gzip  -9 copyleft-flag.svg
$ du -b copyleft-flag.svg.*
1214    copyleft-flag.svg.bz2
1139    copyleft-flag.svg.gz

Opcja -9 działa tak jak w programie gzip i także domyślnym stopniem jest -6. Znaczącą różnicą jest opcja -k, która pozwala zachować pliki wejściowe podane podczas kompresji lub dekompresji. bzip2 również posiada opcje -c, która działa identycznie jak ta w gzip.

Dekompresować można za pomocą opcji -d lub polecenia bunzip2, które, analogicznie do polecenia gunzip, posiada opcje -c

tar

tar (Tape ARchiwer) jest archiwizatorem, to znaczy, programem do „sklejania” kilku plików w jeden, stworzonym zgodnie z uniksową filozofią „do only one thing”. Często archiwa są kompresowane za pomocą programów gzip lub bzip2.

Archiwa można tworzyć poleceniem:

 
$ tar -cvf archiwum.tar copyleft-flag.svg
copyleft-flag.svg

Opcja -c tworzy nowe archiwum, -v wypisuje nazwy archiwizowanych plików, a -f określa urządzenie/plik z archiwum (domyślnie jest -, czyli standardowe wyjście).

Można podawać jako argumenty dowolną liczbę plików i katalogów, jednak poprzez nieuwagę w poprzednim przypadku nie został zarchiwizowany plik "CREDITS", ale można to naprawić:

 
$ tar -rvf archiwum.tar CREDITS
CREDITS

Opcja -r powoduje dołączenie do istniejącego archiwum plików/katalogów podanych jako argumenty. tar użyty z opcją -r, -f i archiwum jako argumentem wypisze zawartość archiwum:

 
$ tar -tf archiwum.tar
copyleft-flag.svg
CREDITS

Opcja -v użyta z opcją -r pozwoli uzyskać informacje o prawach dostępu, liczbie dowiązań twardych, właścicielu, grupie, rozmiarze, czasie modyfikacji i oczywiście nazwy pliku będącego w archiwum. Wyniki będą wyświetlone w takim samym formacie co wyniki polecenia ls -l.

Tak utworzone archiwa nadal zajmują wiele miejsca na dysku twardym, można je skompresować za pomocą metod opisanych wcześniej, ale nie jest to dość wygodne rozwiązanie. Na szczęście, tar posiada opcje -z i -j. Za pomocą pierwszej kompresuje się archiwum programem gzip, a druga używa programu bzip2 do kompresji.

 
$ tar -czf archiwum.tar.gz copyleft-flag.svg CREDITS
$ tar -cjf archiwum.tar.bz2 copyleft-flag.svg CREDITS
$ du -b archiwum.tar*
102400  archiwum.tar
36702   archiwum.tar.bz2
41314   archiwum.tar.gz

Do rozpakowywania archiwów służy opcja -x:

 
$ tar -xvf archiwum.tar
copyleft-flag.svg
CREDITS

Oczywiście, opcja -v pokazuje dodatkowe informacje, w tym wypadku rozpakowywane pliki.

Skompresowane archiwa można rozpakowywać "step by step, czyli krok po kroku, ale wygodniej jest się posłużyć opcjami -z i -j.

$ tar -zxvf archiwum.tar.gz
copyleft-flag.svg
CREDITS
$ tar -jxvf archiwum.tar.bz2
copyleft-flag.svg
CREDITS

Warto zauważyć, że tar nadpisuje istniejące pliki bez wyświetlania ostrzeżeń.

unzip - program do rozpakowywania plików zip

Archiwa .zip mogą być rozpakowane za pomocą programu unzip. Program domyślnie rozpakowuje je do bieżącego katalogu, ale można to zmienić za pomocą opcji -d. Pakiet zawierający program znajduje się on w standardowym repozytorium openSUSE.

Przykład najprostszego użycia:

 
$ unzip archiwum.zip

Opcja -l służy do wyświtlenia zawartości archiwum. Opcją -t sprawdza się poprawność archiwum:

$ unzip -t backup.zip 
Archive:  backup.zip
    testing: source/podstawowe-repozytoria-yast.txt   OK
    testing: source/programowanie-bash.txt   OK
    testing: source/skrypty-powloki-a-programy.txt   OK
    testing: source/forum_category.txt   OK
No errors detected in compressed data of backup.zip.

Jak widać, powyższe archiwum jest poprawne.

unrar - program do rozpakowywania plików rar

Za pomocą programu unrar można rozpakować archiwa .rar (także te zabezpieczone hasłem). Znajduje się on w standardowym repozytorium openSUSE.

Przykład najprostszego użycia:

 
$ unrar e archiwum.rar

Opcja e rozpakowuje pliki do bieżącego katalogu. Katalog docelowy można zmieniać podając po opcji e poprawną ścieżkę do wymaganej lokalizacji. Za pomocą opcji t można przetestować archiwum. Program automatycznie zapyta o hasło podczas próby rozpakowania zabezpieczonego archiwum.

unace - program do rozpakowywania plików ace

Za pomocą programu unace można rozpakować archiwa .ace. Znajduję się on w standardowym repozytorium openSUSE.

Przykład najprostszego użycia:

 
$ unace e archiwum.ace

Opcja e rozpakowuje pliki do bieżącego katalogu. Katalog docelowy można zmieniać podając po opcji e poprawną ścieżkę do wymaganej lokalizacji. Za pomocą opcji t można przetestować archiwum. Opcja l wyświetli zawartość archiwum.

Część tego artykułu pierwotnie została napisana na potrzeby konkursu na dokumentację dystrybucji Aurox. Ta wersja została zmieszczona tutaj przez autora.