Linux Ubuntu - archiwizowanie i kompresowanie

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


tar

Polecenie tar służy do tworzenie archiwum, czyli umieszczania plików w jednym pliku zbiorczym. Standardowo plik .tar nie jest skompresowany. Oczywiście można uzyskać kompresję wybierając odpowiednie opcje, np. -z czy -j.

Podstawowe opcje

  • -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łady

Przykłady:

tar -cf archiwum_dane.tar dane stworzenie archiwum archiwum_dane.tar z katalogu dane

Poniżej dołączono opcje v, która wypisuje nazwy archiwizowanych plików.

uczen@linux:~$ tar -cvf archiwum2_dane.tar dane
dane/
dane/aaa.txt
dane/bbb.txt

tar -rf archiwum_dane.tar klasa.txt dodanie do archiwum_dane.tar pliku klasa.txt

Możemy sprawdzić zawartość archiwum bez wyodrębniania plików używając opcji t.

uczen@linux:~$ tar -tf archiwum_dane.tar
dane/
dane/aaa.txt
dane/bbb.txt
klasa.txt
uczen@linux:~$ tar -tvf archiwum_dane.tar
drwxrwxr-x uczen/uczen       0 2016-03-10 10:12 dane/
-rw-rw-r-- uczen/uczen      11 2016-03-10 10:11 dane/aaa.txt
-rw-rw-r-- uczen/uczen 4355436 2016-03-10 10:13 dane/bbb.txt
-rw-rw-r-- uczen/uczen      80 2016-03-09 08:40 klasa.txt

tar –xf archiwum_dane.tar wyodrębnienie plików z archiwum_dane.tar do katalogu dane

tar -czf archiwum_dane.tar.gz dane stworzenie skompresowanego archiwum archiwum_dane.tar.gz z katalogu dane

Sprawdźmy jak mocno skompresowało archiwum. Jak widać zamiast 4,3 MB są 682 KB.

uczen@linux:~$ ls -l a*
-rw-rw-r-- 1 uczen uczen 4362240 mar 10 10:17 archiwum2_dane.tar
-rw-rw-r-- 1 uczen uczen 4362240 mar 10 10:28 archiwum_dane.tar
-rw-rw-r-- 1 uczen uczen  682661 mar 10 10:32 archiwum_dane.tar.gz

Rozpakujemy archiwum_dane.tar.gz do innego katalogu. Domyślnie użyty byłby katalog, z którego robiliśmy archiwum, czyli dane.

uczen@linux:~$ mkdir dane2
uczen@linux:~$ tar -xf archiwum_dane.tar.gz -C dane2

tar -cjf archiwum_dane.tar.bz2 dane stworzenie skompresowanego archiwum archiwum_dane.tar.bz2 z katalogu dane

tar -xf archiwum_dane.tar.bz2 rozpakowanie skompresowanego archiwum_dane.tar.bz2

gzip i gunzip

gzip

Gzip służy do kompresowanie plików. Powyżej pokazano efekt wywoływania gzip z polecenia tar. W wyniku użycia gzip powstają pliki z rozrzerzeniem .gz.

Przykłady:

Poniżej przykład skopresowania pliku tekstowego gzip bbb.txt.

uczen@linux:~/dane$ ls -l
razem 4260
-rw-rw-r-- 1 uczen uczen      11 mar 10 10:11 aaa.txt
-rw-rw-r-- 1 uczen uczen 4355436 mar 10 10:13 bbb.txt
uczen@linux:~/dane$ gzip bbb.txt
uczen@linux:~/dane$ ls -l
razem 672
-rw-rw-r-- 1 uczen uczen     11 mar 10 10:11 aaa.txt
-rw-rw-r-- 1 uczen uczen 682471 mar 10 10:13 bbb.txt.gz

Poniżej skompresujemy archiwum tar

gzip archiwum_dane.tar

Poleceniem gzip z opcją -d możemy dekompresować gzip -d bbb.txt.gz

