Linux jako zálohovací server (3)

Potřetí a naposledy budeme zálohovat windowsové počítače pomocí Linuxu. Tentokrát je to ryze praktický díl.

28.2.2005 06:00 | Petr Zajíc | přečteno 15260×

Dnes dokončíme minisérii o použití Linuxu jako zálohovacího serveru praktickou ukázkou zálohovacího skriptu a povídáním o dalších možnostech pogramu rdiff-backup.

Skript

Připomeňme si z minula, že skript, tak jak byl navržen měl zajišťovat zálohu stanic s OS Windows. Podělím se teď s vámi o hrubou, nicméně funkční kostru a rozeberu případná úskalí, na něž můžete při zprovozňování něčeho takového narazit. Nejprve tedy skript:

mount -tsmb -o username=[uzivatel],password=[heslo],iocharset=utf8,codepage=cp852 //[stroj]/[slozka] /windows
find /windows | grep -E -i -f ~/pridej.txt | rdiff-backup --include-filelist-stdin --exclude '**' /windows [zaloha]
umount /windows

A teď něco vysvětlení pro čtenáře, kteří snad nejsou příliš zběhlí v psaní shellových skriptů. Především, na stanici s Windows musíme založit uživatele [uzivatel] s heslem [heslo]. Protože v mém případě nebyly zálohované stroje součástí domény, vyřešil jsem to jednoduše založením uživatele na každé stanici. Důležité je zapamatovat si, že na stanici [stroj] musí být vytvořena sdílená položka [slozka] a že přávě vytvořený [uzivatel] musí mít k této složce minimálně práva pro čtení.

Pozn.: Položkou sdílenou jako [slozka] může být pochopitelně celý windowsový oddíl disku. Každopádně pamatujte na bezpečnost a zvolte si nějaké netriviální [heslo].

První řádek
Nejdřív nám skript "windowsový" oddíl připojí pomocí příkazu mount. Využíváme toho, že mount umí připojit oddíl typu smb, ovšem jádro musí podporovat smbfs filesystém. Jak zjistíme, zda systém podporuje smbfs? To je dobrá otázka; nejrychleji asi dotazem na soubor /proc/filesystems:

cat /proc/filesystems | grep smbfs

Pokud by z nějakého důvodu podpora pro smbfs v systému chyběla, nepovede se windowsový oddíl připojit a tím pádem zálohování selže. Více informací o smbmount se dozvíte z manuálových stránek (man mount, man smbmount). Ve většině současných distribucí bude však podpora smbfs zahrnuta.

Uživatelé se vás téměř zcela jistě jistě pokusí "potěšit" tím, že v názvech souborů, které se mají zálohovat budou používat českou diakritiku; proto při připojování windowsového oddílu věnujte pozornost nastavení parametrů iocharset a codepage. Ačkoli by pro češtinu mělo zcela bez problémů fungovat nastavení z příkladu, nebude žádná ostuda, když si na některé ze stanic vytvoříte soubor s diakritikou v názvu, zazálohujete jej a zkontrolujete to.

Čistě pro ilustraci jsem připojil "okenní" oddíl do složky /windows na zálohovacím serveru. Nezáleží na tom tolik, ale pro tuto složku byste pochopitelně měli mít příslušná přístupová práva.

Druhý řádek
Proč takové harakiri? Připomenu informaci z předchozího dílu, kde jsem uváděl, že si budu přát zálohovat pouze soubory s určitými příponami. A jestliže budu chtít seznam přípon upravit, nechci kvůli tomu předělávat mnoho skriptů, ale jen jeden textový soubor. Takže nejprve si pomocí příkazu find všechny soubory z připojeného oddílu hezky vypíšeme. Potom z nich vybereme jen ty, které končí příslušnými příponami. To elegnatně zvládne grep, kde -E znamená "rozšířený regulární výraz", -i "ignoruj velikost písmen" (to je důležité, ve windows totiž může i v příponě být libovolná kombinace malých a velkých písmen) a -f značí "převezmi vzory ze souboru". Obsah souboru ~/pridej.txt byl nastíněn v předchozím díle, je to seznam přípon souborů, jež si přejeme zálohovat.

