Kopia katalogu domowego w Linuksie: rsync i test odtworzenia

Kopia katalogu domowego obejmuje dokumenty, zdjęcia i wiele ustawień użytkownika ukrytych w katalogach zaczynających się od kropki. Do prostego kopiowania w Linuksie można wykorzystać rsync, ale najpierw trzeba sprawdzić nośnik docelowy i poprawność ścieżki. Błąd w tym miejscu może oznaczać zapis na dysku systemowym zamiast na dysku kopii.

Poniższy przykład tworzy zwykłą kopię plików, bez automatycznego kasowania elementów celu. Nie jest obrazem całego systemu ani historią wielu wersji. Nadaje się do pierwszego, przejrzystego planu zabezpieczenia danych użytkownika.

Przygotuj zewnętrzny cel i zamknij zmieniające się programy

Podłącz nośnik, upewnij się, że jest zamontowany, i sprawdź dostępne miejsce. Nazwy w przykładzie są przykładowe: zastąp /media/jan/KOPIA rzeczywistym punktem montowania. Cel nie powinien znajdować się wewnątrz katalogu domowego, który kopiujesz.

mountpoint "/media/jan/KOPIA"

Kontynuuj dopiero, gdy wskazana ścieżka rzeczywiście jest punktem montowania właściwego nośnika. Jeśli otrzymasz informację, że nim nie jest, wyjaśnij przyczynę. Sam istniejący katalog o nazwie KOPIA nie dowodzi obecności zewnętrznego dysku.

Na nośniku przygotuj osobny katalog, np. home-jan. Sprawdź prawa zapisu i to, że ścieżka nie prowadzi do cudzych danych. Zamknij aplikacje zmieniające profil, bazy i projekty. Kopiowanie otwartej bazy nie gwarantuje spójności; dla takich danych użyj eksportu lub procedury aplikacji.

Do zachowania linuksowych uprawnień i dowiązań potrzebny jest odpowiedni system plików oraz dostęp użytkownika. FAT lub exFAT nie odwzorowują całej takiej struktury. Jeśli kopiujesz na nośnik o innych możliwościach, ustal ograniczenia albo wybierz format archiwum przewidziany dla potrzebnych metadanych, zamiast ignorować błędy.

Najpierw obejrzyj plan bez kopiowania

Jeżeli rsync nie jest dostępny, zainstaluj go przez menedżer pakietów swojej dystrybucji. Po przygotowaniu celu uruchom próbę:

rsync -a --dry-run --itemize-changes --exclude='/.cache/' "${HOME}/" "/media/jan/KOPIA/home-jan/"

Zmienna HOME wskazuje katalog bieżącego użytkownika. Końcowy ukośnik źródła oznacza kopiowanie jego zawartości do wskazanego celu. Dzięki temu powstaje np. home-jan/Dokumenty, a nie dodatkowy poziom katalogu. Ukryte pliki również są uwzględniane; nie używamy globu *, który mógłby je ominąć.

Wykluczenie dotyczy głównego katalogu .cache. To przykład pominięcia danych podręcznych, a nie automatyczne rozpoznanie wszystkiego, co niepotrzebne. Jeśli aplikacja przechowuje tam dane wymagające zachowania, usuń lub dostosuj wykluczenie. Przejrzyj plan i komunikaty błędów.

Opcja -a zachowuje podstawowe właściwości w trybie archiwalnym, lecz nie obejmuje wszystkich rodzajów metadanych. ACL, rozszerzone atrybuty i twarde dowiązania wymagają dodatkowych opcji oraz odpowiedniej obsługi źródła i celu. Przy kopii zwykłych danych własnego konta zacznij od zakresu, który rozumiesz.

Wykonaj kopiowanie i sprawdź zakończenie

Po potwierdzeniu kierunku usuń z polecenia opcję próby:

rsync -a --itemize-changes --exclude='/.cache/' "${HOME}/" "/media/jan/KOPIA/home-jan/"

Nie dodajemy --delete. Plik usunięty u źródła może pozostać na celu, ale plik zmieniony może zostać zastąpiony nowszą wersją. To nadal nie zapewnia historii odzyskiwania wcześniejszej zawartości. Wersjonowaną kopię trzeba zaplanować osobno.

Sprawdź komunikaty i kod zakończenia bezpośrednio po poleceniu, np. przez echo $?. Wynik niezerowy wymaga wyjaśnienia. Plik znikający podczas pracy programu, brak praw i brak miejsca mają różne przyczyny. Nie uznawaj częściowego transferu za kompletną kopię tylko dlatego, że większość katalogów widać na dysku.

Katalog domowy może zawierać prywatne klucze, dane sesji i konfigurację kont. Chroń kopię przed obcym odczytem, a w razie potrzeby użyj odpowiedniego szyfrowania nośnika. Nie rozwiązuj błędu dostępu przez nadanie wszystkim pełnych praw.

Uważaj na dowiązania i dane poza katalogiem domowym

Jeśli w katalogu domowym masz dowiązanie do projektu na innym dysku, tryb archiwalny zachowuje samo dowiązanie. Nie oznacza to automatycznego skopiowania plików wskazywanych poza źródłem. Po utracie drugiego dysku zapisany odnośnik może prowadzić donikąd. Włącz taki projekt do osobnego, świadomie wybranego zakresu kopii.

Podobnie katalog zsynchronizowany z chmurą może zawierać pliki dostępne dopiero po pobraniu. Ustal, czy ważne dokumenty są rzeczywiście zapisane lokalnie. Nie wyciągaj wniosku o kompletności backupu wyłącznie z widocznych nazw w menedżerze plików. Pliki przechowywane tylko zdalnie wymagają sprawdzenia zgodnego ze sposobem działania klienta chmury.

Przed następną kopią ponownie sprawdź montowanie. Ten sam katalog docelowy może istnieć, choć dysk nie jest już podłączony. W prostym ręcznym wariancie ta krótka kontrola powinna poprzedzać każde uruchomienie rsync, a w automatyzacji być warunkiem rozpoczęcia zapisu.

Odtwórz próbkę do osobnego miejsca

Wybierz kilka dokumentów i jeden element konfiguracji. Skopiuj je z kopii do osobnego katalogu testowego, bez nadpisywania używanego profilu. Otwórz dokumenty w aplikacjach. Dla ważnego pliku możesz porównać sumy:

sha256sum "${HOME}/Dokumenty/wazny.pdf"
sha256sum "/media/jan/KOPIA/home-jan/Dokumenty/wazny.pdf"

Zastąp ścieżki istniejącym plikiem. Zgodne sumy potwierdzają jednakową zawartość tych konkretnych egzemplarzy. Nie dowodzą jeszcze kompletności całego katalogu ani poprawności otwartej bazy danych.

Po kopii bezpiecznie odmontuj i odłącz nośnik, jeśli ma być kopią offline. Zanotuj datę, zakres i wynik sprawdzenia. Więcej zasad kontroli opisuje test odtwarzania kopii. Przy częstszych zmianach uzupełnij ten prosty wariant o harmonogram i wersje; dostępny stale cel podlega ryzyku opisanemu w poradniku o kopii odpornej na ransomware.