Kopia niejedno ma imię

Środowisko Linux oferuje paletę rozwiązań do zabezpieczania danych. W pierwszej części przedstawiamy te dostępne bezpłatnie.

Środowisko Linux oferuje paletę rozwiązań do zabezpieczania danych. W pierwszej części przedstawiamy te dostępne bezpłatnie.

Stabilność i niezawodność to, obok wydajności, największe zalety Linuxa. To one właśnie zjednały temu systemowi rzesze zwolenników wśród użytkowników biznesowych. Środowiska linuxowe działające bez jakiejkolwiek przerwy przez rok, dwa lata, a nawet dłużej nie są niczym wyjątkowym. Statystycznie niska awaryjność systemu nie zwalania jednak administratora z podstawowego obowiązku - zabezpieczenia danych.

Do wykonywania kopii bezpieczeństwa na platformie Linux jest dostępna cała paleta narzędzi - zarówno open source, jak i profesjonalnych pakietów komercyjnych. W niniejszej, pierwszej części zostaną omówione narzędzia darmowe. W drugiej, którą opublikujemy w kolejnym wydaniu Computerworld, będą omówione rozwiązania dostępne za opłatą.

Plik po pliku

W systemie Linux kopię bezpieczeństwa danych można wykonać na kilka sposobów. Najłatwiej zrobić to (1) kopiując poszczególne pliki lub obiekty partycji lub (2) wykonując kopię całej partycji po jej uprzednim odmontowaniu w systemie. Linux pozwala wykonywać też (3) kopie plików otwartych z atrybutem "odczyt/zapis", np. przy użyciu odpowiednich agentów. Możliwe jest wreszcie (4) eksportowanie danych do pliku. Kopia bezpieczeństwa może zostać zapisana praktycznie na dowolnym nośniku: dysku, taśmie, płycie optycznej, a nawet karcie pamięci Flash.

Wykonywanie kopii plikowej jest najprostsze, a przy tym bardzo użyteczne - bardzo łatwo można odtworzyć pojedynczy plik lub katalog oraz oczywiście wszystkie naraz. Z tego właśnie powodu jest to metoda powszechnie stosowana przez administratorów do zabezpieczania serwerów plików. Tym bardziej że narzędzia do tego służące (tar, cpio) są bardzo proste w użyciu, niezawodne i wydajne.

Systemem wykonywania kopii bezpieczeństwa Bacula

Systemem wykonywania kopii bezpieczeństwa Bacula

Backup plikowy w przypadku baz danych nie jest tak trywialny. Ponieważ istnieje tu wymaganie spójności, proste "zrzucenie" plików na taśmę podczas normalnej pracy bazy nie daje takiej pewności. W praktyce stosuje się następujące rozwiązania:

  1. na czas wykonywania kopii zapasowej baza jest wyłączana; spójność jest zachowana;
  2. eksport danych z bazy do pliku, a następnie jego backup; to rozwiązanie jest sensowne zwłaszcza przy małych bazach;
  3. przełączenie bazy w tryb back-upowy (o ile baza oferuje takie możliwości);
  4. użycie komercyjnego agenta backupowego, który potrafi wykonać pełny backup bazy bez jej wyłączania.
