PRZYGOTOWANIE
Czego potrzebujesz
- Zainstalowane GNU tar, gzip, mktemp i cmp
- Powłoka Bash z obsługą zmiennych
- Uprawnienia do zapisu we własnym katalogu domowym
KROK 01
Zbuduj mały zestaw danych
Do ćwiczenia potrzebujemy odizolowanego katalogu z przykładowymi danymi. Polecenie mktemp -d tworzy unikalny katalog tymczasowy, którego ścieżkę zapisujemy w zmiennej PRACOWNIA. Wewnątrz tworzymy dwa podkatalogi: dane (z plikami do archiwizacji) oraz odtworzone (docelowe miejsce na wypakowane archiwum).
Zmienna PRACOWNIA istnieje tylko w bieżącej sesji terminala – jeśli zamkniesz okno, ścieżka zostanie utracona. Dlatego całe ćwiczenie wykonaj w jednej sesji. Na początek umieszczamy w katalogu dane jeden plik tekstowy, który posłuży do weryfikacji poprawności archiwum.
PRACOWNIA=$(mktemp -d)
mkdir "$PRACOWNIA/dane" "$PRACOWNIA/odtworzone"
printf "Dokument testowy\n" > "$PRACOWNIA/dane/dokument.txt"Polecenia tworzą katalog tymczasowy, dwa podkatalogi oraz plik dokument.txt z treścią Dokument testowy. Zmienna PRACOWNIA przechowuje ścieżkę do katalogu tymczasowego.
KROK 02
Spakuj katalog ze ścieżkami względnymi
Opcja -c tworzy archiwum, -z włącza gzip, a -f wskazuje plik wynikowy. Parametr -C ustawia katalog, względem którego tar odczyta podaną nazwę dane. Dzięki temu w archiwum zapisujemy dane/dokument.txt, a nie ścieżkę do katalogu tymczasowego. Czytelna struktura pomaga odtworzyć pliki do wybranego miejsca i sprawdzić, gdzie się pojawią.
Archiwum zapisujemy obok katalogu dane, aby nie próbować umieścić pliku wynikowego wewnątrz niego samego. GNU tar przy typowych ustawieniach usuwa początkowy ukośnik ze ścieżek bezwzględnych, ale lepiej świadomie przygotować strukturę względną przez -C. Samo użycie ścieżek względnych nie zabezpiecza przed nadpisaniem istniejących plików w miejscu rozpakowania. Do próby wykorzystamy pusty katalog.
tar -czf "$PRACOWNIA/kopia.tar.gz" -C "$PRACOWNIA" danePlik kopia.tar.gz zostanie utworzony w katalogu PRACOWNIA. Zawiera skompresowany katalog dane wraz z plikiem dokument.txt. Ścieżki wewnątrz archiwum są względne, zaczynają się od dane/.
KROK 03
Sprawdź listę plików
Przed wypakowaniem warto sprawdzić, co znajduje się w archiwum. Opcja -t (list) wyświetla zawartość bez rozpakowywania plików. W połączeniu z -v (verbose) zobaczysz dodatkowo uprawnienia, rozmiar, właściciela i czas modyfikacji każdego pliku. Lista pozwala potwierdzić, że archiwum zawiera oczekiwane dane i nie ma w nim przypadkowych ścieżek bezwzględnych.
Lista zawartości pozwala obejrzeć nazwy przed odtworzeniem. Nie stanowi jednak kompletnej kontroli bezpieczeństwa nieznanego archiwum: oprócz nazw znaczenie mają dowiązania, typy plików i zachowanie narzędzia podczas rozpakowywania. Tutaj pracujemy na własnych danych. Obcych archiwów nie rozpakowuj z uprawnieniami administratora ani bezpośrednio do katalogu działającego systemu.
tar -tzf "$PRACOWNIA/kopia.tar.gz"Polecenie wyświetli listę plików w archiwum, na przykład dane/ i dane/dokument.txt. Jeśli użyjesz opcji -v, zobaczysz także uprawnienia, właściciela, rozmiar i datę modyfikacji.
KROK 04
Odtwórz w pustym miejscu
Do wypakowania archiwum używamy opcji -x (extract) z tymi samymi parametrami -z (dla skompresowanego archiwum) i -f (nazwa pliku). Opcja -C wskazuje katalog docelowy – dzięki temu pliki trafiają do odtworzone, a nie do bieżącego katalogu. Ponieważ archiwum zawiera ścieżki względne, plik dokument.txt pojawi się w odtworzone/dane/dokument.txt.
Po wypakowaniu porównujemy oryginalny plik z odtworzonym za pomocą cmp. Jeśli archiwum jest poprawne, cmp zakończy się kodem 0 bez żadnego komunikatu. W ten sposób potwierdzasz, że proces archiwizacji i odtwarzania działa prawidłowo.
tar -xzf "$PRACOWNIA/kopia.tar.gz" -C "$PRACOWNIA/odtworzone"
cmp "$PRACOWNIA/dane/dokument.txt" "$PRACOWNIA/odtworzone/dane/dokument.txt"Po wypakowaniu w katalogu odtworzone pojawi się podkatalog dane z plikiem dokument.txt. Polecenie cmp nie wyświetli komunikatu, jeśli pliki są identyczne – kod wyjścia 0 potwierdza poprawność.
KROK 05
Co ta kopia obejmuje, a czego nie
GNU tar zapisuje treść plików i podstawowe informacje, między innymi tryb dostępu, czas modyfikacji i właściciela. Rozpoznaje też dowiązania twarde pomiędzy archiwizowanymi plikami. Podane polecenie nie włącza zapisu ACL ani rozszerzonych atrybutów. Ich zachowanie wymaga osobnych ustawień i sprawdzenia obu systemów plików. Odtwarzanie właścicieli oraz części metadanych zależy od uprawnień użytkownika.
Archiwizacja otwartych plików bazy danych nie zastępuje spójnej kopii bazy: w trakcie odczytu jej pliki mogą się zmienić. Użyj procedury przeznaczonej dla danego silnika, zamiast zakładać, że samo tar zabezpiecza transakcje. Gzip jest kompresją, nie szyfrowaniem. Osoba mająca dostęp do tar.gz może odczytać jego zawartość; poufne kopie wymagają dodatkowej ochrony i kontroli dostępu.
KROK 06
Przechowywanie i aktualizowanie kopii
Archiwa warto przechowywać poza głównym dyskiem – na osobnym nośniku lub zdalnym serwerze. W nazwie pliku umieszczaj datę utworzenia, na przykład kopia-2026-10-06.tar.gz, co ułatwi zarządzanie wersjami. Nie twórz skryptów czyszczących bez mechanizmu retencji – automatyczne usuwanie starych archiwów powinno uwzględniać politykę przechowywania kopii.
Regularnie sprawdzaj możliwość odtworzenia do osobnego miejsca. Lista plików potwierdza nazwy, natomiast wypakowanie i porównanie testuje treść wybranych danych. W tym ćwiczeniu cmp sprawdza jeden dokument. Przy prawdziwej kopii potrzebujesz też kontroli kompletności, wymaganych uprawnień i działania odtworzonej aplikacji. Zachowaj wynik testu oraz informację, z którego archiwum odtwarzano dane.
Pytania i odpowiedzi
Czy mogę dodać pliki do istniejącego archiwum tar.gz?
Nie bezpośrednio – opcja -r (append) nie działa z kompresją (-z). Musisz najpierw rozpakować archiwum, dodać pliki i spakować ponownie. Alternatywnie możesz użyć tar bez kompresji (tylko .tar), a gzip uruchomić osobno po dodaniu plików.
Dlaczego odtworzone pliki należą do innego użytkownika?
Zwykły użytkownik nie może dowolnie przydzielać właścicieli plików. Dlatego odtworzone dokumenty zwykle należą do osoby, która wykonała rozpakowanie. W tym ćwiczeniu jest to oczekiwane. W kopii systemowej odtwarzanie UID, GID i innych atrybutów należy zaplanować oddzielnie; nie uruchamiaj rozpakowywania jako root tylko po to, aby obejść ten komunikat.
Czy samo tar.gz chroni poufne dane?
Nie. Rozszerzenie .gz informuje o kompresji, a nie o zaszyfrowaniu. Archiwum trzeba przechowywać z odpowiednimi uprawnieniami, a dla danych poufnych zastosować dodatkowe szyfrowanie i bezpiecznie zarządzać kluczem. Kopia na tym samym dysku nie chroni również przed awarią całego nośnika.