Zálohování operačního systému

…ale také obnovení ze zálohy, přenesení na nový (jiný) disk atd.V tomto článku popisuji několik postupů, s jejichž využitím je možné pohodlně zálohovat operační systém počítače a v případě potřeby jej opět obnovit třeba na novém disku. Samozřejmě včetně kompletního nastavení a nainstalovaných programů.

Níže uvedený text předpokládá alespoň základní znalost funkce programů mount, cfdisk, dd, mk...fs, lilo, tar a konfigurace souborů /etc/fstab a /etc/lilo.conf. Nesprávné použití čehokoliv z toho co je uvedeno dále může mít pro Váš systém fatální následky. Doporučuje se používat hlavu :-).


Zkopírování funkčního systému

Takže, jako první mějme situaci, kdy nám systém bezchybně funguje, ale z nějakého důvodu chceme vyměnit harddisk. Ne přidat nový, ale vyměnit za nový, třeba větší. V nejmenovaném operačním systému toto zpravidla představuje novou instalaci systému a co je horší, také novou instalaci veškerého software, úpravu osobních nastavení apod. V linuxu je to jednodušší.

Je-li disk úplně nový musíme si jej nejdříve připravit. Disk fyzicky připojíme k počítači a provedeme rozdělení na oddíly třeba pomocí programu cfdisk.
# cfdisk /dev/hdx
Pak musíme vytvořit nějaký souborový systém přinejmenším na tom oddíle, který chceme použít pro kořenový adresář. Pochopitelně musí mít tento oddíl dostatečnou kapacitu. Souborový systém vytvoříme například pro reiserfs takto:
# mkreiserfs /dev/hdxy
Takto připravený disk připojíme někam do souborového systému běžícího systému:
# mount /dev/hdxy /mnt/novy_disk -t auto
V případě, že se jedná o již použitý disk, na kterém nebudete provádět změnu rozdělení na oddíly ani změnu souborového systému, bude vhodné přepsat veškeré volné místo na disku nulami. To je možné na připojeném disku (viz předchozí příkaz) provést takto:
# dd if=/dev/zero of=/mnt/novy_disk/nejaky_soubor
Na disk bude zapisováno až do doby kdy bude celý disk zaplněn souborem obsahujícím nuly. Program skončí chybovým hlášením, že na disku není volné místo. Nyní můžeme soubor /mnt/novy_disk/nejaky_souborsmazat a disk je tímto připraven. 

Provedeme zkopírování celého systému na nový disk:
# cd / …tím se dostaneme do kořenového adresáře běžícího systému
# cp -axv / /mnt/novy_disk …tímto příkazem zkopírujeme obsah „/“ na nový disk s tím, že program zachová strukturu a atributy původních souborů a vynechá při kopírování soubory z jiných svazků (oddílů disku), než na kterých je adresář „/“. Typicky se jedná o /home, /mnt a /proc, ale můžou to být i další adresáře v závislosti na konfiguraci systému.

Po zkopírování přejdeme do adresáře kde je nový disk připojený a ručně vytvoříme adresáře /home, /mnt a /proc, případně i další, pokud jejich obsah ve starém systému byl fyzicky na jiné diskové jednotce než adresář „/“. Dále upravíme konfigurační soubory /etc/fstab a etc/lilo.conf v adresářovém stromu nového systému tak, aby jejich obsah odpovídal skutečnosti a zapíšeme lilo. Protože ještě pořád systém běží ze starého kořene a my chceme zapsat lilo tak aby byl použit konfigurační soubor lilo.conf z nového kořene, musíme použít příkaz:
# lilo -r /cesta/k/jinemu/root/

Pokud jste vše udělali správně, nastartuje systém po restaru z nového disku. Vše je v původním stavu, konfigurace prostředí, osobní nastavení, software. 


Vytvoření zálohy z funkčního systému

Jako druhý případ vezměme situaci, kdy máme svůj systém v pořádku, dobře vyladěný a chceme se pojistit pro případ nějaké nehody ať už z důvodu chyby hardware, software nebo obsluhy. V této situaci se nám bude hodit možnost zazálohovat celý systém pro případné pozdější použití. Jak na to?

