Linux · archiwizacja

Archiwizacja w Linuksie — ćwiczenia z tar i kompresją

tar z opcjami c, x, t, z, f i -C oraz diff -r do porównania kopii. Trzy zadania, klucz z wynikami i skrypt rozwiązania.

45 minutPoziom podstawowyPliki i rozwiązania

Materiał redakcyjny TablicaPro · liceum i technikum

$ tar -czf projekt.tar.gz projekt
$ tar -tzf projekt.tar.gz | wc -l
6
6 pozycji w archiwum.
Katalog w jednym pliku.

Kopia zapasowa katalogu to podstawowa czynność administratora, a tar jest narzędziem, które robi ją najczęściej. Łączy wiele plików w jeden archiwum, a razem z gzip zmniejsza jego rozmiar. Na lekcji uczniowie tworzą archiwum projektu, sprawdzają jego zawartość, odtwarzają je w innym miejscu i porównują z oryginałem.

Scenariusz jest przeznaczony na 45 minut dla klasy znającej podstawowe polecenia Linuksa — na przykład po lekcji o poleceniach i lekcji o find.

Przygotowanie stanowisk

Potrzebny jest terminal z powłoką bash (Ubuntu, WSL lub maszyna wirtualna). Ćwiczenia wykonuj na zwykłym koncie, bez sudo. Rozpakuj pakiet z sekcji materiałów do folderu lekcja i przejdź do niego poleceniem cd. Plik dziennik.log leży w tym folderze. Skrypt rozwiazanie.sh odtwarza całą lekcję w katalogu tymczasowym i nie zmienia Twoich plików.

Cele i plan lekcji

Po zajęciach uczeń potrafi:

  • utworzyć archiwum (tar -cf) i skompresowane archiwum (tar -czf);
  • wyświetlić zawartość archiwum bez rozpakowywania (tar -tf, tar -tzf);
  • rozpakować archiwum w wybranym katalogu (tar -xzf ... -C);
  • porównać dwa katalogi poleceniem diff -r i wyjaśnić, dlaczego archiwum nie zmienia się po zmianie oryginału.
CzasPraca na lekcji
0–5 minProblem: jak zrobić kopię katalogu jednym plikiem?
5–15 mintar i jego opcje
15–22 minKompresja, rozpakowanie, porównanie
22–37 minTrzy zadania samodzielne
37–42 minPorównanie z kluczem
42–45 minPytania kontrolne

Opcje polecenia tar

tar łączy pliki i katalogi w jeden plik archiwum. Najważniejsze opcje (można je łączyć w jednym przełączniku, np. -czf):

OpcjaZnaczenie
cutwórz archiwum
xrozpakuj archiwum
twyświetl zawartość archiwum
zużyj kompresji gzip (pliki .tar.gz lub .tgz)
f nazwanazwa pliku archiwum (musi być ostatnia w grupie opcji)
-C katalogwykonaj operację w podanym katalogu

Archiwum zawiera kopię stanu z chwili jego utworzenia — późniejsze zmiany oryginału nie wpływają na jego zawartość. Polecenie diff -r katalog1 katalog2 porównuje katalogi rekurencyjnie: nic nie wypisuje i zwraca kod 0, gdy są identyczne, a przy różnicach zwraca kod 1. Katalog ćwiczeniowy projekt tworzy skrypt rozwiazanie.sh; zawiera trzy pliki w podkatalogach dokumenty i zdjecia.

Zadania

Zadanie 1. Archiwum. Utwórz archiwum projekt.tar z katalogu projekt i wypisz (posortowaną) jego zawartość bez rozpakowywania.

Zadanie 2. Kompresja i odtworzenie. Utwórz skompresowane archiwum projekt.tar.gz, policz pozycje w jego spisie i rozpakuj je do katalogu odtworzone (-C). Porównaj odtworzony katalog z oryginałem poleceniem diff -r.

Zadanie 3. Zmiana oryginału. Dopisz linię do projekt/dokumenty/plan.txt. Sprawdź, czy katalogi nadal są identyczne, i policz w spisie archiwum pliki .txt (grep -c).

Dla chętnych: utwórz archiwum tylko z podkatalogu projekt/dokumenty i wypisz jego spis.

