Backup za pomocą rsync
rsync jest protokołem stosowanym w systemach UNIX/Linux który umożliwia nieocenione możliwości dla backupu i synchronizacji danych. Z jego zastosowaniem można kopiować pliki lokalnie a w połączeniu z SSH zdalnie, kopiując pliki do zdalnego hosta.
W pierwszej kolejności będzie konieczność instalacji (lub aktualizacji) klienta rsync. Na systemach Redhata konieczne będzie wydanie komendy „yum install rsync” a na Debianowych dystrybucjach wydanie polecenia: “sudo apt-get install rsync.”
rsync a backup lokalny
W tej części artykułu będziemy kopiować pliki z Katalogu1 do Katalogu2. Oba katalogi są na tym samym HDD, mechanizm ten powinien działać na różnych dyskach zainstalowanych w systemie.
Przyjrzyjmy się poleceniu:
$ rsync ‑av –delete /Katalog1/ /Katalog2/
Polecenie te będzie synchronizowało zawartość Katalogu1 do Katalogu2. Jeżeli rsync znajdzie plik w Katalogu1 który został zmieniony, stworzony, lub usunięty, to będzie wymuszał zmiany w Katalogu2
Istnieje kilka przełączników (switchy) tego polecenia.
1.-a = recursive (rekurencja katalogów), links (kopiowanie zawartości linków i symlinków), perms (zachowywanie uprawnień), times (zachowuje czas modyfikacji), group (zachowuje przynależność do grup), owner (zachowuje właściciela),
2. ‑v = verbose. Przełacznik umożliwia wyświetlenie informacji na temat każdego kopiowanego pliku.
3. –delete = rsync będzie usuwał pliki w Katalogu2 które nie są w Katalogu1.
rsync backup na zdalne serwery
rsync może być skonfigurowany w różny sposób w celu realizacji backupu zdalnego. Praktycznym sposobem (łatwym i bezpiecznym) jest metoda tunelingu rsync przez SSH.
Większość serwerów i klientów posiada zainstalowany SSH, trzeba zadbać jedynie o to aby był zdalny dostęp do takiego serwera z zewnątrz. W tym celu na routerze musi być otwarty port 22 (SSH) TCP do serwera zdalnego.
Instalujemy więc SSH i rsync‘a
# yum ‑y install ssh rsync
# sudo apt-get install ssh rsync
Wydajemy podobną komendę rsync jak to było w przypadku backupu lokalnego, ale uzupełniamy o tuneling SSH. Dla użytkownika “ringo” z połączeniem do serwera 195.205.159.5” i zastosowaniem przełączników wymienionych wyżej, polecenie będzie miało postać:
$ rsync ‑av –delete ‑e ssh /Katalog1/ ringo@195.205.159.5:/Katalog2/
Jeżeli SSH słucha na porcie 12345 określamy dodatkowo port:
If you have SSH listening on some port other than 22, you would need to specify the port number, such as in this example where I use port 12345:
$ rsync ‑av –delete ‑e 'ssh ‑p 12345' /Katalog1/ ringo@195.205.159.5:/Katalog2/
$ rsync ‑av –delete ‑e 'ssh ‑p 12345' /Directory1/ geek@192.168.235.137:/Directory2/
Automatyzacja backupu rsync
W celu automatyzacji polecenia rsync można wykorzystać cron systemu linux.
W celu edycji tabeli cron dla użytkownika zalogowanego w systemie wydajemy polecenie:
$ crontab –e
Następujące polecenie będzie wywoływało rsync’a każdego dnia o godzinie 22:00
0 22 * * * rsync ‑av –delete /Directory1/ /Directory2/
Inne użyteczne opcje
Jedną z nich jest umieszczenie backupu w pliku zip. Poniższe polecenie przedstawia zastosowanie tej opcji.
$ zip /katalog/archive.zip /Katalog1/ && rsync ‑av –delete /katalog/ /Katalog2/