Funkce BorgBackupu

Podrobný přehled všech klíčových funkcí, které z BorgBackupu dělají jeden z nejefektivnějších zálohovacích nástrojů pro Linux a macOS.

Content-defined chunking — inteligentní deduplikace

Srdcem BorgBackupu je algoritmus content-defined chunking (CDC), který představuje jednu z nejpokročilejších metod deduplikace dat v zálohovacím softwaru. Na rozdíl od jednoduchých přístupů, které porovnávají celé soubory, Borg rozděluje každý soubor na menší bloky (chunky) proměnlivé velikosti. Hranice mezi bloky nejsou určeny pevnou velikostí, ale obsahem dat — Borg používá speciální hashovací funkci (Buzhash rolling hash), která detekuje přirozené hranice v datovém proudu.

Tento přístup má zásadní výhodu: pokud se v souboru změní jen malá část (například se přidá odstavec do textového dokumentu), většina bloků zůstane stejná. Borg rozpozná nezměněné bloky a uloží pouze ty nové. U tradičních zálohovacích nástrojů, které pracují s celými soubory, by se musel znovu uložit celý soubor, i kdyby se změnil jen jeden bajt.

Deduplikace funguje globálně v rámci celého repozitáře. To znamená, že pokud máte na serveru několik virtuálních strojů se stejným operačním systémem a zálohujete je všechny do jednoho repozitáře, sdílené soubory (systémové knihovny, binární soubory) se uloží pouze jednou. Tento mechanismus může snížit nároky na úložiště o 50–90 % v závislosti na charakteru zálohovaných dat.

Kompresní algoritmy

BorgBackup nabízí čtyři kompresní algoritmy, z nichž každý je optimalizován pro jiný scénář použití. Uživatel si může vybrat algoritmus a úroveň komprese při vytváření zálohy, nebo může kompresi zcela vypnout pro maximální rychlost.

LZ4 — rychlost na prvním místě

Algoritmus LZ4 je nejrychlejší dostupnou volbou v Borgu. Kompresní poměr je sice nižší než u ostatních algoritmů, ale rychlost komprese a dekomprese je téměř nezměřitelná — zpracování probíhá rychlostí blízkou rychlosti disku. LZ4 je ideální volbou pro scénáře, kde je důležitější rychlost zálohy než úspora místa, například při zálohování přes rychlou lokální síť.

Zstd — vynikající poměr rychlosti a komprese

Zstandard (zstd) je moderní kompresní algoritmus vyvinutý společností Facebook (Meta). Nabízí vynikající poměr mezi rychlostí a kompresním poměrem a je k dispozici v úrovních 1 až 22. Nižší úrovně (1–3) jsou téměř tak rychlé jako LZ4, ale s lepším kompresním poměrem. Vyšší úrovně (15–22) dosahují komprese srovnatelné se zlib, ale s výrazně vyšší rychlostí dekomprese. Zstd je obecně doporučovanou volbou pro většinu uživatelů.

Zlib — klasická komprese

Zlib je tradiční kompresní algoritmus založený na algoritmu DEFLATE. Nabízí dobrou kompresi s rozumnou rychlostí a je k dispozici v úrovních 0 až 9. Zlib je vhodný pro scénáře, kde je důležitá kompatibilita nebo kde uživatel preferuje prověřený a stabilní algoritmus. V porovnání se zstd je však obvykle pomalejší při stejném kompresním poměru.

LZMA — maximální komprese

LZMA poskytuje nejvyšší kompresní poměr ze všech dostupných algoritmů, ale za cenu výrazně pomalejší komprese. Dekomprese je také pomalejší než u ostatních algoritmů. LZMA je vhodná pro archivaci dat, která nebudou často obnovována, nebo pro scénáře, kde je úložný prostor extrémně drahý. Pro běžné denní zálohy se LZMA nedoporučuje kvůli vysokým nárokům na procesor.

Šifrování na straně klienta

BorgBackup implementuje šifrování na straně klienta pomocí algoritmu AES-256 v režimu CTR (Counter mode). Pro zajištění integrity dat používá HMAC-SHA256, který ověřuje, že data nebyla po zašifrování modifikována. Tato kombinace poskytuje jak důvěrnost (nikdo bez klíče nemůže data přečíst), tak integritu (jakákoli manipulace s daty je detekována).

Borg nabízí několik režimů šifrování. Režim repokey ukládá šifrovací klíč v repozitáři (chráněný heslem), což je pohodlné pro správu, ale vyžaduje důvěru v úložiště. Režim keyfile ukládá klíč lokálně na počítači uživatele, což poskytuje vyšší bezpečnost, ale vyžaduje pečlivou správu klíče. V obou případech je klíč chráněn heslem uživatele pomocí derivační funkce PBKDF2.

Důležité je, že šifrování probíhá před odesláním dat na server. Server nikdy nevidí nešifrovaná data a nemůže je přečíst ani v případě kompromitace. Toto je zásadní rozdíl oproti některým cloudovým zálohovacím službám, kde šifrování probíhá až na straně serveru.

Append-only repozitáře

