rsync przez VPN: która strona jest źródłem prawdy?
Tunel daje ci ścieżkę, a nie politykę scalania. Wybierz kopię autorytatywną, obejrzyj kopię jednokierunkową w trybie podglądu, a potem osobno zdecyduj, czy usunięcia podróżują.
Dwa serwery, jeden VPN, jeden katalog, który musi istnieć w obu miejscach, i polecenie, które łatwo uruchomić, a trudno cofnąć. Zanim je wpiszesz, zdecyduj, która kopia jest autorytatywna, bo każde kolejne pytanie o rsync zależy od tej odpowiedzi. Replika jednokierunkowa, współdzielony folder roboczy i archiwum z wersjonowaniem wymagają różnych zasad dla zmian i usunięć. Tunel dostarcza ścieżkę i nie ma zdania na żaden z tych tematów.
Zdecyduj, która kopia wygrywa, zanim wpiszesz polecenie
Zapisz kierunek w jednym zdaniu, wraz z nazwą hosta i ścieżką po każdej stronie, i uzyskaj akceptację osoby, do której należą dane. W tym opisie źródłem jest /srv/publish/, a miejscem docelowym konto na fileserver.example, które może zapisywać tylko w /srv/mirror/.
Potwierdź fakty dotyczące transportu przed kopiowaniem: klucz hosta SSH jest zweryfikowany, konto docelowe może zapisywać w obszarze repliki i nigdzie indziej, a oba hosty mają zgodne wersje rsync. Te warunki wstępne powstrzymują drobny błąd planowania przed zmianą w incydent uprawnień. Mówią też, które konto pojawi się w dziennikach miejsca docelowego, gdy coś pójdzie nie tak.
Podejrzyj kopię i przeczytaj listę szczegółową
Uruchom najpierw kopię z flagą podglądu i zachowaj wynik. Szczegółowe zmiany mówią, co stałoby się z każdą ścieżką, co jest znacznie bardziej przydatne niż podsumowanie po fakcie. Zachowaj wynik w rejestrze zmian, aby następne uruchomienie miało się z czym porównać.
rsync -rt --dry-run --itemize-changes -e ssh -- /srv/publish/ [email protected]:/srv/mirror/
Końcowy ukośnik ma znaczenie. Po stronie źródła oznacza zawartość tego katalogu, a jego pominięcie dodaje dodatkowy poziom katalogu nazwany od źródła. Podręcznik rsync opisuje obie formy wraz z flagami zachowywania metadanych, a zestaw opcji, którego potrzebujesz, zależy od danych, a nie od przyzwyczajenia.
Czytaj każdy wiersz w odniesieniu do zamierzonego miejsca docelowego. Usunięcie flagi podglądu wykonuje kopiowanie i może nadpisać pliki, a bez opcji usuwania dodatkowe pliki już obecne w miejscu docelowym po prostu zostają tam, gdzie są. To bezpieczne ustawienie domyślne tylko wtedy, gdy naprawdę zdecydowałeś, że pozostawione nieaktualne pliki są dopuszczalne. Jeśli odpowiedź brzmi nie, to decyzję o usuwaniu z poniższej części trzeba podjąć, a nie dosypywać dodatkową flagę do tego polecenia.
Potem zdecyduj, czy usunięcia podróżują
Uczynienie z miejsca docelowego lustra to druga decyzja, a nie dopracowanie pierwszej. Podejrzyj ją osobno, z dodaną flagą usuwania i niczym innym niezmienionym, aby różnica na liście należała w całości do tej decyzji.
rsync -rt --delete --dry-run --itemize-changes -e ssh -- /srv/publish/ [email protected]:/srv/mirror/
Usunięcia eliminują zbędne pliki po stronie odbierającej w obrębie synchronizowanego zakresu, dlatego błędna ścieżka źródłowa, niezamontowany katalog lub filtr wykluczający więcej niż zamierzono mogą sprawić, że destrukcyjne uruchomienie wygląda jak czyste lustro. Lista podglądu to jedyne miejsce, w którym ta różnica staje się widoczna, zanim stanie się kosztowna. Trzymaj niezależną kopię odzyskiwania tam, gdzie dane to uzasadniają, i pamiętaj, że lustro wiernie odtwarza przypadkowe usunięcie zamiast zachowywać historię.
Podgląd też niczego nie blokuje. Ludzie edytują pliki między próbą a rzeczywistym uruchomieniem, a systemy plików mają własne zdanie, więc uruchomienie, które zatwierdzasz, i to, które się wykonuje, nie są tą samą operacją, chyba że oba drzewa są spokojne.
Dwa zadania jednokierunkowe nie tworzą synchronizacji dwukierunkowej
Uruchamianie tego samego polecenia w obu kierunkach to najczęstszy sposób utraty danych w tym scenariuszu. Każdy kierunek traktuje drugą stronę jako miejsce docelowe i ochoczo nadpisuje nowszą treść, a usunięcia odbijają się w kolejności, w jakiej zadziała harmonogram.
Jeśli użytkownicy muszą edytować obie kopie, to inna decyzja produktowa: obsługa konfliktów, śledzenie usunięć i narzędzie zaprojektowane dla tego modelu. Przybliżanie tego kolejnością harmonogramu to sposób, w jaki współdzielony folder zdobywa dwie wersje każdego dokumentu, których nikt nie potrafi uzgodnić. Zdecyduj to wprost, zamiast przybliżać dwoma wpisami cron i nadzieją.
Automatyzuj dopiero po zapisaniu polityki
Zaplanowane zadanie powinno nieść kierunek, ścieżki, politykę metadanych i zatwierdzoną decyzję o usuwaniu. Umieść te pięć faktów w samym pliku zadania, a nie na stronie wiki, której następny administrator może nigdy nie przeczytać. Zapobiegaj nakładającym się uruchomieniom, bo dwie kopie piszące to samo drzewo naraz tworzą stan, którego żadna z nich nie zamierzała.
Gdy źródłem jest aktywna baza danych lub inny wieloplikowy zbiór danych, najpierw wykonaj eksport spójny z aplikacją albo skoordynowany snapshot. Rekursywne przejście po plikach nie jest transakcją, a kopia zmieniającego się zbioru danych nie jest spójna.
Zapisuj ukończenia i błędy oraz sprawdzaj zbiór danych w miejscu docelowym, a nie tylko kod wyjścia. Przywrócenie VPN po awarii przywraca łączność; nie mówi nic o tym, czy ostatnia kopia się zakończyła ani czy sprzeczne zmiany kiedykolwiek rozwiązano.