Portál AbcLinuxu, 6. května 2024 00:22

Zálohování v Linuxu - II

25. 3. 2003 | Petr Novický
Články - Zálohování v Linuxu - II  

Syntaxe a příklady použití příkazů dump, restore a tar.

Úvod

V dnešním díle seriálu o zálohování v Linuxu se budeme zabývat několika nástroji, které jsou pro archivaci dat nezbytné. Bude se tedy jednat už o více praktický díl než ten minulý.

I když existují nástroje s pěkným GUI a zálohování proběhne po několikerém kliknutí myší, znalost příkazů, které tyto nástroje využívají, jistě stojí za pozornost. Pokud nastane nějaká nestandardní situace, budeme je stejně potřebovat. Tedy vzhůru na první užitečné nástroje:

Dump

Nástroj dump se nachází na většině linuxových distribucí a jistě je na místě se o něm důkladněji zmínit. Stručně řečeno funguje dump tak, že prohlédne zadaný souborový systém a rozhodne, která data je nutné zálohovat a která ne. Uživatel toto rozhodování ovlivňuje specifikováním tzv. "dump_levelu", o kterém si něco bližšího povíme poději.

Nejpodstatnější nevýhodou je skutečnost, že dump pracuje na velmi nízké úrovni (s inodami). Je proto nutné postarat se o podporu jednotlivých souborových systému zvlášť. Přikaz dump umí pracovat s Ext2/Ext3, ostatní souborové systémy nepodporuje. Teď už k samotné syntaxi příkazu.

dump [-dump_level] [-b velikost_bloku] [-B pocet_bloku] [-f soubor] [-u] adresář

kde

Ještě se podíváme blíže na dump_levely. Obvykle začínáme úrovní 0 (plnou zálohou). Každou zvyšující se urovní ukládáme pouze ta data, která se změnila od zálohy předchozí úrovně. Když tedy provedeme zálohu úrovně 0 a během týdně urovně 1, uchováváme změny od první (0. úroveň). Naopak zvyšováním úrovně zálohujeme jen změny za jednotlivé dny.

Příklad použití:

dump 1uf /dev/ftape /usr/local/bin

Restore

Dalším příkazem, který je přesným opakem předchozího, je restore. Pracuje ve dvou módech: interaktivním a neinteraktivním. Interaktivní mód umožnuje obnovit jednotlivé soubory, neinteraktivní umí obnovit celou zálohu. Jeho použití si ukážeme na následujících příkladech:

Interaktivní mód

Předpokládejme například, že jsme si udělali zálohu adresáře /home. Obnovení vybraných zálohovaných dat na určitém médiu zajistíme třeba takto:

restore -i -s 2 -f /dev/ftape

Pomocí přepínače -i volíme interaktivní režim, -s vybírá soubor na médiu (kde je více než jeden), -f určuje obdobně jako v předchozím případě zálohované médium. V interaktivním módu pracujeme pomocí několika příkazů (add, cd, delete, ls, pwd, quit, restore a další), informace o nich dostaneme příkazem help. Příkazy pwd, cd, ls jsou velmi zřejmé. add a delete slouží k přidávání/odebírání souborů do seznamu těch, které se mají obnovit (příkaz restore). Opět si uvedeme jednoduchý příklad:

restore> add ftp
restore> extract

Těmito příkazy obnovíme ze zálohy domácí adresář uživatele ftp.

Neinteraktivní mód

Pokud pracujeme v tomto módu, musíme se nejprve přesunout do adresáře, kam chceme data za zálohy obnovit, jelikož se pracuje pouze se s relativními cestami. Pokud pracujeme s páskou musíme nastavit správnou pozici na pásce pomocí příkazu mt, který byl zmíněn v předchozím díle (nemůžeme tedy použít nepřevíjející zařízení). Poté můžeme začít pracovat:

restore -t -f /dev/nftape

Tímto příkazem získáme seznam všech souborů v daném záznamu na pásce. Pro extrakci adresáře ftp jako v předchozím příkladě použijeme příkaz, který rekurzivně prochází zálohu tohoto adresáře a obnovuje ji:

restore -x /home/ftp -f /dev/nftape

Tar

Úvod

Program tar patří k nejstarším nástrojům použivaným k archivaci dat a je také nejvíce portabilní. Nepracuje totiž na tak nízké úrovni jako příkaz dump a proto jej můžeme použít na různých souborových systémech. Má však problémy s chybami v archívech (zvlášť komprimovných). Pokud dojde k poškození souboru, ztrácíme pravděpodobně velké množství dat.

Syntaxe

Příkaz tar je velmi rozsáhlý. Pokud se podíváme na jeho manuálovou stránku, zjistíme, že má opravdu mnoho přepínačů. My se zmíníme alespoň o některých z nich. Nejprve si však prosvištíme jednotlivé příkazy:

A nyní si zmíníme nejpoužívanější modifikátory:

Poslední modifikátor patří k nejdůležitějším, jelikož opomnění jeho použití může vést k nepěkným důsledkům. Při zálohování kořenového adresáře jistě nechceme archivovat všechny připojené souborové systémy nebo /proc. Použitím přepínače --one-file-system se podobných problémů vyvarujeme.

Příklady

Nyní si předvedeme několik praktických příkladů použití nástoje tar. První z nich vytvoří komprimovanou zálohu adresáře /home na páskovém zařízení:

tar czf /dev/nftape /home

Dalším příkladem si ukážeme použití přikazu tar v případě inkrementálního zálohování:

tar czf /dev/nftape --listed-incremental /var/log/zaloha /home

Tento příkaz přečte informace ze souboru /var/log/zaloha a podle nich provede inkrementální zálohu. Informací o své činnosti potom přepíše tento soubor, který bude tak připraven pro další cyklus archivace. Pokud bychom chtěli provést inkrementální zálohu několikrát od stejného data, musíme si tento soubor zkopírovat.

Místo /dev/nftape (páskové zařízení) můžeme použít samozřejmě jiné možné médium - jako disketovou mechaniku - nebo můžeme jednoduše archivovat do souboru a ten si pak vypálit na CD médium.

Pokud archivujeme na diskety a archiv má větší velikost než se na ní vejde, požádá nás tar o další médium. Pokud takto zálohujeme, nemůžeme bohužel použít komprimace.

Pokud obnovujeme data z archívu, musíme mít na paměti, že tar používá defaultně relativní cesty. Pokud obnovovaný adresář v tom současném neexistuje, je zde vytvořen. Pro práci s plnými cestami musíme přidat do příkazu modifikátor P:

tar cPf zaloha.tar /home

tar xPf zaloha.tar

Poslední uvedený příkaz rozbalí obsah souboru zaloha.tar správně (tedy do adresáře /home) ať už jej použijeme v jakémkoliv adresáři.

Závěr

Toto byly tři z nejpoužívanějších příkazů při zálohování. Jejich použití se pravděpodobně nevyhneme a pokud jste se s nimi doposud nesetkali, určitě je v budoucnu použijete. V příštím díle se zmíním ještě o posledních dvou - a to cpio a afio. Také se podíváme na vzdálené zálohování a stručně si uvedeme některé komplexnější programy, které nám archivování zesnadňují.

Související články

Zálohování v Linuxu - I

Odkazy a zdroje

manuálové stránky příkazu dump
manuálové stránky příkazu restore
manuálové stránky příkazu tar
Linux Backup HOWTO

Seriál Zálohování v Linuxu (dílů: 3)

První díl: Zálohování v Linuxu - I, poslední díl: Zálohování v Linuxu - III.
Předchozí díl: Zálohování v Linuxu - I
Následující díl: Zálohování v Linuxu - III

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

Diskuse k tomuto článku