MySQL - najpopularniejsza baza danych dla systemu Linux wykorzystuje prosty mechanizm backupowy oparty na eksporcie wszystkich danych do pliku. Do tego celu służy polecenie mysqldump. Ponadto na czas wykonywania kopii bazę można wyłączyć i wykonać "zimną kopię". W praktyce, jeśli baza nie jest aktualnie używana, można ją nawet skopiować "w locie" - bez wyłączania. Bardzo dobrym skryptem backupowym dla MySQL jest AutoMySQLBackup (http://sourceforge.net/projects/automysqlbackup/ ).

Baza Oracle dla systemu Linux oferuje znacznie więcej możliwości. Oprócz zimnej kopii i eksportu do plików tekstowych (kopia logiczna) możliwe jest wykonanie spójnej kopii w locie za pomocą dedykowanego agenta backupowego. Istnieje też możliwość przełączania kolejno poszczególnych przestrzeni tabel w tryb backupowy. Oprócz danych w bazie Oracle należy wykonać kopię plików kontrolnych i archiwalnych. Niezależnie od tych metod pracującą bazę Oracle można zabezpieczyć, tworząc jej kopię lustrzaną na dyskach oraz posługując się bazą rezerwową na bieżąco zasilaną logami bazy produkcyjnej.

Prosto na taśmę

Najprostsze metody prawie zawsze sprawdzają się najlepiej. Prostym, ale jednocześnie skutecznym rozwiązaniem jest backup plików wprost na taśmę za pomocą aplikacji tar albo cpio. Po podłączeniu napędu i załadowaniu modułu do kontrolera SCSI, zazwyczaj jest on widoczny w systemie Linux jako urządzenie /dev/st0. Najprostszy backup, jaki można sobie wyobrazić, to polecenie: cd /; tar cvf /dev/st0 etc var bin usr sbin home.

Tar ma wiele zalet. Przede wszystkim jest powszechnie znany i używany we wszystkich środowiskach unixowych. Program ten jest bardzo wydajny - radzi sobie nawet z plikami wielkości rzędu kilkuset gigabajtów, a ponadto potrafi kompresować dane w locie i sprawdzać poprawność utworzonego archiwum. Kopiowane pliki tar może umieszczać na dowolnym nośniku lub też zapisywać je do pliku. Program jest bardzo prosty w obsłudze.

Nie można nie zauważyć, że tar ma pewne mankamenty. Jeśli kopia nie zmieści się na jednym nośniku, mogą się pojawić kłopoty z obsługą dużych autoloaderów oraz kontrolą segmentacji archiwum. Takie kopie wymagają specjalnych zabiegów (użycie opcji multi-volume wersji GNU tar, przełączenie autoloadera na następną taśmę za pomocą skryptu). Poza tym wykonywanie kopii kilku tysięcy wybranych plików z różnych katalogów, przy jednoczesnym pominięciu innych plików mieszczących się w tych katalogach, nie jest proste ani automatyczne. Tar najlepiej działa przy kopiowaniu całej zawartości katalogów. Istnieją pewne ograniczenia przy wykonywaniu kopii różnicowej (należy używać pliku z listą obiektów, nie można użyć opcji zachowania czasu ostatniego dostępu -preserve-atime).

Niektórzy użytkownicy Linuxa, zwykle ci wywodzący się ze środowiska starszych serwerów unixowych, wolą raczej korzystać z programu cpio. Zasada działania jest podobna jak w przypadku tar, niemniej cpio ma trochę więcej opcji, zaś domyślnie listę plików do skopiowania pobiera ze standardowego wejścia.

Cpio można wykorzystać do wykonywania kopii różnicowej, używając potokowo programu find z opcją -atime, lecz wymaga to pewnego doświadczenia w tworzeniu skryptu kopiującego dane. Program GNU cpio czyta format programu GNU tar - trzeba tylko użyć odpowiedniej opcji.

Oprócz programów tar i cpio bywają również stosowane para programów dump/restore oraz pakiet bru. Dump kopiuje dane z systemu plików na taśmę, restore - odwrotnie. Nadaje się szczególnie do pełnych kopii, podobnie zresztą jak bru.

Co dla kogo?

Jeśli backup mieści się na jednej taśmie (już po kompresji) i napęd taśmowy jest bezpośrednio podłączony do zabezpieczonego serwera, a przy tym nie występuje konieczność pracy ciągłej zabezpieczanej bazy/aplikacji, kopię danych można wykonać za pomocą narzędzi tar albo cpio wzbogaconych w porządny skrypt backupowy.

Jeśli zabezpieczeniu ma podlegać kilka niewielkich serwerów, dla każdego z nich warto zakupić oddzielny, dodatkowy dysk, na którym okresowo powinna lądować kopia ważniejszych katalogów bądź nawet całego środowiska. Idealnym narzędziem do wykonania takiej kopii będzie dd, przy czym będzie to mogła być jedynie kopia zimna. W razie awarii można szybko przełożyć dysk i uruchomić system, odtworzyć dane z ostatniej kopii z taśmy i w ten sposób szybko odzyskać komplet danych.

Niewielkie serwery WWW można zabezpieczyć, nagrywając system wraz z danymi na kilka bootowalnych płyt CD/DVD, co pozwoli łatwo odtworzyć system na dowolnym sprzęcie. Codzienny backup można uzyskać za pomocą wykonania archiwum tar i pobrania go przy użyciu programu wget albo scp.

Jeżeli zabezpieczeniu podlegają dokumenty nieulegające częstym zmianom, można rozważyć zastosowanie synchronizacji między zabezpieczanym serwerem a serwerem backupowym za pomocą programu rsync. Taki backup nie przerywa pracy serwera, a ponadto przywrócenie serwera do pracy po awarii trwa bardzo krótko.

Jeśli mają być zabezpieczane dane nie jednego czy kilku, ale kilkunastu i więcej serwerów, najlepiej jest wybierać spośród trzech pakietów: Amanda, Afbackup i Bacula.

Backup baz danych pracujących w trybie ciągłym najlepiej wykonywać przez kopiowanie danych z serwera zapasowego, na którym cyklicznie odkładają się logi z serwera produkcyjnego.