Automatyczne kopie zapasowe w Linuksie

Czy uważasz, że kopie zapasowe są zbyt kłopotliwe w przygotowaniu, za drogie, zbyt pracochłonne? Linux umożliwia wykonywanie kopii zapasowych poszczególnych komputerów lub całych wydziałów przedsiębiorstwa, według określonego harmonogramu i bez drogiego oprogramowania do wykonywania kopii zapasowych - łącznie z komputerami z systemem Windows.

Czy uważasz, że kopie zapasowe są zbyt kłopotliwe w przygotowaniu, za drogie, zbyt pracochłonne? Linux umożliwia wykonywanie kopii zapasowych poszczególnych komputerów lub całych wydziałów przedsiębiorstwa, według określonego harmonogramu i bez drogiego oprogramowania do wykonywania kopii zapasowych - łącznie z komputerami z systemem Windows.

Utrata danych to koszmar każdego administratora. To nie tylko powód do zdenerwowania, ale również wymierne straty finansowe. Dlatego ze wszech miar warto opracować strategię wykonywania kopii zapasowych.

Linux dostarcza wszystkich potrzebnych narzędzi. rsync, tar, ssh, find, cat i bash są obecne niemal w każdej dystrybucji. Rozpatrywane pojedynczo, aplikacje mogą wydawać się niezbyt odpowiednie do profesjonalnych zastosowań, jednak zastosowane łącznie i we właściwy sposób, tworzą dobre i ekonomiczne rozwiązanie.

Szyfrowanie jest dzisiaj ważniejsze, niż kiedykolwiek - szczególnie wtedy, gdy operujesz poufnymi danymi. Liczba łatwych w obsłudze programów do wykradania danych ciągle rośnie. Oczywiście, nie można upatrywać w każdym użytkowniku potencjalnego hakera, jednak ostrożność nigdy nie zaszkodzi.

Uwierzytelnianie przez ssh

Chyba żaden administrator nie chciałby o trzeciej nad ranem wprowadzać hasła, by uruchomić wykonywanie kopii zapasowej. Dlatego zastosujemy uwierzytelnianie za pomocą klucza publicznego. Opcję tę udostępnia nam znajdujący się w standardowej instalacji pakiet openssh. Aby cały opis był bardziej przejrzysty, załóżmy następujący scenariusz:

linux_a: to komputer, który ma być zabezpieczony. Ponieważ w normalnych warunkach tylko jeden użytkownik ma pełne prawa dostępu, skrypt kopii zapasowej musi wykonać użytkownik root. Adres IP komputera linux_a to 192.168.1.200.

linux_b: ze względów bezpieczeństwa zdalne logowanie użytkownika root nie jest dozwolone. Wszystkie kopie zapasowe przyjmuje użytkownik backup. Adres IP to 192.168.1.100.

Użytkownik root komputera linux_a powinien zalogować się z szyfrowaniem na komputerze linux_b, ale tylko z uprawnieniami użytkownika backup. Cały proces nie może wymagać podawania hasła, gdyż wówczas nie dałby się zautomatyzować.

Tworzenie pary kluczy

Pierwszy krok to utworzenie pary kluczy ssh dla użytkownika root komputera linux_a. Załatwi to następujące polecenie:

ssh-keygen -t rsa

Kolejne trzy wiersze zatwierdź klawiszem Enter. Ważne jest, by nie wprowadzać żadnego hasła. Gdybyś wprowadził tu hasło, logowanie na komputerze linux_b jako użytkownik backup wymagałoby hasła, a przecież właśnie tego chcemy uniknąć. W folderze /root/.ssh znajduje się w tej chwili plik id_rsa.pub. Zawiera on między innymi klucz użytkownika root.

Zakładanie konta użytkownika

Klucz i zamek - rodzi się para klucz publiczny - prywatny

Klucz i zamek - rodzi się para klucz publiczny - prywatny

Kolejny krok prowadzi nas do komputera linux_b. Na początek, jako użytkownik root, załóż konto użytkownika backup poleceniem:

useradd -m backup

Ten użytkownik nie będzie posiadał hasła. Dzięki temu nikt nie będzie mógł zalogować się jako użytkownik backup ani lokalnie, ani zdalnie. Logowanie ma być możliwe tylko z wykorzystaniem klucza publicznego. Poleceniem:

su - backup

