If-Koubou

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

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

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 do różnych katalogów lub może być skonfigurowany do synchronizowania przez Internet 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 jest to "sudo apt-get install rsync".


Polecenie na 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. Możemy podejść do kilku różnych sposobów, 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żesz 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 katalogu 1 do katalogu2. 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 komendzie rsync - te są niezbędne, pamiętaj o ich zapamiętaniu.

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, których należy użyć.

O tym dotyczy to aż do lokalnych kopii zapasowych. Jak można się domyślić, 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 wiele 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 twoich 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ż, że port 22 (lub jakikolwiek port, w którym skonfigurowany jest SSH), musiałby zostać przekazany dalej na dowolny sprzęt sieciowy 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żywania 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ąc 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ż również, ż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. Używając 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

Będziesz musiał znać vi, aby edytować ten plik. 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 10 PM. Ponieważ chcemy, aby to polecenie działało codziennie, pozostałe pola zostawiamy gwiazdkami, a następnie wklejamy komendę 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 1, umieszcza je w pliku /ZippedFiles/archive.zip, a następnie synchronizuje ten katalog z katalogiem2. Początkowo możesz pomyśleć, ż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 dodajesz plik tekstowy do katalogu 1, rsync będzie wiedział, że to wszystko co dodałeś (nawet jeśli 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 zdalny serwer (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.