Popisuji ověřený způsob, jak využít linuxový stroj k zálohování. Třeba i k zálohování stanic s Windows.
14.2.2005 06:00 | Petr Zajíc | přečteno 21558×
Často lze slyšet tvrzení, že Linux se "na spoustu úloh hodí lépe než
Windows". A když se zeptáme na konkrétní příklady, odpověď bývá často:
"Nó, router...". Je samozřejmě pravda, že linuxový router je hezký
příklad použití stroje s tímto systémem, ale Linux se dá použít i na
mnoho jiných věcí. (Mimochodem, počítač s Windows může sloužit také jako router).
Dnes se podíváme, jak lze s úspěchem využít linuxový stroj jako
zálohovací server.
Protože popisuji skutečně fungující příklad, nejprve si dovolím
nastínit situaci. Firma provozuje malou počítačovou síť, kde běhá cca
10 PC na systémech Windows 2000 nebo Windows XP. K síti se připojuje
rovněž několik notebooků. Síť běží na TCP/IP a nemá doménu (pouze
pracovní skupinu). Uživatelé potřebují zálohovat běžné dokumenty
(například, dokumenty Wordu a Excelu), přičemž je mají "zorganizované"
halabala.
Dosud se "zálohování" provádělo tak, že se v "náhodných" intervalech
vypálil na CD obsah složky, do níž se všichni "snažili" ukládat
"dokumenty", s nimiž pracují.
Pozn.: Pokud se o podobné sítě staráte,
asi tušíte, proč je v předchozí větě tolik slov v uvozovkách.
Při zálohování jsem použil tzv. inkrementální zálohy. Přestože
většina čtenářů bude asi vědět, co tím myslím, dovolím si to trochu
vysvětlit. Při pravidelném zálohování máte v podstatě dvojí možnost,
jak postupovat. Buďto zálohujete vždy poslední verze dokumentů (a potom
je každý dokument zazálohován vždy celý), nebo zálohujete pouze změny, které dokument obsahuje od
poslední zálohy. Tomu prvnímu se říká komplexní zálohování (celkové),
tomu druhému se říká zálohování inkrementální (přírůstkové).
Na komplexní zálohování ani žádný složitý program nepotřebujete.
Stačí soubory nebo složky někam překopírovat pomocí příkazů operačního
systému. Samozřejmě že i na takové zálohování programy existují -
jejich přidaná hodnota může spočívat například v komprimaci dat, v
jejich organizaci, šifrování, rozdělování, vypalování a podobně.
Na inkrementální zálohování budete potřebovat nějaký software. Při
zálohování je totiž potřeba porovnat současný stav dokumentu a poslední
zálohou a nějak uložit ten
rozdíly nebo rozdíly. Výsledek si můžete představit například jako
výstup programu diff (většina programů na inkrementální zálohování jej
stejně nakonec nějakým způsobem používá). S inkrementálními zálohami
můžete snadno odpovědět na otázky typu: "V jakém stavu byl tento soubor
předevčírem v 6 hodin"?
Která z obou zálohovacích metod je lepší? Jak už to na tom světě
bývá, jednoznačná odpověď
neexistuje. Ale výhody a nevýhody obou jsem se pokusil shrnout v
následující tabulce:
Komplexní
zálohování |
Inkrementální
zálohování |
|
Jednoduchost |
Ano. Prostě zazálohujete obsahy
souborů k nějakému dni. |
Ne. Musíte obsahy souborů
porovnávat s předchozí zálohou. |
Prostor
na médiu |
Náročné. Pro každou verzi
souboru vyžaduje místo na médiu. |
Nenáročné. Druhá a další záloha
obyčejně zabere méně místa |
Obnova |
Jednoduché. Máte k dispozici
celý soubor. |
Složité. Musíte sestavovat z
"kousíčků" |
Manipulace |
Složité. Hledáte-li verzi ze dne
xxx, musíte projít více médií. |
Jednoduché. Zálohovací program
vám sestaví verzi zálohovaného souboru k libovolnému datu v historii
zálohování. |
Záloha
po síti |
Náročné. Přenáší se velký objem
dat. |
Nenáročné. Přenášejí se menší
objemy dat. |
Chyby |
Relativně odolné. Chyba v
souboru zničí jen ten soubor. |
Relativně citlivé. Chyba v
přírůstku může způsobit narušení historie verzí souboru. |
Protože v příkladu, který popisuji byl k dispozici nevyužitý počítač
s poměrně velkým diskem a se síťovou kartou, a protože pro zákazníka
byla možnost mít k dispozici zálohy různých verzí souborů zajímavá,
použil jsem inkrementální zálohování.
Na inktementální zálohování existuje pod Linux celá řada programů.
Já jsem použil rdiff-backup.
Je to program napsaný v Pythonu a licencovaný pod GNU/GPL. Nabízí
přesně to, co jsem potřeboval, tedy:
Pomocí tohoto programu lze poměrně snadno vytvářet zálohy souborů a
složek. Nicméně, při implementaci nějakého rozumnějšího systému asi
narazíte na nějaké drobnější potíže. Leč postupně; nejprve musíme celý
rdiff-backup nainstalovat.
Instalace vyžaduje mít na systému Python. Jak zjistíte, zda a jakou verzi pythonu v systému máte popisuje tento článek (ze série), takže budu stručný. Zadáním příkazu
python
se dozvíte, zda a jaká verze pythonu je na vašem systému k
dispozici. Pro provoz rdiff-backup potřebujete verzi Pythonu 2.2 nebo
novější.
Dále potřebuje program ke své činnosti knihovnu librsync ve verzi 0.9.6
nebo novější (nejnovější verze je 0.9.7). Tato knihovna implementuje
algoritmus rsync.
Ponz.: Pokud by vás to zajímalo,
tak rsync slouží k přenosu souborů mezi lokálním a vzdáleným systémem s
tím, že přenáší ze vzdáleného systému pouze rozdíly mezi soubory. Šetří
tak čas a přenosovou kapacitu linky. Na webu projektu je to velmi dobře
principielně popsáno.
Protože je dost dobře možné, že ji nemáte, popíšu její instalaci. Soubor stáhneme,
cd ~
mkdir librsync
cd librsync/
wget
http://puzzle.dl.sourceforge.net/sourceforge/librsync/librsync-0.9.7.tar.gz
rozbalíte
tar -xvzf
librsync-0.9.7.tar.gz
a zkompilujete
cd librsync-0.9.7
./configure
make all check
make install
Jelikož je to postup standardní, nemělo by vás v této fázi nic zvláštního překvapit. Protože ze závislostí je to již všechno, můžeme nyní stáhnout a zkompilovat samotný rdiff-backup:
cd ~
mkdir rdiff-backup
cd rdiff-backup/
wget
http://savannah.nongnu.org/download/rdiff-backup/rdiff-backup-0.12.7.tar.gz
tar -xvzf rdiff-backup-0.12.7.tar.gz
cd rdiff-backup-0.12.7
python setup.py install
Rovněž tady bychom neměli narazit na podstatnější problémy. Že je program rdiff-backup nainstalován, to můžeme zkusit zadáním příkazu
rdiff-backup
Pokud obdržite hlášku:
Error: No arguments given
See the rdiff-backup manual page for instructions
pak je všechno v pořádku a program je nainstalován správně. V
příštím článku naší minisérie si ukážeme na praktické využití tohoto
malého, ale skvělého nástroje.