uczen@linux:~/dane$ ls
aaa.txt  bbb.txt.gz  ccc.txt.gz
uczen@linux:~/dane$ gzip -d bbb.txt.gz
uczen@linux:~/dane$ ls -l
razem 4928
-rw-rw-r-- 1 uczen uczen      11 mar 10 10:11 aaa.txt
-rw-rw-r-- 1 uczen uczen 4355436 mar 10 10:13 bbb.txt
-rw-rw-r-- 1 uczen uczen  682471 mar 10 11:52 ccc.txt.gz

gunzip

Gunzip służy do dekompresowania plików z rozszerzeniem .gz, przykładowo gunzip ccc.txt.gz

uczen@linux:~/dane$ ls
aaa.txt  bbb.txt  ccc.txt.gz
uczen@linux:~/dane$ gunzip ccc.txt.gz
uczen@linux:~/dane$ ls
aaa.txt  bbb.txt  ccc.txt

bzip2 i bunzip2

bzip2

Bzip2 służy do kompresowanie plików. W wyniku użycia bzip2 powstają pliki z rozrzerzeniem .bz2.

Przykłady:

Poniżej przykład skopresowania pliku tekstowego bzip2 bbb.txt.

uczen@linux:~/dane$ ls -l
razem 8516
-rw-rw-r-- 1 uczen uczen      11 mar 10 10:11 aaa.txt
-rw-rw-r-- 1 uczen uczen 4355436 mar 10 10:13 bbb.txt
-rw-rw-r-- 1 uczen uczen 4355436 mar 10 11:52 ccc.txt
uczen@linux:~/dane$ bzip2 bbb.txt
uczen@linux:~/dane$ ls -l
razem 4828
-rw-rw-r-- 1 uczen uczen      11 mar 10 10:11 aaa.txt
-rw-rw-r-- 1 uczen uczen  578239 mar 10 10:13 bbb.txt.bz2
-rw-rw-r-- 1 uczen uczen 4355436 mar 10 11:52 ccc.txt

Poleceniem bzip2 z opcją -d możemy dekompresować bzip2 -d bbb.txt.bz2

uczen@linux:~/dane$ bzip2 -d bbb.txt.bz2
uczen@linux:~/dane$ ls
aaa.txt  bbb.txt  ccc.txt

bunzip2

Poleceniem bunzip2 możemy dekompresować pliki .bz2, przykładowo bunzip2 ccc.txt.bz2

uczen@linux:~/dane$ ls
aaa.txt  bbb.txt  ccc.txt.bz2
uczen@linux:~/dane$ bunzip2 ccc.txt.bz2
uczen@linux:~/dane$ ls
aaa.txt  bbb.txt  ccc.txt

zip i unzip

zip

Poniżej przykłady kompresowania programem zip. Skompresowano pliki bbb.txt oraz ccc.txt w kopia.zip

uczen@linux:~/dane$ ls
aaa.txt  bbb.txt  ccc.txt
uczen@linux:~/dane$ zip kopia.zip bbb.txt ccc.txt
  adding: bbb.txt (deflated 84%)
  adding: ccc.txt (deflated 84%)
uczen@linux:~/dane$ ls -l
razem 9852
-rw-rw-r-- 1 uczen uczen      11 mar 10 10:11 aaa.txt
-rw-rw-r-- 1 uczen uczen 4355436 mar 10 10:13 bbb.txt
-rw-rw-r-- 1 uczen uczen 4355436 mar 10 11:52 ccc.txt
-rw-rw-r-- 1 uczen uczen 1365196 mar 10 12:27 kopia.zip

Przykład skompresowania katalogu z całą zawartością:

uczen@linux:~$ zip -r kopia_dane.zip dane
  adding: dane/ (stored 0%)
  adding: dane/aaa.txt (stored 0%)
  adding: dane/kopia.zip (stored 0%)
  adding: dane/bbb.txt (deflated 84%)
  adding: dane/ccc.txt (deflated 84%)