wracamy do właśnie utworzonego użytkownika. Jeżeli folder .ssh nie istnieje, utwórz go i przejdź do niego:

mkdir .ssh

cd .ssh

Aby demon ssh wiedział, kto może zalogować się jako użytkownik backup, poinformujemy go o tym w pliku authorized_keys.

touch authorized_keys

zakłada najpierw pusty plik. Do tego pliku skopiujemy teraz zawartość pliku /root/.ssh/id_rsa.pub.

Uwaga: nawet jeżeli na to nie wygląda, jest to jeden wiersz bez znaków łamania wiersza. Aby nie popełnić błędu podczas przepisywania, najlepiej skopiuj plik /id-_rsa.pub na linux_b i dodaj klucz poleceniem cat:

cat id_rsa.pub >> /home /backup/.ssh/authorized_keys

Testowanie konfiguracji

Teraz powinno być możliwe logowanie z linux_a na linux_b. Wypróbuj to jako root na linux_a.

ssh backup@192.168.1.100

Tylko przy pierwszym logowaniu linux_a pyta, czy linux_b ma być wpisany na listę znanych systemów. Gdy tylko to potwierdzisz, wpisując yes, konfiguracja będzie zakończona. Sprawdź poprawność konfiguracji poleceniami:

exit (prowadzi z powrotem do linux_a)

ssh backup@192.168.1.100

Ta funkcjonalność jest podstawą dalszych prac.

Kompletna kopia zapasowa za pomocą rsync

Najważniejsze przełączniki rsync

Najważniejsze przełączniki rsync

Jeżeli rsync nie jest jeszcze zainstalowany w systemie, musisz to teraz nadrobić. Program ten to niewątpliwie jedna z najbardziej wydajnych i najszybszych metod wykonywania kopii zapasowych. Program w zasadzie jedynie kopiuje dane ze źródła do celu, jednak wykorzystuje do tego specjalny algorytm, który wykonuje porównania przyrostowe. W przypadku zmodyfikowanego pliku program replikuje tylko zmiany, a nie cały plik. Szczególnie w przypadku dużych plików z niewielkimi zmianami daje to ogromny wzrost wydajności. rsync umożliwia również utrzymywanie pełnej zgodności źródła i celu. Podstawowe wywołanie to:

rsync [opcje] źródło cel

Celem może być na przykład zdalny komputer, lokalny twardy dysk lub wymienna pamięć USB. Program oferuje wiele opcji. W tabeli przedstawiamy przegląd najważniejszych przełączników. Więcej informacji można znaleźć w pliku pomocy man:

man rsync

Przykładowy skrypt

W naszym przykładowym scenariuszu skrypt mógłby mieć następującą postać (patrz listing 1).

Listing 1

####### Konfiguracja #######

# Komputer – nośnik kopii zapasowej

REMOTE=“192.168.1.100“

# Użytkownik logowany bez hasła via ssh

REMOTEUSER=“backup“

# Folder, w którym zostanie umieszczona kopia

zapasowa

TARGET=“/home/backup/“

# W wierszu tematu nie może być spacji!

SUBJECT=“Backup_nieudany!“

# Adres e-mail do wysyłania powiadomienia w razie

niepowodzenia

MAILTO=“./backup.mail“

# Teksty powiadomienia o błędzie

TERROR=“./terror.txt“

# Pliki, z których będzie wykonana kopia zapasowa

INCLUDE=“./backup.include“

# Pliki, z których nie będzie wykonana kopia zapasowa

EXCLUDE=“./backup.exclude“

RSYNC=/usr/bin/rsync

RSYNC_OPTIONS=“-rlpvu --delete-after --ignore-errors

-e ssh“

CAT=/bin/cat

MAIL=/usr/bin/mail

CHECK_REMOTE=`ping -c1 $REMOTE | grep packet | awk

‘{print $4}’`

# zwraca 1 (online) lub 0 (offline)

SOURCE=“/“

#########################

if [ $CHECK_REMOTE == 1 ]; then

$RSYNC $RSYNC_OPTIONS $SOURCE $REMOTEUSER\@REMOTE:$TARGET --files-from=$INCLUDE --excludefrom=$

EXCLUDE

else

$CAT $MAILTO | while read line

do

$MAIL $line -s $SUBJECT < $ERROR

done

fi


Zobacz również