25.3.2003 07:18 Gustav Hájek
Rozbalit Rozbalit vše inkrementální zálohování
Odpovědět | Sbalit | Link | Blokovat | Admin
Tento článek mi přišel velice vhod, protože systém zálohování právě řeším. Prošel jsem si zběžně příkaz tar, a zajímalo by mne zda je možné v jednom archivu uchovávat více verzí jednoho souboru? Např. z pondělí, úterý atd. A jak se k nim potom přistupuje (obnovuje)? Případně zda je možné inkrementální zálohování provádět do různých souborů (archivů)? Je mi jedno zda se použije tar nebo dump či něco jiného.
25.3.2003 08:31 Tomas Zellerin
Rozbalit Rozbalit vše inkrementální zálohování
Je mozne pridat soubor se stejnym jmenem do tar archivu, s tim tar nema problemy. Pri rozbalovani se ulozi naposledy vlozeny. Chceme-li videt vsechny, je treba pouzit tusim --backup --version-control=numbered. Potom se prejmenuji starsi soubory a dostanou pripony ,1 ,2 atd.
25.3.2003 10:02 Jiri Bajer | skóre: 34 | blog: Sarimuv koutek | Praha
Rozbalit Rozbalit vše inkrementální zálohování
Zkuste se podivat po programu hdup (mozna, ze je dokonce soucasti Vasi distribuce). Umi triurovnove zalohovani (mesicni=uplna zaloha, tydenni=soubory, ktere byly oproti uplne zaloze modifikovany a denni=soubory, ktere byly modifikovany oproti tydenni zaloze). Je to vlastne nadstavba nad tar --listed-incremental a gzip. Umi rozbalovat ke konkretnimu datu (tj. zaroven slouzi jako primitivni system uchovavani verzi) a pro zjednoduseni manipulace umoznuje definovat symbolicke oznaceni "cilu"(=adresar vcetne podadresaru s moznosti vyjmuti podstromu ci souboru s danou priponou). Zaloha pak vypada napr.
hdup daily config
a obnoveni jednoho souboru k datu napr.
hdup restore "16-01-2003" config etc/passwd
Kombinace tar+gzip ma sice mensi kompresni pomer, nez tar+bzip2 (cca o 10%), ale je rychlejsi (cca o 50%) a archivy se daji prohlizet a rozbalovat i v Total Commanderu ve Windows. (na rozdil od vfs v Midnight Commanderu si poradi i s --listed-incremental). Dump a afio jsou IMHO vhodne spise pro paskove zalohy, zatimco tar+gz je vhodny pro zalohy na CD. (problemy s poskozenim casti archivu se u CD vyskytuji mnohem mene casto)
25.3.2003 09:53 Zaphod | skóre: 37 | blog: zaphod_blog
Rozbalit Rozbalit vše Pozor na dump/restore v Mandrake 9.0
Odpovědět | Sbalit | Link | Blokovat | Admin
V RedHate 7.3 som vyrobil programom dump subor 3,8GB. V Mandrake 9.0 ho nebol restore ochotny citat. Skusanim som zistil ze dump/restore v Mandrake9.0 nie je schopny robit so subormi vacsimi ako 2GB.
25.3.2003 10:05 Jiri Bajer | skóre: 34 | blog: Sarimuv koutek | Praha
Rozbalit Rozbalit vše Pozor na dump/restore v Mandrake 9.0
A neni problem v konfiguraci kernelu nebo v rozdilnem souborovem systemu? (podpora extremne dlouhych souboru, popr. struktura i-nodes)
25.3.2003 10:28 it
Rozbalit Rozbalit vše cd backup
Odpovědět | Sbalit | Link | Blokovat | Admin
Resil jsem problem, jak zalohovat na CD. Kupodivu jsem nemohl v celem Debianu najit zadny vhodny program. Slo mi o jednoduche zalohovani adresaru /etc /root /home a /usr/src s tim, ze se to treba nemusi vejit na jedno cd. Tento problem myslim dobre resi programy cdbkup a nebo dar, ktere lze stahnout ze sourceforge. Ja pouzivam cdbkup. Umi delat uplne i inkrementalni zalohy. Pokud se zaloha nevejde na jedno cd, rekne si sam o dalsi. Posledni cd nechava otevrene, takze na nej muzete pridavat inkrementalni zalohy - proste se udela nova session. Mozna, ze dar je treba lepsi, ale mel jsem problemy s instalaci. Pro Debianisty jeste pripominam diskusi z minuleho dilu, kde se dozvi, jak ukladat konfiguraci systemu.
26.3.2003 09:56 Michal Medvecký
Rozbalit Rozbalit vše cd backup
Check this out: http://www.microwerks.net/~hugo/
26.3.2003 16:49 SC
Rozbalit Rozbalit vše Image disku
Odpovědět | Sbalit | Link | Blokovat | Admin
A jak by bylo mozne udelat nejakym (pokud mozno) jednoduchym zpusobem image disku? Mam na mysli image celeho disku vcetne /boot swapovaci oblasti atd. Proste tak, abych mohl provadet instalace stanic primo z image.
26.3.2003 18:36 rajo
Rozbalit Rozbalit vše Image disku
dd if=/dev/hda1 of=file.img Alebo sa inspiruj skriptom, ktorym si ja zalohujem Windowsy. Link je tuto: http://www.platon.sk/cvs/cvs.php/scripts/shell/Windows-backup/ Po obnove Windowsov z takejto zalohy mam naspat este aj ikonky na ploche presne tak, ako som ich nechal pred zazalohovanim. ;) V skripte najdes aj zopar tipov, ako zalohu kusok zmensit a ako testovat jej integritu, prip. povolit, aby to mohol spravit bezny user, ked sa nieco doserie.
28.3.2003 08:30 SC
Rozbalit Rozbalit vše Image disku
Mam za to, ze prave dd se pro tento ucel nehodi. Jde prave o to bootovani. dd pouzivam uspesne na vytvareni image "nebootovacich" disku, nebo treba na image disket (a ty mohou byt bootovaci). systemovy hdd jsem zatim nezkousel (nemam k tomu odvahu :-)), ale vyzkousim to (az budu mit cas instalovat linux na nejaky jiny disk). Kazdopadne nemam jistotu, ze dd bude v tomto pripade fungovat, ale nebudu se hadat, protoze to nevim. Diky za skript, podivam se na to a urcite si s tim pohraju.
28.3.2003 22:00 rajo <rajo AT platon.sk>
Rozbalit Rozbalit vše Image disku
Nerozumiem tomu, aky mate problem s "bootvacimi/nebootovacimi" diskami a/alebo disketami. Povedzme si ako priblizne pracuje dd: dd proste priamo pristupuje k datovym blokom na danom zariadeni, takze v linuxe je jedno ci je zariadenim disketova mechanika, disk, alebo CD-ROM. Podla mojich vedomosti je bootovaci zaznam diskov a diskiet ulozeny v 1. bloku, takze ak si chcete zazalohovat bootsektor, malo by podla mna fungovat toto: dd if=/dev/hda of=/zaloha/boot-sektor-datum.img bs=512 count=1 -- skopiruje to 1. blok disku do suboru /zalohy/..., velkost bootsektoru je 512 bajtov, chceme skopirovat jeden blok a nie cely disk (count=1) No a pokial skusate z disku iba citat, a nie zapisovat, nemusite sa nicoho obavat. ;) rajo
2.8.2007 15:14 Jiri Bajer | skóre: 34 | blog: Sarimuv koutek | Praha
Rozbalit Rozbalit vše Re: Zálohování v Linuxu - II
Odpovědět | Sbalit | Link | Blokovat | Admin
U taru na pasku jsem nejcasteji pouzival tyhle prepinace:

Zaloha na pasku: tar -cvf /dev/mt0 /etc

Vypsani obsahu pasky: tar -tvf /dev/mt0 /etc

ev. pretoceni pasky na zacatek (bez ejectu): mt -f /dev/mt0 rew

Rozbaleni zalohy z pasky: tar -xvf /dev/mt0 /etc

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.