uczen@linux:~$ 


unzip

Poniżej zdekompresowano kopia.zip. Zauważcie, że w katalogu są już te pliki, stąd pytanie o zamianę. Jeśli chcecie podać inny katalog użyjcie opcji -d.

uczen@linux:~/dane$ unzip kopia.zip
Archive:  kopia.zip
replace bbb.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
  inflating: bbb.txt                 
  inflating: ccc.txt                 
uczen@linux:~/dane$ 

xz

Polecenia służy do kompresowania i dekompresowania. Posiada rozszerzenie .xz

Przykład użycia xz bbb.txt w celu kompresji:

uczen@linux:~/dane$ ls -l
razem 8516
-rw-rw-r-- 1 uczen uczen      11 mar 10 10:11 aaa.txt
-rw-rw-r-- 1 uczen uczen 4355436 mar 10 10:13 bbb.txt
-rw-rw-r-- 1 uczen uczen 4355436 mar 10 11:52 ccc.txt
uczen@linux:~/dane$ xz bbb.txt
uczen@linux:~/dane$ ls -l
razem 4688
-rw-rw-r-- 1 uczen uczen      11 mar 10 10:11 aaa.txt
-rw-rw-r-- 1 uczen uczen  434288 mar 10 10:13 bbb.txt.xz
-rw-rw-r-- 1 uczen uczen 4355436 mar 10 11:52 ccc.txt

A teraz dekompresja xz -d bbb.txt.xz:

uczen@linux:~/dane$ xz -d bbb.txt.xz
uczen@linux:~/dane$ ls -l
razem 8516
-rw-rw-r-- 1 uczen uczen      11 mar 10 10:11 aaa.txt
-rw-rw-r-- 1 uczen uczen 4355436 mar 10 10:13 bbb.txt
-rw-rw-r-- 1 uczen uczen 4355436 mar 10 11:52 ccc.txt

Przykład kompresowania wszystkich plików w katalogu xz -z *

uczen@linux:~/dane$ ls
aaa.txt  bbb.txt  ccc.txt
uczen@linux:~/dane$ xz -z *
uczen@linux:~/dane$ ls
aaa.txt.xz  bbb.txt.xz  ccc.txt.xz

Archiwizowanie i kompresowanie w środowisku graficznym

Możemy archiwizować i kompresować, jak również dokonywać operacji odwrotnych z poziomu nautilusa. Jest to banalnie proste, dlatego wklejam same zrzuty.

Archiwizacjaubuntu1.png

Archiwizacjaubuntu2.png

Archiwizacjaubuntu3.png

Archiwizacjaubuntu4.png

Ćwiczenia

Jesteś w katalogu domowym. Wkopiuj poniższy kod do terminala. Utworzy katalogi z plikami do ćwiczeń.

mkdir s1 && ls -l -R /boot > s1/l1.txt && cp s1/l1.txt s1/l2.txt && cp -r s1 s2 && cp -r s1 s3 && touch l3.txt

  1. Utwórz archiwum a1.tar z katalogu s1
  2. Podejrzyj zawartość archiwum a1.tar
  3. Utwórz archiwum a2.tar z katalogu s2 z podglądem zawartości
  4. Dodaj plik l3.txt do a1.tar (następnie pokaż dodatkowo zawartość a1.tar).
  5. Usuń plik l2.txt z a2.tar (następnie pokaż dodatkowo zawartość a2.tar).
  6. Dodaj do a1.tar zawartość a2.tar (następnie pokaż dodatkowo zawartość a1.tar).
  7. Skopiuj a1.tar pod nazwą a3.tar (zwykłe cp). Wyodrębnij zawartość a1.tar do katalogu s4 (pokaż zawartość s4).
  8. Z a3.tar stwórz plik skompresowany a3.tar.gz
  9. Z katalogu s3 stwórz skompresowany plik s3.zip
  10. Z katalogu s3 stwórz plik skompresowany s3.tar.bz2