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 15658×
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.
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.
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.
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.
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.