Append-only režim je bezpečnostní funkce, která omezuje operace, jež může klient s repozitářem provádět. V tomto režimu může klient pouze vytvářet nové archivy, ale nemůže mazat ani upravovat existující. Tato funkce poskytuje ochranu před několika typy hrozeb:

  • Ransomware: I kdyby ransomware získal přístup k zálohovacímu klientu, nemůže zašifrovat nebo smazat existující zálohy v repozitáři.
  • Kompromitovaný server: Pokud je zálohovaný server kompromitován útočníkem, útočník nemůže zničit zálohy, ze kterých by bylo možné systém obnovit.
  • Lidská chyba: Administrátor nemůže omylem smazat zálohy spuštěním nesprávného příkazu na klientovi.

Append-only režim se konfiguruje na straně serveru úpravou souboru authorized_keys, kde se k SSH klíči přidá volba --append-only. Pro skutečné mazání starých archivů je nutné přistoupit k repozitáři přímo na serveru a provést příkaz borg compact.

Vzdálené zálohování přes SSH

BorgBackup podporuje vzdálené zálohování prostřednictvím protokolu SSH. Na vzdáleném serveru musí být nainstalován BorgBackup, ale není třeba žádný speciální démon — komunikace probíhá přes standardní SSH. Borg na vzdáleném serveru spustí proces borg serve, který zpracovává požadavky klienta.

Výhodou SSH transportu je, že využívá stávající infrastrukturu — SSH klíče, firewall pravidla, port forwarding. Nevyžaduje otevírání dalších portů a je kompatibilní s většinou serverových konfigurací. Borg přenáší pouze nové nebo změněné bloky dat, takže i přes pomalejší síťové spojení je zálohování efektivní.

FUSE mounting archivů

BorgBackup umožňuje připojit archiv jako virtuální souborový systém pomocí technologie FUSE (Filesystem in Userspace). Po spuštění příkazu borg mount se archiv zpřístupní jako běžný adresář, ve kterém lze procházet soubory, kopírovat je nebo otevírat v libovolné aplikaci. Tato funkce je velmi užitečná pro obnovu jednotlivých souborů — místo extrakce celého archivu si uživatel může jednoduše procházet zálohu a zkopírovat pouze potřebné soubory.

Pruning — správa retence archivů

Příkaz borg prune umožňuje automaticky mazat staré archivy podle konfigurovatelných pravidel retence. Uživatel může definovat, kolik archivů si přeje zachovat za hodinu, den, týden, měsíc a rok. Borg poté inteligentně vybere archivy, které odpovídají pravidlům retence, a ostatní smaže.

Příklad pravidel retence: zachovat všechny archivy z posledních 7 dnů, jeden archiv za týden za poslední 4 týdny, jeden archiv za měsíc za posledních 12 měsíců a jeden archiv za rok za poslední 3 roky. Tato flexibilita umožňuje najít optimální rovnováhu mezi úložným prostorem a historií záloh.

Pattern-based exclusions — filtrování souborů

BorgBackup podporuje pokročilé filtrování souborů pomocí vzorů (patterns). Uživatel může definovat, které soubory a adresáře se mají zahrnout do zálohy nebo z ní vyloučit. Podporovány jsou shell-style vzory (*, ?, [abc]), regulární výrazy a speciální vzory pro cesty. Vzory lze definovat přímo na příkazové řádce nebo v externím souboru.

Typické příklady vyloučení zahrnují dočasné soubory, cache adresáře, logy a systémové soubory, které není třeba zálohovat. Správné nastavení filtrů může výrazně zrychlit zálohu a snížit nároky na úložiště.

Checkpoint/Resume — obnovení přerušené zálohy

Při zálohování velkých objemů dat může dojít k přerušení procesu — ať už kvůli výpadku sítě, restartu systému nebo jinému problému. BorgBackup vytváří pravidelné kontrolní body (checkpoints) během zálohy. Pokud je záloha přerušena, při příštím spuštění Borg automaticky detekuje nedokončený archiv a pokračuje od posledního kontrolního bodu. Uživatel tak nemusí zálohu spouštět od začátku.

Borg check — ověření integrity

Příkaz borg check provádí ověření integrity repozitáře a archivů. Kontroluje konzistenci interních datových struktur, ověřuje hashe bloků dat a detekuje případné poškození. Borg check by měl být spouštěn pravidelně jako součást údržby repozitáře, aby se včas odhalily případné problémy s úložištěm.

Borg diff — porovnání archivů

Příkaz borg diff umožňuje porovnat dva archivy a zobrazit rozdíly mezi nimi. Uživatel vidí, které soubory byly přidány, odstraněny nebo změněny. Tato funkce je užitečná pro auditování změn, sledování neočekávaných modifikací souborů nebo jednoduše pro pochopení toho, co se na systému změnilo mezi dvěma zálohami.

Kompletní dokumentace Podrobnou dokumentaci všech funkcí BorgBackupu najdete na oficiálních stránkách projektu na borgbackup.readthedocs.io. Dokumentace obsahuje detailní popisy všech příkazů, konfigurační volby a příklady použití.