Cvičení v 6. týdnu

Zálohování


Způsoby zálohování

Nejjednodušším přístupem k zálohování je vždy zálohovat vše, což ovšem nebývá efektivní ani s ohledem na čas ani využití médií.

Pokročilejším přístupem je vše zazálohovat jednou a poté zálohovat jen to, co bylo změněno od předchozího zálohování. První záloha se označuje jako plná záloha (full backup), další jednotlivé zálohy jsou inkrementální. Například, lze vždy v pátek vytvořit plnou zálohu a v pondělí až čtvrtek pouze inkrementální zálohy.(Proč právě v pátek?) Tato metoda má dvě úrovně záloh: plnou a inkrementální. Uvedený princip lze zobecnit na libovolné množství úrovní. Plná záloha může být úroveň 0 a různé úrovně inkrementálních záloh 1, 2, 3, .... Na každé inkrementální úrovni se zálohuje vše co bylo změněno od předchozí zálohy na nižší úrovni.

Cílem takového přístupu je uspořit množství zálohovaných informací což vede k úspoře finančních prostředků za média a ke zrychlení procesu zálohování. Doba pořízení zálohy může být klíčovým hlediskem u systémů s nepřetržitým provozem, kde si třeba ani nemůžeme plnou zálohu z časových důvodů dovolit.

Příklady zálohovacích schémat:

Co zálohovat

V zásadě se vyplatí zálohovat ta data, která bychom opětovně získávali z jiného zdroje mnohem obtížněji než z pořízené zálohy. Většinou se nevyplácí zálohovat:

Evidentně nezbytné je zálohovat uživatelské soubory (/home), datové soubory provozovaných aplikací (databázové servery) a systémové konfigurační soubory (/etc, plus možné soubory uložené izolovaně). Vyplatí se zálohovat i logy.

Zálohovací nástroje

Operační systémy UNIX tradičně nabízejí tři zálohovací nástroje tar, cpio, a dump. Dále můžete využít mnoho různých nástrojů dostupných jak pro Linux, tak i další systémy.

tar a cpio jsou podobné a pracují na úrovni uživatelských programů, oba umožňují zálohovat a obnovovat soubory z pásek, ale i jiných zařízení. Nemají problémy ani se zálohováním speciálních souborů (symbolických linků, zařízení, souborů s velmi dlouhou cestou, apod. ).

Program dump se od předchozích dvou liší, především v tom, že čte soubory přímo z disku (pomocí blokového zařízení), nikoli prostřednictvím služeb filesystému (jako soubory). Dále se liší způsob uložení dat v záloze: zatímco tar/cpio ukládají vždy před každým souborem hlavičku s metadaty (jméno souboru, časy, práva, vlastnictví, ...), dump ukládá nejprve všechny hlavičky a pak vlastní obsah všech souborů. Dump ukládá do souboru /etc/dumpdates časy pořízení záloh, které pak využívá k 9-úrovňovým inkrementálním zálohám. Z těchto třech principielních rozdílů plynou jejich rozdílné vlastnosti:

Prerekvizity

Následující text bude obsahovat příklady příkazů, aby jejich spuštění mělo smysl, je nezbytné mít co zálohovat. Všechny popsané příklady prakticky vyzkoušejte!

