Linux Ubuntu - archiwizowanie i kompresowanie
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.
Ć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
- Utwórz archiwum a1.tar z katalogu s1
- Podejrzyj zawartość archiwum a1.tar
- Utwórz archiwum a2.tar z katalogu s2 z podglądem zawartości
- Dodaj plik l3.txt do a1.tar (następnie pokaż dodatkowo zawartość a1.tar).
- Usuń plik l2.txt z a2.tar (następnie pokaż dodatkowo zawartość a2.tar).
- Dodaj do a1.tar zawartość a2.tar (następnie pokaż dodatkowo zawartość a1.tar).
- Skopiuj a1.tar pod nazwą a3.tar (zwykłe cp). Wyodrębnij zawartość a1.tar do katalogu s4 (pokaż zawartość s4).
- Z a3.tar stwórz plik skompresowany a3.tar.gz
- Z katalogu s3 stwórz skompresowany plik s3.zip
- Z katalogu s3 stwórz plik skompresowany s3.tar.bz2