Główna » jak » Jak korzystać z rsync do tworzenia kopii zapasowych danych w systemie Linux

    Jak korzystać z rsync do tworzenia kopii zapasowych danych w systemie Linux

    rsync to protokół zbudowany dla systemów typu Unix, który zapewnia niewiarygodną wszechstronność do tworzenia kopii zapasowych i synchronizowania danych. Może być używany lokalnie do tworzenia kopii zapasowych plików w różnych katalogach lub może być skonfigurowany do synchronizacji w Internecie z innymi hostami.

    Może być używany w systemach Windows, ale jest dostępny tylko przez różne porty (takie jak Cygwin), więc w tym poradniku będziemy mówić o ustawieniu go na Linuksie. Najpierw musimy zainstalować / zaktualizować klienta rsync. W dystrybucjach Red Hat polecenie brzmi "yum install rsync", a na Debianie "sudo apt-get install rsync".


    Polecenie w Red Hat / CentOS, po zalogowaniu się jako root (zauważ, że niektóre ostatnie dystrybucje Red Hata obsługują metodę sudo).


    Polecenie na Debianie / Ubuntu.

    Używanie rsync do lokalnych kopii zapasowych

    W pierwszej części tego samouczka wykonamy kopię zapasową plików z katalogu 1 do katalogu2. Oba te katalogi znajdują się na tym samym dysku twardym, ale działałoby to dokładnie tak samo, gdyby katalogi istniały na dwóch różnych dyskach. Istnieje kilka różnych sposobów podejścia do tego, w zależności od rodzaju kopii zapasowych, które chcesz skonfigurować. W większości przypadków wystarczy poniższy wiersz kodu:

    $ rsync -av --delete / Directory1 / / Directory2 /

    Powyższy kod zsynchronizuje zawartość Directory1 do Directory2 i nie spowoduje różnic między nimi. Jeśli rsync wykryje, że katalog2 ma plik, którego nie zawiera katalog1, usunie go. Jeśli rsync znajdzie plik, który został zmieniony, utworzony lub usunięty w katalogu Directory1, odzwierciedli te same zmiany w katalogu Directory2.

    Istnieje wiele różnych przełączników, których można użyć do rsync, aby spersonalizować go zgodnie ze swoimi potrzebami. Oto, co powyższy kod mówi rsync do zrobienia z kopiami zapasowymi:

    1. -a = rekurencyjne (recurse into katalogi), linki (kopiuj dowiązania symboliczne jako dowiązania symboliczne), perms (zachowaj uprawnienia), czasy (zachowaj czasy modyfikacji), grupę (zachowaj grupę), właściciela (zachowaj właściciela), zachowaj pliki urządzeń i zachować specjalne pliki.
    2. -v = verbose. Powód, dla którego uważam, że verbose jest ważny, pozwala dokładnie zobaczyć, co robi kopia zapasowa rsync. Pomyśl o tym: Co się stanie, jeśli dysk twardy ulegnie awarii i rozpocznie usuwanie plików bez Twojej wiedzy, wtedy uruchomisz skrypt rsync i przeniesiesz te zmiany do kopii zapasowych, usuwając wszystkie instancje pliku, którego nie chcesz uzyskać pozbyć się?
    3. -delete = To polecenie rsync do usunięcia plików znajdujących się w katalogu 2, które nie znajdują się w katalogu 1. Jeśli zdecydujesz się użyć tej opcji, polecam również użycie opcji szczegółowych, z powodów wymienionych powyżej.

    Używając powyższego skryptu, oto dane wyjściowe generowane przy użyciu rsync do tworzenia kopii zapasowej Directory1 do Directory2. Zwróć uwagę, że bez przełącznika "verbose" nie otrzymasz tak szczegółowych informacji.

    Powyższy zrzut ekranu informuje nas, że pliki File1.txt i File2.jpg zostały wykryte jako nowe lub zmienione w inny sposób niż kopie istniejące w katalogu Directory2, więc zostały utworzone ich kopie zapasowe. Wskazówka Nooba: Zwróć uwagę na końcowe ukośniki na końcu katalogów w moim poleceniu rsync - te są niezbędne, pamiętaj, aby je zapamiętać.

    Pod koniec tego samouczka przekażemy kilka przydatnych przełączników, ale pamiętajmy, że aby zobaczyć pełną listę, można wpisać "man rsync" i wyświetlić pełną listę przełączników do wykorzystania.

    O tym dotyczy to aż do lokalnych kopii zapasowych. Jak widać, rsync jest bardzo łatwy w użyciu. Jest nieco bardziej skomplikowany, gdy używa się go do synchronizowania danych z zewnętrznym hostem przez Internet, ale pokażemy ci prosty, szybki i bezpieczny sposób, aby to zrobić.

    Używanie rsync do zewnętrznych kopii zapasowych

    rsync można skonfigurować na kilka różnych sposobów dla zewnętrznych kopii zapasowych, ale przejdziemy przez najbardziej praktyczną (także najłatwiejszą i najbezpieczniejszą) metodę tunelowania rsync przez SSH. Większość serwerów, a nawet wielu klientów, ma już SSH i może być używana do tworzenia kopii zapasowych rsync. Pokażemy Ci proces, w którym jeden komputer z systemem Linux będzie tworzył kopie zapasowe w sieci lokalnej. Proces byłby dokładnie taki sam, gdyby jeden host był gdzieś w Internecie, zauważ tylko, że port 22 (lub jakikolwiek port, w którym skonfigurowałeś SSH), musiałby zostać przekazany na jakimkolwiek sprzęcie sieciowym po stronie serwera.

    Na serwerze (komputerze, który będzie otrzymywać kopie zapasowe), upewnij się, że są zainstalowane SSH i rsync.

    # yum -y zainstaluj ssh rsync

    # sudo apt-get install ssh rsync

    Poza instalowaniem SSH i rsync na serwerze, wszystko, co naprawdę trzeba zrobić, to skonfigurować repozytoria na serwerze, na którym chcesz wykonać kopię zapasową plików, i upewnić się, że SSH jest zablokowany. Upewnij się, że użytkownik, którego planujesz używać, ma skomplikowane hasło i dobrym pomysłem może być przełączenie portu, na którym nasłuchuje SSH (domyślnie 22).

    Uruchomimy to samo polecenie, które zrobiliśmy dla użycia rsync na komputerze lokalnym, ale uwzględnimy niezbędne dodatki do tunelowania rsync przez SSH do serwera w mojej sieci lokalnej. Dla użytkownika "geek" łączącego się z "192.168.235.137" i używającego tych samych przełączników co powyżej (-av -delete) uruchomimy:

    $ rsync -av -delete -e ssh / Directory1 / [email protected]: / Directory2 /

    Jeśli korzystasz z nasłuchiwania przez SSH w innym porcie niż 22, musisz podać numer portu, na przykład w tym przykładzie, w którym korzystam z portu 12345:

    $ rsync -av -delete -e 'ssh -p 12345' / Directory1 / [email protected]: / Directory2 /

    Jak widać na powyższym zrzucie ekranu, dane wyjściowe podane podczas tworzenia kopii zapasowej w sieci są prawie takie same, jak podczas tworzenia kopii zapasowej lokalnie, jedyną rzeczą, która się zmienia jest polecenie, którego używasz. Zauważ także, że monituje o hasło. Ma to na celu uwierzytelnienie za pomocą SSH. Możesz ustawić klucze RSA, aby pominąć ten proces, co również uprości automatyzację rsync.

    Automatyzacja kopii zapasowych rsync

    Cron może być używany w systemie Linux do automatyzacji wykonywania poleceń, takich jak rsync. Korzystając z Crona, możemy kazać naszemu systemowi Linux uruchamiać co wieczór kopie zapasowe lub często je uruchamiać.

    Aby edytować plik tabeli crona dla użytkownika, na którym jesteś zalogowany jako, uruchom:

    $ crontab -e

    Aby edytować ten plik, musisz znać vi. Wpisz "I" dla insert, a następnie rozpocznij edycję pliku tabeli cron.

    Cron używa następującej składni: minuta godziny, godzina dnia, dzień miesiąca, miesiąc roku, dzień tygodnia, polecenie.

    Na początku może to być trochę mylące, więc pozwól mi podać przykład. Następujące polecenie uruchomi komendę rsync co noc o 22:00:

    0 22 * ​​* * rsync -av --delete / Katalog1 / / Katalog2 /

    Pierwsze "0" określa minutę godziny, a "22" określa godzinę 22. Ponieważ chcemy, aby to polecenie było uruchamiane codziennie, pozostałe pola zostawiamy gwiazdkami, a następnie wklejamy polecenie rsync.

    Po zakończeniu konfiguracji Crona, naciśnij escape, a następnie wpisz ": wq" (bez cudzysłowów) i naciśnij enter. Spowoduje to zapisanie zmian w vi.

    Cron może uzyskać znacznie więcej szczegółów niż to, ale kontynuowanie tego byłoby poza zakresem tego samouczka. Większość ludzi po prostu chce mieć proste cotygodniowe lub codzienne kopie zapasowe, a to, co pokazaliśmy, można łatwo osiągnąć. Więcej informacji o Cronie znajduje się na stronach man.

    Inne przydatne funkcje

    Kolejną użyteczną rzeczą, którą możesz zrobić, to umieścić swoje kopie zapasowe w pliku zip. Musisz określić, gdzie chcesz umieścić plik zip, a następnie zsynchronizować ten katalog z katalogiem kopii zapasowych. Na przykład:

    $ zip /ZippedFiles/archive.zip / Directory1 / & rsync -av --delete / ZippedFiles / / Directory2 /

    Powyższe polecenie pobiera pliki z katalogu Katalog1, umieszcza je w pliku /ZippedFiles/archive.zip, a następnie przesyła je do katalogu Directory2. Początkowo może się wydawać, że ta metoda okaże się nieskuteczna w przypadku dużych kopii zapasowych, biorąc pod uwagę, że plik zip zmieni się za każdym razem, gdy zostanie wprowadzona jakakolwiek zmiana w pliku. Jednak rsync przesyła tylko zmienione dane, więc jeśli twój plik zip ma 10 GB, a następnie dodasz plik tekstowy do katalogu 1, rsync będzie wiedział, że to wszystko, co dodałeś (mimo że jest w zipie) i przesyła tylko kilka kilobajtów zmienionych danych.

    Istnieje kilka sposobów szyfrowania kopii zapasowych rsync. Najprostszą metodą jest zainstalowanie szyfrowania na samym dysku twardym (tym, do którego są tworzone kopie zapasowe twoich plików). Innym sposobem jest zaszyfrowanie plików przed wysłaniem ich na serwer zdalny (lub inny dysk twardy, niezależnie od tego, z jakiego powodu tworzona jest kopia zapasowa). Omówimy te metody w kolejnych artykułach.

    Niezależnie od opcji i funkcji, które wybierzesz, rsync okazuje się być jednym z najbardziej wydajnych i wszechstronnych narzędzi do tworzenia kopii zapasowych, a nawet prosty skrypt rsync może uchronić Cię przed utratą danych.