E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\45.DOC 687
Rozdzia³ 45. ¨ Kopie zapasowe 687
Tim Parker
W tym rozdziale:
u Po co tworzyć kopie zapasowe
u Inwentaryzowanie zapisanych danych
u Używanie programu tar do tworzenia kopii zapasowych
Trzy podstawowe zasady administratora systemu to: 1) należy wykonywać kopie zapasowe, 2) należy wykonywać kopie zapasowe i 3) należy wykonywać kopie zapasowe. Liczba osób, które utraciły wartościowe dane, nie wspominając o czasie, które spędziły na mozolnym odtwarzaniu plików konfiguracyjnych, jest ogromna. Nawet jeśli nie posiadasz napędu taśmowego czy innego odpowiednio pojemnego nośnika, powinieneś przyzwyczajać się do wykonywania kopii zapasowych swoich danych. Jak to robić – dowiesz się w tym rozdziale.
Jeżeli z Twojego systemu korzysta wielu użytkowników, jesteś podłączony do sieci, działa poczta itd., to chyba nie masz wątpliwości, że kopie zapasowe powinny być wykonywane nawet codziennie. Jeżeli jednak system służy głównie do zabawy, sprawa ta nie jest aż tak poważna – w razie problemów tracisz „tylko” wszystkie pliki konfiguracyjne. Jednak kopie zapasowe należy wykonywać i w tym przypadku, co najwyżej z mniejszą częstotliwością.
Kopia zapasowa może zawierać dane z całego systemu plików lub też jego fragmentu i używana jest po to, aby w razie potrzeby można było odzyskać potrzebne pliki. W większości systemów do przechowywania danych używa się napędów taśmowych, ale nadają się do tego również wyjmowalne dyski twarde czy nawet dyskietki.
Źródeł zagrożeń w nowoczesnym systemie komputerowym jest bardzo wiele, od awarii dysku twardego, przez przerwy w zasilaniu do zwykłych pomyłek. Kopia zapasowa okazuje się wówczas wręcz wybawieniem. Choć często trudno jest zmusić się do jej utworzenia, zwykle czas stracony na to zwraca się z nawiązką w przypadku problemów. Można również uprościć sobie pracę używając programu cron.
Jednym z zagrożeń w systemie Linux jest sama natura systemu: ponieważ jest to system wielozadaniowy i wielodostępny, równocześnie może być otwartych wiele plików. Przez cały czas odbywa się wymiana danych pomiędzy pamięcią i dyskiem twardym (nawet wtedy, gdy nie jest zalogowany żaden użytkownik i nie działa żaden program uruchomiony przez użytkownika).
Wiele informacji o systemie plików jest również przechowywanych w pamięci. Choć są one często zapisywane na dysku, to jednak nie następuje to natychmiast, w efekcie czego przerwanie tego procesu może prowadzić do utraty zawartości plików systemowych. Pliki na dysku mogą pozostać w stanie przejściowym, nie odpowiadającym rzeczywistemu stanowi systemu plików.
Choć uszkodzenie systemu plików może być spowodowane przez najróżniejsze czynniki – z których nie wszystkie są zależne od administratora systemu – zadaniem administratora jest nie dopuścić do utraty ważnych danych niezależnie od okoliczności i w razie problemów odtworzyć cały system plików w możliwie krótkim czasie.
Ważną kwestią jest również zdecydowanie, gdzie będą przechowywane nośniki zawierające kopie zapasowe systemu. Większość administratorów (głównie używających systemu linuxowego w domu) wykonuje kopie systemu na takich nośnikach, jak taśmy czy dyskietki, i przechowuje je w tym samym miejscu, w którym znajduje się system. Należy upewnić się, że nie występują tam silne pola magnetyczne (występujące w pobliżu różnych urządzeń, na przykład głośników, monitorów, modemów czy telewizorów), nie jest za ciepło itd. Warto jednak rozważyć przechowywanie nośników gdzieś zupełnie indziej – takie rozwiązanie pozwala im przetrwać również poważniejsze (ale i o wiele rzadsze) katastrofy, takie jak na przykład pożar, który może zniszczyć zarówno system, jak i kopie danych.
Nośnikiem używanym najczęściej do tworzenia kopii zapasowych jest taśma. Jest ona popularna ze względu na stosunkowo niską cenę, niewygórowane wymagania co do warunków przechowywania i rozsądną prędkość transmisji danych. Proces zapisu i odczytu danych jest pewny, a taśmy są przenośne pomiędzy systemami. Niestety, aby używać taśm, trzeba posiadać napęd taśmowy. Jeśli nie dysponujesz napędem taśmowym, musisz rozważyć inne rozwiązania.
Jedną z alternatyw są dyski wyjmowalne różnych typów, takie jak Iomega Bernoulli czy ZIP. Dyski z danymi, zwykle zapakowane w specjalne pojemniki, mogą być wyjmowane i przechowywane z dala od systemu. Niektóre z tych dysków, podobnie jak taśmy, pozwalają na zapis cykliczny.
Inna możliwość to po prostu użycie dodatkowego dysku twardego – ceny tych urządzeń stale spadają. Można więc do Twojego komputera (lub dowolnego innego komputera w sieci) podłączyć dysk przeznaczony wyłącznie do przechowywania kopii zapasowych i zapisywać na nim pełną kopię systemu. Nagrywarki dysków CD-ROM i WORM również dobrze nadają się do tworzenia kopii zapasowych.
Dyskietki to ostatnia deska ratunku w większych systemach. Nie są jednak złym rozwiązaniem do przechowywania niewielkich plików. Choć pojawiło się kilka napędów o większej gęstości zapisu, brak sterowników dla systemu Linux nie zachęca do ich użycia.
Jednym z najważniejszych aspektów tworzenia kopii zapasowych jest regularność. Jest to szczególnie ważne w systemach, z których korzysta wielu użytkowników, i w których zawartość systemu plików zmienia się bardzo intensywnie. Jeśli tylko Ty używasz systemu, możesz tworzyć kopie wtedy, kiedy uznasz to za stosowne.
Dla większości systemów wykorzystywanych przez kilku użytkowników, stale komunikujących się z Internetem i dokonujących rutynowych operacji w systemie plików, konieczne jest codzienne tworzenie kopii zapasowych. Niekoniecznie pełnych – wystarczy, że zapiszesz tylko te pliki, które uległy zmianie od utworzenia ostatniej kopii (jest to tzw. system przyrostowy, ang. incremental backup).
Większość administratorów wykonuje kopie zapasowe w nocy lub wcześnie rano, ponieważ wtedy system jest stosunkowo najmniej obciążony (zarówno w sensie obciążenia procesora, jak i liczby otwartych plików). Proces ten można zautomatyzować poleceniem cron lub at (patrz rozdział 46. „cron i at”), co zwalnia operatora od konieczności jego ręcznej obsługi i umożliwia wybranie najdogodniejszej z punktu widzenia systemu pory. Po wykonaniu operacji wystarczy tylko sprawdzić, czy wszystko poszło dobrze, zanotować dane o nowej kopii i wymienić nośnik.
W systemach mało obciążonych i takich, z których korzysta jedna osoba, kopie można wykonywać w dowolnym momencie, ale nadal warto zautomatyzować ten proces, o ile system pracuje nieprzerwanie. Jeśli Twój komputer jest włączony tylko wtedy, gdy go używasz, powinieneś przyzwyczaić się do tworzenia kopii zapasowych w czasie, gdy robisz coś innego.
Byli użytkownicy systemów DOS i Windows często podchodzą do problemu tworzenia kopii zapasowych w ten sposób, że każdorazowo zapisują nowe dane na tym samym nośniku. Praktyka ta nie ma większego sensu –posiadanie jednej tylko kopii danych bardzo często okazuje się niewystarczające, nie pozwala bowiem wrócić do poprzednich wersji plików. Przypuśćmy, że usunąłeś przed tygodniem jakiś plik, zapisując go wcześniej dla bezpieczeństwa na taśmie. Teraz orientujesz się, że był to błąd, ale nie masz już żadnych szans odzyskania pliku, ponieważ na taśmie zapisane są wczorajsze dane (takie postępowanie zabezpiecza tylko przed awarią, a biorąc pod uwagę złośliwość rzeczy martwych, jeśli już zdarzy się awaria, to pewno okaże się, że taśma również uległa uszkodzeniu – przyp. tłum.).
W idealnym przypadku kopie powinny być przechowywane przez kilka dni - lub nawet tygodni - przed ponownym użyciem nośnika. Jest to szczególnie ważne w systemach wykorzystywanych przez wielu użytkowników, zdarza się bowiem, że ktoś przypomina sobie, że dwa miesiące temu usunął plik, bez którego nie może żyć – a Ty właśnie dwie minuty temu skończyłeś zapisywać na tej taśmie dzisiejszy stan systemu. Istnieją metody na zabezpieczenie się przed takimi przypadkami – omówimy je za chwilę. To, jaki system tworzenia kopii powinieneś zastosować, zależy od przeznaczenia systemu, ale generalnie powinna to być co najmniej jedna pełna kopia co tydzień, uzupełniona codziennymi kopiami przyrostowymi, przy czym kopie powinny być przechowywane na co najmniej dwa tygodnie wstecz.
Wykonanie pełnej kopii systemu sprowadza się do utworzenia obrazu całej zawartości systemu plików i wymaga nośnika o pojemności odpowiadającej wielkości tego ostatniego. W celu zmniejszenia wymaganej objętości nośnika można użyć kompresji danych, jednak możliwość ta nie zawsze jest dostępna. Inną alternatywą jest użycie kilku jednostek nośnika (taśm). Ponieważ jednak program cron nie jest w stanie zmieniać ich automatycznie, przy tworzeniu kopii w takim systemie niezbędna jest obecność administratora. Nietrudno się domyślić, że wykonanie pełnej kopii zapasowej na wielu nośnikach o małej pojemności jednostkowej (na przykład na dyskietkach) jest procesem żmudnym i długotrwałym.
Kopie przyrostowe (czasem również zwane różnicowymi, ang. differential backup) zawierają jedynie te pliki, które zmieniły się od momentu utworzenia poprzedniej kopii. Nie we wszystkich systemach pliki posiadają atrybut pozwalający to łatwo stwierdzić (atrybut taki nie występuje również w najpowszechniej używanym w Linuxie systemie plików ext2), ale wtedy z pomocą może przyjść data ostatniej modyfikacji pliku.
Utworzenie kopii przyrostowej w Linuxie nie jest rzeczą łatwą, chyba że ograniczysz się do części systemu plików, w której dokonywanych jest najwięcej modyfikacji, na przykład /home. Takie rozwiązanie to tzw. kopia częściowa (ang. partial backup). Zauważ, że w dowolnym systemie można tworzyć kopie przyrostowe za pomocą procesu działającego cały czas w tle i rejestrującego wszystkie zmiany w systemie w pliku, a następnie zapisującego pliki, które się zmieniły. Opłacalność takiego rozwiązania jest jednak dyskusyjna.
Jak często należy robić kopie zapasowe? Najprostsza reguła jest taka, że nie powinieneś dopuścić do utraty informacji. Dla wielu oznacza to kopiowanie codzienne. Załóżmy, że pracując nad dokumentem lub programem tracisz wszystkie dane wprowadzone od czasu zapisania ostatniej kopii zapasowej. Ile czasu zajmie Ci ich odtworzenie? Jeśli więcej, niż zajęłoby zrobienie kopii zapasowej, zrób kopię. W pozostałej części tego rozdziału przyjmiemy, że nośnikiem jest taśma magnetyczna, ale nasze rozważania odnoszą się również do innych mediów.
Jaki jest zatem najwydajniejszy system tworzenia kopii zapasowych, zakładając, że konieczne jest ich regularne tworzenie? Dla średniej wielkości systemów (obsługujących kilku użytkowników nie generujących nadmiernego „ruchu” w systemie plików) warto zalecić codzienne tworzenie kopii, co wymaga od 10 do 14 taśm, zależnie od tego, czy kopie będą tworzone również w weekendy.
Każdą taśmę należy opisać zgodnie z jej przeznaczeniem, np. „Dzień 1”, „Dzień 2” itd. Taśm tych używaj cyklicznie, dzięki czemu będziesz mógł zawsze wrócić do stanu sprzed dwóch tygodni (przy założeniu, że kopie nie są tworzone w weekendy). Jeśli posiadasz więcej taśm, możesz wydłużyć cykl tworzenia kopii. Metoda taka jest używana w wielu dużych organizacjach, ponieważ charakteryzuje się dobrym wyważeniem pomiędzy kosztami, szybkością i bezpieczeństwem oraz możliwościami odzyskania danych.
Zależnie od potrzeb można wykonywać kopie pełne lub częściowe. Dobrym rozwiązaniem jest tworzenie jednej pełnej kopii systemu po utworzeniu około pięciu kopii częściowych. Można na przykład robić pełne kopie systemu w poniedziałki, w pozostałe dni tygodnia ograniczając się do wykonywania kopii katalogu /home. Wyjątki powinieneś robić wówczas, gdy wprowadzasz jakieś zmiany do konfiguracji systemu – wtedy należy zrobić jego pełną kopię. Warto również prowadzić dokładną dokumentację tworzonych kopii zapasowych – ten temat omówimy za chwilę.
Rozszerzeniem przedstawionego wyżej harmonogramu wykonywania kopii zapasowych może być dodanie oprócz cyklu dziennego również cyklu dwutygodniowego. Posiadane nośniki należy podzielić wówczas na dwie grupy. Jeśli na przykład posiadasz czternaście taśm, możesz używać dziesięciu z nich do codziennego tworzenia kopii zapasowych, dokładnie tak samo, jak w poprzednim przykładzie. Opisz je na przykład „Dzień 1” … „Dzień 10”. Pozostałe cztery taśmy zostaną wykorzystane do utworzenia cyklu dwutygodniowego – można je opisać „Tydzień 1” … „Tydzień 4”.
Używając tak zmodyfikowanego harmonogramu wykonywania kopii zapasowych, należy wykonywać codzienne kopie tak samo, jak w poprzednim przykładzie, ale po dojściu do końca cyklu codziennego (czyli po zapisaniu kopii na taśmę z etykietą „Dzień 10”) należy wykonać kopię zapasową na kolejnym nośniku wchodzącym w skład cyklu dwutygodniowego. Pełny cykl powinien wtedy wyglądać tak: „Dzień 1” … „Dzień 10” „Tydzień 1” „Dzień 1” … „Dzień 10” „Tydzień 2” „Dzień 1” itd.
Taki harmonogram ma dość znaczną przewagę nad omówionym wcześniej codziennym cyklicznym wykonywaniem kopii zapasowych. Po zakończeniu całego cyklu, posiadasz dziesięć wykonywanych codziennie kopii, pozwalających wrócić do stanu systemu sprzed dwóch tygodni. Posiadasz również taśmy, których używałeś co dwa tygodnie, dzięki którym masz również szansę na odzyskanie pliku usuniętego osiem tygodni wcześniej. Daje to możliwość odzyskania plików, których uszkodzenie czy usunięcie nie zostało wykryte od razu. Dołączając następne taśmy można wydłużyć cykl dwutygodniowy albo dodać cykl 40-dniowy.
Wielu administratorów zaczyna swoją karierę robiąc grzecznie kopie zapasowe, ale gdy przychodzi im odzyskać jakiś konkretny plik, nie mają pojęcia, gdzie go szukać. Niektórzy radzą sobie z tym w ten sposób, że naklejają na taśmy kartki, na których zapisana jest data wykonania kopii i jej zawartość. Oznacza to jednak, że szukając konkretnego pliku musisz przerzucić cały stos taśm, co może być dość męczące, szczególnie jeśli taśm jest dużo. Z tego powodu dobrze jest przechowywać gdzieś dokładny spis tego, co na której taśmie się znajduje (odnosi się to do wszystkich kopii zapasowych, zarówno wykonywanych w systemie Linux, jak i DOS czy Windows).
Wykonanie każdej kopii zapasowej powinno wiązać się z uaktualnieniem takiego spisu. Nie musi on być szczególnie złożony ani długi. Wystarczy kilka kolumn danych w notesie czy też przechowywanych w postaci pliku tekstowego na dysku twardym (taki plik należy oczywiście regularnie drukować). Minimalny zestaw informacji, które musisz posiadać, to:
u data utworzenia kopii;
u nazwa taśmy, na której kopia się znajduje (na przykład „Dzień 1”);
u nazwa systemu plików, który został skopiowany;
u informacja o tym, czy kopia jest kopią pełną, przyrostową czy częściową, i ewentualnie nazwy katalogów, z których pochodziły archiwizowane dane.
Zapisanie tych informacji trwa tylko kilka sekund, a może zaoszczędzić naprawdę sporo czasu. W większych systemach należy również zanotować:
u kto wykonał kopię;
u czy kopia była wykonana automatycznie, czy ręcznie;
u miejsce, w którym przechowywana jest taśma.
Dzięki zapisywaniu dat można z łatwością przywrócić określoną wersję pliku – jeśli na przykład użytkownik wie, że usunął plik tydzień temu, na podstawie daty możesz ustalić, na której z taśm znajduje się ostatnia wersja tego pliku.
Zapisane informacje o kopiach zapasowych powinny być dla wygody przechowywane w pobliżu systemu, ale niektórzy administratorzy wolą, by znajdowały się one tam, gdzie przechowywane są nośniki. Czasem również – na wypadek katastrofy – administratorzy przechowują kopię danych o taśmach gdzieś indziej.
Do tworzenia kopii zapasowych zwykle używa się programu tar (ang. tape archiver). Potrafi on utworzyć pojedynczy, duży plik, zawierający dane z wszystkich archiwizowanych plików, wraz z danymi o ich położeniu, prawach dostępu itd. (podobnie jak robi to program PKZIP w systemie DOS). Potrafi obsłużyć tylko ten typ archiwów, który sam tworzy.
Używanie tego polecenia jest dość uciążliwe ze względu na dużą liczbę opcji, ale na szczęście w codziennej pracy trzeba używać tylko kilku ich kombinacji. Ogólnie rzecz biorąc, składnia polecenia tar ma postać:
tar czynność opcje pliki
Argument pliki określa nazwy plików lub katalogów, które należy zarchiwizować lub odtworzyć. Zwykle jest to cały podsystem plików (jak np. /home) lub też pojedynczy plik (np. /home/reksio/wazny_plik).
Pole czynność określa działanie programu tar i może przyjmować jedną z następujących wartości:
c utworzenie nowego archiwum,
r dołączenie informacji do istniejącego archiwum,
t wyświetlenie listy plików zapisanych w archiwum,
u dodanie plików do archiwum, o ile nie są już zarchiwizowane,
x przywracanie plików zapisanych w archiwum.
opcje pozwalają kontrolować w pewnym zakresie sposób postępowania z archiwum. Dostępne wartości to:
A zapobiega zapisywaniu bezwzględnych ścieżek dostępu do plików;
b pozwala podać wielkość bloku (1 – 20);
e zapobiega dzieleniu archiwów na kilka nośników;
f pozwala podać nazwę pliku lub urządzenia, na którym zostanie zapisane archiwum;
F pozwala podać nazwę pliku zawierającego inne opcje;
k pozwala podać wielkość archiwum (w kilobajtach);
l wyświetla komunikaty o błędach w razie znalezienia „wiszących” dowiązań (nie prowadzących do żadnych istniejących plików ani katalogów);
m nie przywraca czasu modyfikacji;
n oznacza, że archiwum nie zapisane jest na taśmie;
p przywraca pliki wraz z informacjami o prawach dostępu;
v wyświetla komunikaty o aktualnie przetwarzanych plikach;
w wymaga potwierdzenia przed podjęciem akcji.
...
Wolf-1