Rozwiązanie i wyniki

set -e
TMP=$(mktemp -d)
cd "$TMP"
mkdir -p projekt/dokumenty projekt/zdjecia
echo "plan spotkan" > projekt/dokumenty/plan.txt
echo "notatki" > projekt/dokumenty/notatki.txt
echo "obraz" > projekt/zdjecia/a.jpg

echo "--- Zadanie 1"
tar -cf projekt.tar projekt
tar -tf projekt.tar | sort

echo "--- Zadanie 2"
tar -czf projekt.tar.gz projekt
tar -tzf projekt.tar.gz | wc -l
mkdir odtworzone
tar -xzf projekt.tar.gz -C odtworzone
diff -r projekt odtworzone/projekt && echo "kopie identyczne"

echo "--- Zadanie 3"
echo "zmiana" >> projekt/dokumenty/plan.txt
diff -r projekt odtworzone/projekt > /dev/null || echo "kopie sie roznia"
tar -tzf projekt.tar.gz | grep -c txt

cd /
rm -r "$TMP"

Skrypt rozwiazanie.sh z pakietu wykonuje te polecenia w katalogu tymczasowym i wypisuje:

--- Zadanie 1
projekt/
projekt/dokumenty/
projekt/dokumenty/notatki.txt
projekt/dokumenty/plan.txt
projekt/zdjecia/
projekt/zdjecia/a.jpg
--- Zadanie 2
6
kopie identyczne
--- Zadanie 3
kopie sie roznia
2

Typowe błędy

ObjawCo sprawdzić
tar: Removing leading /Archiwizujesz ścieżkę bezwzględną; to ostrzeżenie, nie błąd — tar usuwa początkowy /, żeby rozpakowanie nie nadpisało systemu.
tar: Cowardly refusing to create an empty archiveNie podano plików do archiwizacji.
Archiwum nie zawiera najnowszych zmianZmiany wykonano po utworzeniu archiwum; zrób nowe archiwum.
Rozpakowanie zasypuje bieżący katalog plikamiRozpakuj do osobnego katalogu opcją -C.
Opcja f w złym miejscuPo f musi stać nazwa archiwum, np. tar -czf kopia.tar.gz katalog.
diff nic nie wypisujeTo znaczy, że katalogi są identyczne; użyj echo $?, aby sprawdzić kod wyjścia.

Pytania kontrolne i punktacja

  1. Co robi polecenie tar -tzf kopia.tar.gz?
  2. Po co stosujemy opcję -C?
  3. Dlaczego zmiana oryginału nie zmienia wcześniej utworzonego archiwum?

Odpowiedzi: Wyświetla spis plików w archiwum, bez rozpakowywania. Aby wykonać operację (np. rozpakowanie) w podanym katalogu. Archiwum jest kopią stanu z chwili utworzenia.

Proponowana punktacja (razem 10 punktów): zadanie 1 — tar -cf 1 pkt, tar -tf ze spisem 2 pkt; zadanie 2 — tar -czf 1 pkt, tar -xzf -C 1 pkt, diff -r 1 pkt; zadanie 3 — dopisanie i porównanie 2 pkt, spis plików .txt 1 pkt, wyjaśnienie 1 pkt. Zadanie dla chętnych nie jest wymagane do pełnej oceny.

Materiały do pobrania

Rozpakuj ZIP przed otwarciem plików. Materiały są dostępne bez logowania; publiczne rozwiązanie służy nauce i samodzielnemu sprawdzeniu, a nie poufnemu sprawdzianowi.

Co dalej?

Następny krok to zaplanowane kopie zapasowe (cron) i archiwa z datą w nazwie. Ten materiał rozwija dział o archiwizacji w kursie Linux w TablicaPro, gdzie znajdziesz prezentacje, ćwiczenia i testy do prowadzenia lekcji.

Źródła techniczne: podręcznik GNU tar. Zobacz też lekcję o Bashu.

Poprowadź kolejne lekcje Linux

Pełny kurs: prezentacje, ćwiczenia i testy do pracy z klasą.

Kup dostęp do kursu Linux →

Zobacz program kursu