Jednotlivé příklady zálohují domovský adresář (/home) do souboru /zaloha.home. Aby bylo možné vyzkoušet i program dump vytvořte na disku /dev/hdb1 nový filesystém a přimountujte jej dočasně do adresáře /m. Přesuňte všechny domovské adresáře (/home/*) do adresáře /m (mv /home/* /m). Odmountujte /m a připojte ho do /home. Nyní máte domovské adresáře na zvláštním filesystému. Dále si v domovském adresáři některého uživatele vytvořte několik souborů s libovolným obsahem (např. $man man > soubor.1).

Změnou či smazáním souboru před obnovou a při inkrementálním zálohování, můžete ověřit korektnost chování jednotlivých programů.

tar (tape archiver)

Plnou zálohu vytvoříte velmi snadno:
# tar --create --file /zaloha.home /home

Samozřejmě, tar podporuje i zkrácené názvy parametrů a umožňuje zálohovat i na několik médií (multi-volume):
# tar -cMf /dev/fd0 /home

Zkontrolovat zálohu lze následujícím příkazem (-d, --diff, --compare):
# tar -dvf /zaloha.home

Lze zazálohovat např. jen soubory změněné po určitém datu --newer (-N). POZOR! Toto nelze chápat jako inkrementální zálohování, neboť po případném rozbalení se nesmažou soubory, které by měly být inkrementem vymazány. --newer (-N):
# tar -cvN '30 Sep 2002' -f /zaloha.home /home

Bohužel, tar neumí zjistit změnu i-uzlu, například při změně přístupových práv, nebo přejmenování souboru.

Pro obnovu souborů ze zálohy slouží parametr --extract (-x):
# tar -xpvf /zaloha.home

Ke zjištění, co v archivu vlastně máte, použijte (-t, --list):
# tar -tf /zaloha.home

Obnovit lze i vybrané soubory:
# tar -xpvf /zaloha.home soubor.1 soubor.3

Uložit všechny soubory s příponou *.txt lze např.:
# tar -xpvf /zaloha.home `find . -name '*.txt' -print`

cpio (copy in and out)

Rozdíl oproti tar je v tom, že tar nepoužívá při archivaci standardní vstup a jména zálohovaných souborů mu jsou předávána jako parametry, zatímco cpio očekává jména těchto souborů na standardním vstupu.
# cd /home
# find . -print | cpio -ocv > /zaloha.home

Následující příkaz zazálohuje soubory, které byly změněny během 7 dnů (resp. 7*24 hodin):
# find /home -mtime -7 -print | cpio -oc > /zaloha.home.0

Obnova souborů z archivu:
# cpio -iv < /zaloha.home

dump/restore

Dump umožňuje zálohovat pouze celé file systémy, nikoli jednotlivé podadresáře (resp. umožňuje, ale při zálohování pouhé části FS není funkční inkrementální zálohování). O každém zálohovaném FS je veden záznam v souboru /etc/dumpdates, informující o poslední provedené záloze dané úrovně.

Vytvoření plné zálohy (nulté úrovně) adresáře /home:
# dump -0uf /zaloha.home /home

Vytvoření třetí úrovně inkrementální zálohy adresáře /home:
Proveďte nejprve změny v /home
# dump -3uf /zaloha.home.3 /home

Obnovení FS ze zálohy:

Poznámka:
vytvořte nový FS, přimountujte ho do adresáře /home2 a nastavte jej jako pracovní (cd /home2). Průběžně můžete srovnávat /home a /home2.

# restore -rvf /zaloha.home

# restore -rvf /zaloha.home.3

Pro interaktivní obnovení souborů můžete použít příkaz:
# restore -ivf /zaloha.home.3

Zda je nutné FS zálohovat zjistíte příkazem:
# dump -W

Vyzkoušejte rovněž jak bude tento příkaz reagovat, resp. jak se bude měnit soubor /etc/dumpdates při zálohování FS v různých úrovních

Komprimace

Zálohy zabírají občas více místa než je žádoucí. K jejich redukci lze použít komprimaci dat. Linux nabízí několik nástrojů přímo na komprimaci souborů nebo obecných dat protékajících skrz standardní vstup na výstup (gzip, compress, bzip2).

Příklady komprimace archivu:
# tar -cf - /zaloha | compress > /zaloha.home.Z

Téhož můžete dosáhnout s využitím parametrů -z (--gzip) nebo -Z (--compress) nebo -j (--bzip). Tyto parametry programu tar však fungují jen v GNU verzi programu tar, která je běžně jen na některých UNIXech (Linux - ano, Solaris - ne). V těchto případech program tar sám zajistí spuštění externího programu gzip, compress nebo bzip a předává mu data:
# tar -czf /zaloha.home.gz /home
# tar -cZf /zaloha.home.Z /home
# tar -cjf /zaloha.home.bz2 /home

Bodovany ukol:
Predvedte rozbaleni komprimovane plne a inkrementalni dump zalohy. Inkrementalni zaloha by mela pridat soubor a odebrat jiny soubor.