Vlastně můžeme použít i obdobu toho co je uvedeno výše, ale lepší bude toto:
Na běžícím systému provedeme tyto příkazy:
# cd /
# tar -c -v -z --one-file-system --numeric-owner --exclude /home --exclude /mnt --exclude /proc -f /cesta/k/zaloze.tar.gz /
Druhý příkaz je nutné zadat na jediném řádku. Zadané parametry zajišťují, že se příkaz provede jen na tom souborovém systému, na kterém je adresář „/“ a že budou zachována práva i vlastnictví souborů. Do parametru --exclude je samozřejmě nutné uvést i případné další adresáře, které nechceme zálohovat.

V případě, že zálohujeme systém připojený někde v /mnt, musí tomu odpovídat i první příkaz, třeba:
# cd /mnt/pripojeny_system
Druhý příkaz pak bude končit „./„. Ještě před komprimací je vhodné zaplnit volné místo na disku nulami tak jak je popsáno výše.

Výše uvedeným postupem vytvoříme soubor obsahující zálohu kompletního operačního systému. Tu si pak můžeme vypálit na CD a v případě potřeby ji mít k dispozici.

Zálohování uživatelských dat zpravidla spočívá v zálohování obsahu adresáře /home, resp. adresářů jednotlivých uživatelů v něm obsažených. Mj. jsou v těchto adresářích ve skrytých adresářích uloženy konfigurační soubory jednotlivých programů, takže zálohováním těchto dat si do budoucna zajistíme možnost obnovení nastavení a konfigurace programů a prostředí pro uživatele. Jak to udělat nebudu popisovat zde v tomto článku, protože jsem to již naznačil v jiném článku o vypalování CD a DVD v příkazovém řádku.


Obnovení ze zálohy

Možná se Vám už někdy stalo, že se harddisk odporoučel do věčných lovišť zrovna v době kdy jste měli nejvíce práce, která navíc měla být hotova už včera. To je pak každá rada drahá, ale máte-li aktuální zálohu operačního systému a zálohu uživatelských dat (většinou adresář /home), nemusí být ztráty až tak citelné.

Předpokládejme, že starý disk je definitivně mrtev, koupili jste si nový disk a potřebujete teď pokud možno rychle obnovit činnost celého systému do toho stavu v jakém byl před havárií. Máte-li zálohu vytvořenou podle předchozího postupu, je to snadné. Vlastně jen na ten nový disk rozbalíte archiv, který jste při zálohování vytvořili.

Nejdříve však musíte počítač zprovoznit alespoň do toho stavu aby jste si s ním mohli povídat. Ideálně k tomu poslouží nějaká live distribuce linuxu, ze které nabootujete bez nutnosti mít operační systém na disku. Vlastně se to obejde i bez disku jako takového, ale ten my už tam máme, nový, rychlejší, větší, lepší :-). Live distribucí je mnoho, já rád používám SLAX, což je česká live distribuce založená na Slackware Linuxu.

Po nabootování musíme disk nejdříve rozdělit (cfdisk), vytvořit souborový systém (mk…fs) a připojit (mount) podobně jak je popsáno výše. V ideálním případě bude rozdělení podobné nebo stejné jako na starém disku a my budeme obnovovat oddíly rozložené stejně jako u původního disku. Uděláme to takhle:
# cd /kde/je/pripojeny/novy_disk.
# tar -x -z -v --preserve --same-owner -f /cesta/k/zaloze.tar.gz
Po rozbalení systému je nutné vytvořit adresáře /proc, /home/ a /mnt, případně i další, pokud byly ve starém systému umístěny fyzicky na jiném diskovém oddílu než kořenový adresář „/“. Dále musíme upravit soubory /etc/fstab a /etc/lilo.conf tak aby korespondovaly s aktuálním rozložením systému na diskových oddílech nového disku. Pokud jste rozdělení disku i umístění kořenového a dalších adresářů ponechali beze změn, nemusíte obsah těchto souborů měnit vůbec, ale určitě musíte na novém disku zapsat zavaděč systému:
# lilo -r /cesta/k/novemu /root

Operační systém byl tímto obnoven a aby bylo dílo dokonalé, musíte ještě do adresáře /home dopravit data uživatelů, případně pokud jste měli i jiné adresáře připojené na jiných oddílech, obnovit data i v nich. Po restartu stroje by měl systém nabootovat k nerozeznání od původního se stavem k datu provedení poslední zálohy. 

V Praze 1.6.2006.

Příspěvek byl publikován v rubrice Linux a jeho autorem je michal. Můžete si jeho odkaz uložit mezi své oblíbené záložky nebo ho sdílet s přáteli.