Archiwizowanie i kompresowanie katalogów i plików

Z SOISK systemy operacyjne i sieci komputerowe
Skocz do: nawigacja, szukaj

TAR

tar (nazwa pochodzi od angielskiego Tape ARchiverARchiwizator Taśm) - uniksowy program do umieszczania grupy plików w jednym zbiorczym pliku (tzw. archiwum), który następnie może zostać skompresowany programami gzip, bzip2, compress lub lzma, co daje odpowiednio pliki tar.gz (w skrócie .tgz), tar.bz2, .tar.Z, i tar.lzma. Istnieją również inne algorytmy kompresji które można zastosować po spakowaniu przy pomocy programu tar (narzędzia takie wtedy są prostsze, ponieważ nie muszą zajmować się nazwami plików, dowiązaniami, katalogami, prawami dostępu, co wykonuje sam program tar, i pozostawiając sobie kompresje tylko jednego pliku/strumienia). Dodawany do archiwum tar plik jest zawsze umieszczany na jego końcu.

Takie skompresowane pliki tar są nazywane tarball.

Jak sama nazwa wskazuje, program ten był początkowo używany do przygotowania plików do archiwizacji na taśmach magnetycznych, a obecnie jest wykorzystywany do przygotowywania archiwów zapisywanych na dowolnym nośniku.

Program ten jest powszechnie używany w systemach operacyjnych typu Unix, jednak istnieją też wersje dla innych systemów operacyjnych.

Podstawowe opcje wiersza poleceń

  • -c – tworzy plik w formacie tar
  • -f – określa nazwę pliku archiwum tar
  • -v – wypisuje nazwy wszystkich plików
  • -x – wyodrębnia wymienione pliki
  • -t – wyświetla zawartość archiwum
  • -r – włącza bezwarunkowe dołączanie plików do archiwum
  • -u – powoduje dołączenie do archiwum tylko tych plików, które są nowsze niż ich odpowiedniki w archiwum
  • -z – włącza kompresję programem gzip
  • -j – włącza kompresję programem bzip2
  • -Z – włącza kompresje programem compress [1]

Przykład użycia

1. Tworzenie archiwum

tar –cf plik.tar plik_źródłowy

2. Odtwarzanie archiwum

tar –xf plik.tar

3. Tworzenie archiwum z wyświetleniem plików

tar -cvf test.tar test.txt

4. Odtwarzanie archiwum z wyświetleniem plików

tar -xvf test.tar

Ćwiczenia

  1. Odtwórz archiwum test.tar do folderu o nazwie rozpakowane
  2. Do archiwum test.tar dodaj plik linux.doc
  3. Wyświetl zawartość archiwum test.tar (bez rozpakowywania)
  4. Usuń plik linux.doc z archiwum test.tar
  5. Do archiwum test.tar dodaj zawartość archiwum plik.tar

GZIP

gzip (GNU zip) to program komputerowy służący do bezstratnej kompresji danych, tworzony w ramach projektu GNU.

Historia

Pierwotnie napisany jako zamiennik dla programu compress. Popularny zwłaszcza w systemach typu Unix, gdzie jest często używany do kompresji archiwów tar. Pliki wyjściowe programu gzip zwykle mają domyślnie .gz.

Gzip oparty jest o algorytm deflate, który jest kombinacją algorytmu LZ77 i kodowania Huffmana. Algorytm deflate powstał w odpowiedzi na opatentowanie LZW i innych algorytmów kompresji. Jak oświadczył Jean-loup Gailly, jeden z autorów programu, poświęcił on więcej czasu na studiowanie patentów niż na opracowanie i oprogramowanie tego algorytmu.

Zastosowania

Format kompresji danych zlib, algorytm deflate oraz format plików gzip zostały ustandaryzowane w następujących dokumentach RFC 1950, RFC 1951 i RFC 1952. Standardy te wykorzystuje m.in. format graficzny PNG.