Vznikne již kratší seznam souborů, které si skutečně přejeme zálohovat - a ten se již předá programu rdiff-backup. Kde přepínače znamenají: --include-filelist-stdin znamená "převezmi seznam souborů k zálohování ze standardního vstupu" a --exclude '**' pak "ignoruj vše ostatní". Zálohuje se adresář /windows na nějaké místo, kam je umístěna [zaloha].

Celý postup se dá jednoduše zopakovat pro více umístění (nebo strojů, chcete-li) s tím, že byste si pochopitelně měli nějak zorganizovat způsob ukládání a pojmenování záloh (např. pro každý PC jedna složka). Ve finále je možné celý skript uložit a přidat jako úlohu do cronu.

Obnova souborů

Sebelepší zlohovací systém je k ničemu, pokud nejsou zálohovaná data pravidelně testována. Testováním záloh mám na mysli jejich vyzkoušení dříve, než budou skutečně potřeba. Budete-li chtít obnovit poslední verzi nějakého dokumentu, můžete jej prostě zkopírovat pomocí příkazu cp:

cp [cesta k záloze]/soubor /[nové umístění]

Pozn.: To platí o kopírování souborů "ze zálohy" "mimo zálohu", ale ne naopak. Nikdy byste se neměli pokoušet zapisovat do složky se zálohou jinak než pomocí příkazu rdiff-backup, protože jinak můžete poškodit strukturu metadat a tím celou zálohu. Pozor na to.

Pomocí rdiff-backup uděláte naprosto totéž příkazem:

rdiff-backup -r now [cesta k záloze]/soubor /[nové umístění]

Jestliže však budete chtít obnovit starší verzi souboru (například budete chtít mít soubor ve stavu, v jakém byl před deseti dny), použijte syntaxi ve smyslu:

rdiff-backup -r 10D [cesta k záloze]/soubor /[nové umístění]

kde údaj 10D reprezentuje čas. Čas může být zadán jako datum v mnoha formátech, ale ten v příkladu mi přijde nejsnáze použitelný. Stejným způsobem lze namísto souborů obnovovat celé složky.

Další možnosti rdiff-backup

Samozřejmě, že program rdiff-backup má celou dalších funkcí. Často například potřebuji vědět, kolik různých verzi souboru záloha obsahuje. To snadno zjistím pomocí:

rdiff-backup -l [cesta k záloze]/soubor

(užitečné, pokud sekretářka něco chce a neví co) (a nejedná se přitom o nic jiného než o zálohovaný soubor). Může být rovněž užitečné vědět, jaké soubory se v záloze  nebo v některém adresáři zálohy měnily v uplynulých, řekněme, pěti dnech. To snadno zjistím pomocí příkazu:

rdiff-backup --list-changed-since 5D [cesta k záloze]/[adresář]

Rdiff-backup používá i jiné přepínače, zdaleka však nejsou tak významné jako ty, které jsem uvedl.

Praxe

V praxi funguje nastíněný postup velmi dobře. Bude však zapotřebí pečlivě zvážit, jaké soubory skutečně stojí za zálohování. Když budete chtít například zálohovat obrázky a nějaký dobrák si dva dny v počítači nechá několik stovek MB snímků z digitálního fotoaparátu, bude je záloha obsahovat i v případě, kdy si je ze svého disku smaže (lze ale nastavit rdiff-backup, aby si s tím nějak poradil). Takže doporučuji pořídit do zálohovacího stroje velký disk, nebo si pečlivě hlídat volné místo na oddílu, kam záloha přijde.

Na pomalejších strojích může zálohování nějakou dobu trvat (přesněji, trvá sestavení souborů a jejich prohnání grepem). Pokud naplánujete více úloh najednou, nechte mezi nimi dostatečný časový rozestup. Pozor, rdiff-backup se nepokusí zálohovat otevřené soubory.

K profesionálnímu řešení má nastíněný postup ještě dlouhou cestu, ale cílem minisérie bylo "předvést, že to jde" a ukázat, že linuxový stroj může sloužit pro zálohování. Existuje celá řada jiných řešení podobné úlohy, a budu jedině rád, když se se mnou o některá podělíte v diskusi.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=724