Dneska mi tu tak trochu schází doporučení, k čemu by co mělo být dobré.
Třeba ten DAR – Disk ARchive mě zaujal. Je mi jasné, že ho odedneška nemohu používat plošně a všem lidem posílat soubory s koncovkou dar. Ale pro nějaké to malé domácí zálohování. A vlastně jedná se o souborový formát? Nebo je to něco jiného? Trošku jsem to ten popis nepochopil.
DAR používám nejen na malé domácí, ale i velké pracovní zálohování (stanice i servery) k plné spokojenosti už hodně let (hodně > 5). Je to jak souborový formát, tak sada utilit pro práci s ním. Nejblíž je to asi dumpu, ale výsledné archivy jsou normálně procházitelné po souborech. Zásadní výhoda oproti taru nebo nějak zkomprimovanému dumpu je, že komprese je per-soubor, tedy vytažení jednoho souboru/podadresáře z čtvrtterové zálohy trvá sekundy a ne půl dne. Nechybí podpora automatického šifrování celé zálohy, rozdílových záloh a podobně.
Super věc je taky dar_manager, který udržuje databázi obsahu jednotlivých záložních souborů, takže nemusíte prolézat 100 inkrementálních záloh, abyste našel verzi souboru, kterou chcete obnovit - prostě určíte "chci stav k danému datu" a on ho z bázové a rozdílových záloh polepí sám. Navíc při dotazech do databáze nepotřebuje přistupovat k původním záložním souborům, což ocení zejména ti, kteří zálohy sypou na pásky nebo jiné offline médium.
DAR je k mání jak ve zdrojácích pro Linux (či asi i jiné UNIXy), tak jako binárka pro Wokna, obojí můžu plně doporučit (i když u Wokenní zálohy trochu zamrzí fakt, že neukládá ACLka - to obcházím tím, že je předem pomocí SetACL vydumpuju do souboru, který je v záloze zahrnut).
1) Ta databáze je separátní soubor, fyzicky naprosto nezávislý na vlastních archivech (takže můžou být archivy offline). Spravuje se taky ručně separátní utilitkou dar_manager (nemá to tedy "automatickou registraci záloh" jako dump/xfsdump) nějak takto:
Vytvořím záložní archiv: dar -c /cesta/k/zaloham/server-20141107 …
Otestuji zálohu :-) : dar -t /cesta/k/zaloham/server-20141107
Zaregistruji zálohu do databáze: dar_manager -B /cesta/k/databazi/server.dardb -A /cesta/k/zaloham/server-20141107
dar_manager vlastně zkopíruje metadata z archivu do databáze spolu s cestou a názvem archivu (ta se dá dodatečně změnit)
2) Každá záloha je vždy separátní soubor, není možno mít několik "snapshotů" uvnitř jednoho souboru. Závislost mezi jednotlivými soubory není nikde ale explicitně specifikovaná, čili inkrementální zálohu lze použít i úplně samostatně (k obnově souborů, které jsou v ní uloženy). Každý archiv vlastně obsahuje tzv. katalog, což je kompletní seznam souborů s jejich metadaty a příznakem, jestli je příslušný soubor uložen v tomto archivu, nebo platí stav, ve kterém byl uložen v referenčním archivu, případně byl v referenčním archivu uložen a posléze smazán.
V téhle souvislosti je asi vhodné podotknout, že DAR neumí archivy přímo libovolně dodatečně upravovat (přidávat soubory do existujícího archivu či je odtud mazat). Je to zkrátka určené právě spíš na zálohy a ne jako obecný filesystém v souboru. Má ale funkci "merge", kterou lze dva archivy sloučit do jednoho, přičemž lze specifikovat poměrně komplexní pravidla, jak se má takové spojování dělat (jak řešit konflikty atd.)
2/ Jak tedy mám rozumět té incrementálnosti? Můžeš mi to ještě trochu rozvést? Mám to chápat tak, že když mám v archivu 2014-01-01 soubory a,b,c, a pak udělám incrementální zálohu proti 2014-01-01, přičemž se mi změnil soubor b, tak se mi vytvoří záloha 2014-11-01 tabulkou a,b,c a celým souborem b?
A zapoměl jsem poděkovat: děkuji :-)
Ano, přesně tak. Pokud bys navíc ještě smazal soubor A, bude mít nová záloha v sobě takovýto seznam ("katalog"):
A: smazán
B: uložen
C: nezměněn oproti referenční záloze
+ nový obsah souboru B
Výslednou zálohu 2014-11-01 pak lze použít třemi způsoby:
a) rozbalit samostatně – vznikne jen soubor B
b) rozbalit napřed archiv 2014-01-01, který vytvoří soubory A, B, C, a potom rozbalit novou zálohu, která přepíše soubor B a smaže (po potvrzení) soubor A
c) zaregistrovat oba archivy do databáze dar_managerem a použít k obnovení ten – rozbalí soubor C z archivu 2014-01-01 a soubor B z 2014-11-01, čili ušetří si oproti b) zbytečnou práci s rozbalováním souboru A a starého B
PS: ten screenshot v článku je právě výpis katalogu souborů z nějakého DAR archivu, to Saved znamená, že je obsah souboru v daném archivu uložen
PS2: DAR ke každému souboru ukládá zvlášť obsah a zvlášť rozšířené atributy (POSIX ACL, SELinuxové labely, tagy apod.), čili pokud se od bázové zálohy změnily jen rozšířené atributy, neukládá zbytečně znovu nezměněný obsah