W celu przyspieszenia rozwoju oprogramowania wykorzystującego kompresję została stworzona (przez autorów gzip) biblioteka zlib. Obsługuje ona format plików gzipa oraz algorytm kompresji deflate. Biblioteka ta jest bardzo szeroko stosowana ze względu na niewielki rozmiar oraz efektywność działania.

Oprogramowanie dla systemów Unix jest często rozpowszechniane w plikach o nazwie zakończonej .tar.gz lub .tgz, zwanych tarbalami (ang. tarball). Są to pakiety utworzone programem tar, które potem zostały skompresowane gzipem. Mogą zostać zdekompresowane poleceniem gzip -d plik.tar.gz lub rozpakowane przez tar xzf file.tar.gz. W postaci tgz są rozpowszechniane m.in. pakiety instalacyjne dystrybucji Slackware oraz polskiego KateOS.

Gzip a inne programy kompresujące

Gzip nie powinien być mylony z Zipem, z którym nie jest zgodny. Gzip nie archiwizuje plików, a jedynie je kompresuje. W celu archiwizacji plików musi zostać użyty inny program (np. tar) i dopiero powstałe archiwum jest kompresowane gzipem.

Pod koniec lat 90. XX wieku można było zauważyć przechodzenie z gzip na bzip2, który pozwala mocniej kompresować dane w wielu przypadkach, ale jest też znacząco wolniejszy.

AdvanceCOMP implementuje algorytm deflate w sposób, który pozwala przepakować pliki .gz do rozmiaru mniejszego, niż jest to w stanie zrobić gzip. Podobnie algorytm ulepsza implementacja programu PNGOUT [2].

Przykład użycia

1. Kompresja plików tar

gzip -v plik.tar

2. Dekompresja plików tar

gzip -d plik.tar.gz

Łączenie tar i gzip

Przykład użycia

1. Kompresowanie

tar -czf plik.tar.gz paczka

2. Dekompresowanie

tar -xzf plik.tar.gz

BZIP2

bzip2 – algorytm i program komputerowy będącego jedną z jego implementacji, do bezstratnej kompresji danych. Jest on dostępny na licencji analogicznej do licencji BSD.

Bzip2 jest popularny w systemach Unix i Linux. Zwykle jest używany do kompresji archiwów tar, często używanych do rozpowszechniania oprogramowania.

Nowe wersje RPM korzystają z bzip2 (poprzednio gzip) do kompresji archiwum cpio.

Obecnie bzip2 zastępuje się przez wydajniejsze i szybsze w dekompresji algorytmy takie jak LZMA pochodzące z programu 7-Zip.

Algorytm

Program kompresuje bloki danych o rozmiarach od 100 do 900 kilobajtów, w skokach co 100k. Każdy blok jest transformowany za pomocą transformaty Burrowsa-Wheelera, następnie przekształcany przez algorytm Move To Front, a w końcu kompresowany za pomocą algorytmu Huffmana.

Bzip2 osiąga znacznie lepsze (zwykle o 10%–20%) wyniki niż algorytmy strumieniowe typu deflate.

Program potrzebuje do 8 megabajtów pamięci do kompresji i do 4 do dekompresji. Jest dostępny także wolniejszy, lecz zużywający mniej pamięci tryb dekompresji, który potrzebuje 2,5 megabajta. Dane te dotyczą bloków 900k, dla mniejszych rozmiarów bloków zużycie pamięci jest proporcjonalnie mniejsze.

Bzip2 używa własnych algorytmów sortowania bloków do transformaty Burrowsa-Wheelera, które są zazwyczaj bardziej efektywne od standardowych [3].

Przykład użycia

1. Kompresja plików tar

bzip2 -v plik.tar

2. Dekompresja plików tar

bzip2 -d plik.tar.bz2

Łączenie tar i bzip2

Przykład użycia

1. Kompresowanie

tar -cjf plik.tar.bz2 paczka

2. Dekompresowanie

tar -xjf plik.tar.bz2