Dlaczego lustrzana kopia Rsync przenosi przypadkowe usunięcia do kopii zapasowej?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Lustro rsync kopiuje przypadkowe usunięcia, ponieważ lustro ma na celu dopasowanie miejsca docelowego do aktualnego źródła. Gdy zadanie używa --delete lub powiązaną opcją usuwania, plik brakujący w domowym NAS jest traktowany jako dodatkowy plik na miejscu kopii zapasowej i jest usuwany podczas synchronizacji. To zachowanie jest poprawne dla lustra, ale niebezpieczne jako jedyna historia odzyskiwania.

Rsync podąża za regułą lustra, a nie zachowuje każdą poprzednią wersję

Bez opcji usuwania rsync normalnie kopiuje nowe i zmienione pliki, ale pozostawia pliki występujące tylko w miejscu docelowym. Z --delete miejsce docelowe jest uzgadniane ze źródłem. Zwięzłe wyjaśnienie flagi mówi, że usunięcie pliku ze źródła usuwa go również z miejsca docelowego, dzięki czemu miejsce docelowe pozostaje prawdziwym lustrem.

Dla domowego NAS ZimaSpace oznacza to usunięte rodzinne zdjęcie, zmieniony folder mediów, usuniętą konfigurację kontenera lub tymczasowo brakujący montaż, co może zostać odzwierciedlone na USB lub zdalnym lustrze przy następnym zaplanowanym uruchomieniu.

Usuwanie zaczyna się od brakującej ścieżki źródłowej

Rsync nie wie, czy plik zniknął, ponieważ celowo go usunąłeś, aplikacja go wyczyściła, użytkownik popełnił błąd, ransomware zmienił drzewo lub zestaw źródłowy nie został zamontowany. Porównuje widoczne drzewo źródłowe z drzewem docelowym. Jeśli obiekt istnieje tylko po stronie odbiorcy i usuwanie jest włączone, staje się kandydatem do usunięcia.

Zdarzenie źródłowe Co widzi rsync Wynik lustra z włączonym usuwaniem
Użytkownik usuwa folder ze zdjęciami Folder nieobecny w źródle Folder usunięty z lustra
Aplikacja kontenera usuwa stare media Pliki nieobecne w ścieżce danych aplikacji Pliki usunięte z lustra
Pula danych NAS nie może zostać zamontowana Ścieżka źródłowa może wydawać się pusta Może zostać zaproponowany duży zestaw do usunięcia
Zmiany ścieżki współdzielonej Stare drzewo źródłowe nie jest już skanowane Stara zawartość miejsca docelowego może zostać usunięta

Czas usuwania zmienia moment usunięcia plików, a nie to, czy są usuwane

Powiązane opcje kontrolują fazę transferu. --delete-before usuwa pliki występujące tylko w miejscu docelowym przed kopiowaniem, --delete-during usuwa podczas przetwarzania katalogów, a --delete-after czeka, aż transfery się zakończą. Wpływają one na zachowanie wolnego miejsca i ryzyko błędów, ale nie zamieniają lustra w wersjonowaną kopię zapasową.

Używaj czasu usuwania celowo. Usuwanie przed transferem może zwolnić miejsce, ale wcześniej usuwa poprzedni stan lustrzany. Usuwanie po transferze zachowuje starszą zawartość docelową dłużej, ale ostateczny wynik nadal odpowiada źródłu, jeśli zadanie zostanie ukończone.

Brak montowania może wyglądać jak masowe usunięcie

Jednym z najniebezpieczniejszych przypadków na serwerze domowym jest sytuacja, gdy zaplanowana ścieżka źródłowa nadal istnieje jako pusty katalog po nieudanym montowaniu rzeczywistej puli pamięci masowej. Rsync może wtedy porównać pusty katalog źródłowy z zapełnionym miejscem docelowym. Proponowanym zabezpieczeniem jest uruchomienie suchego testu i policzenie planowanych usunięć przed pozwoleniem na rzeczywistą synchronizację.

Na domowym NAS ustaw, aby zadanie kończyło się niepowodzeniem, jeśli brakuje oczekiwanego montowania źródła, UUID systemu plików, katalogu wskaźnikowego lub minimalnej liczby plików. Nie pozwól, aby istnienie pustej ścieżki było traktowane jako zdrowe źródło.

Wstrzymaj zadanie przed próbą odzyskania usuniętego pliku

  1. Natychmiast wyłącz zaplanowane zadanie rsync.
  2. Nie uruchamiaj ponownie polecenia, aby „sprawdzić, czy samo się naprawi”.
  3. Sprawdź migawki, kosze, repozytoria kopii zapasowych z wersjonowaniem oraz drugą kopię offline.
  4. Jeśli lustro nadal zawiera plik, skopiuj go do ścieżki kwarantanny poza miejscem docelowym rsync przed kolejnym uruchomieniem.
  5. Potwierdź, czy usunięcie w źródle było zamierzone, zanim przywrócisz plik do aktywnego udziału.

Artykuł ZimaSpace o przechowywaniu rodzinnych zdjęć w wielu niezależnych kopiach jest tutaj istotny: zsynchronizowane lustro powinno być jedną warstwą, a nie jedynym miejscem, gdzie starszy plik może przetrwać.

Podgląd dokładnego zestawu usunięć

Uruchom to samo polecenie z --dry-run, szczegółowym wypisaniem zmian i raportowaniem usunięć. Sprawdź ścieżki źródłowe i docelowe, ukośniki na końcu, wykluczenia, stan montowania oraz liczbę planowanych usunięć. Niedawny artykuł o bezpieczeństwie rsync podkreśla, że lustro może odtworzyć przypadkowe usunięcie lub uszkodzenie przez ransomware i dlatego potrzebuje oddzielnej warstwy historii.

rsync -a --delete --dry-run --itemize-changes   /srv/storage/family/ /mnt/usb-mirror/family/

Traktuj nieoczekiwanie dużą liczbę usunięć jako nieudaną kontrolę wstępną. Zatrzymaj się i zweryfikuj, czy zamontowany jest właściwy zestaw danych NAS oraz czy polecenie nie jest skierowane do katalogu nadrzędnego lub niewłaściwego dysku wymiennego.

Przenieś usunięte pliki docelowe do obszaru odzyskiwania

Jeśli potrzebujesz lustra, ale także krótkiego okna odzyskiwania, połącz usuwanie z katalogiem kopii zapasowej lub warstwą migawki. Rsync może przenosić zastąpione lub usunięte pliki miejsca docelowego do katalogu odzyskiwania z datą zamiast natychmiast je niszczyć. Wskazówki społeczności dotyczące zachowywania usuniętych danych rsync zalecają przechowywanie usuniętych plików w osobnej lokalizacji z własną polityką czyszczenia.

rsync -a --delete   --backup   --backup-dir="/mnt/usb-mirror/deleted/$(date +%F)"   /srv/storage/family/ /mnt/usb-mirror/current/

Przetestuj polecenie najpierw na danych niekrytycznych. Katalog odzyskiwania musi znajdować się poza lustrzanym poddrzewem, inaczej przyszłe uruchomienie może potraktować go jako część źródła lub usunąć zgodnie z tą samą polityką.

Używaj wersjonowanych migawek, gdy ważne są stany z przeszłości

Aktualne lustro odpowiada na pytanie „jak teraz wygląda źródło?” Kopia zapasowa odpowiada na pytanie „jak wyglądało źródło przed błędem?” Jeśli potrzebujesz obu, zachowaj lustro dla szybkiego dostępu i dodaj migawki systemu plików, katalogi migawkowe z twardymi linkami, narzędzie do wersjonowanych kopii zapasowych lub drugi dysk offline.

Opis przypadkowego usunięcia przez rsync jasno pokazuje podstawową słabość: ręcznie zbudowany przepływ pracy rsync wymaga wyraźnych zabezpieczeń rotacji i usuwania. Nie polegaj na jednym zmiennym miejscu docelowym, które ma zapewniać zarówno dokładną synchronizację, jak i długoterminową historię.

FAQ

Jeśli usunę --delete, czy lustro staje się kopią zapasową?

Sama w sobie nie. Pliki istniejące tylko w miejscu docelowym pozostaną, ale nadpisane pliki mogą stracić poprzednią zawartość, a nie ma czystego punktu przywracania dla konkretnej daty. Dodaj migawki lub wersjonowane repozytorium kopii zapasowych.

Która opcja czasu usuwania jest najbezpieczniejsza?

--delete-after opóźnia usunięcia do zakończenia transferów, co pozwala dłużej zachować poprzedni stan miejsca docelowego podczas działania. Nadal usuwa pliki istniejące tylko w miejscu docelowym po zakończeniu, więc kontrole wstępne i historia wersji pozostają konieczne.

Jak zatrzymać nieoczekiwane masowe usunięcie?

Wyłącz harmonogram, uruchom próbę z wyświetleniem usunięć, zweryfikuj montowanie i ścieżkę źródła oraz ustaw próg liczby usunięć lub sprawdzenie pliku wskaźnikowego. Nie uruchamiaj ponownie polecenia na żywo, dopóki nie zrozumiesz proponowanej listy usunięć.

Ostateczne wnioski

Rsync odtwarza przypadkowe usunięcia, ponieważ opcje usuwania sprawiają, że miejsce docelowe kopii zapasowej odpowiada widocznemu źródłu NAS. Chroń przepływ pracy domowego serwera ZimaSpace, weryfikując montowania, podglądając usunięcia, kwarantannując usunięte pliki oraz zachowując wersjonowane lub offline punkty odzyskiwania. Lustro może być przydatne, ale dokładne lustro bez historii nie stanowi wystarczającej ochrony przed błędem ludzkim.

Wsparcie i wskazówki

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.