codebros care
Integrace

Zálohy

Co care zálohuje, jak často, kam to ukládá, jak dlouho to drží a jak se z toho web obnoví.

Ceník slibuje zálohu mimo váš server. Tahle stránka říká přesně, co to znamená - včetně toho, co zálohované není.

Co a jak často

KdyCo
dbkaždou noccelá databáze WordPressu
fulljednou týdnědatabáze i soubory (wp-content)

Slib zní „denní záloha". Denně jede databáze, soubory týdně. wp-content se mezi dny skoro nemění a jde o stovky megabajtů - denní kopie by znamenala platit každou noc za totéž. Prakticky to znamená: obsah, objednávky a nastavení máte ze včerejška, nahraný obrázek starý tři dny může chybět.

Zálohy běží v noci, rozprostřené mezi 1:00 a 6:00 českého času podle webu - ne všechny naráz.

Podporované jsou dva typy hostingu: WordPress přímo na serveru (přes wp-cli) i WordPress v Dockeru (např. Coolify) - tam se dump i soubory berou z kontejnerů přes docker exec. Obsah, šifrování a kontroly jsou v obou případech stejné.

Kam se ukládá

Cloudflare R2, bucket s evropskou jurisdikcí (data neopustí EU; nastavuje se při vzniku bucketu a je to nevratné). Tedy jiná infrastruktura než server, na kterém web běží - o to v tom slibu jde. Když shoří server, záloha zůstane.

Přístupový token je omezený na jeden bucket. Kdyby unikl, na cizí zálohy nedosáhne.

Druhá lokace (připravujeme)

Počítáme s druhou, nezávislou kopií záloh na vlastním úložišti mimo Cloudflare (v EU). Důvod: dnes leží všechny kopie u jednoho poskytovatele a jediný ztracený účet - kompromitace, omyl v lifecycle pravidlech, billing - by znamenal ztrátu všech záloh najednou. Druhá lokace kryje přesně tuhle třídu rizik.

Pravidla, za kterých vznikne:

  • Pull, ne push. Úložiště si kopie stahuje samo přes read-only token. Produkce na něj nemá žádný přístup, takže její kompromitace nemůže zničit i druhou kopii.
  • Jen šifrovaný obsah. Na úložišti leží ciphertext; dešifrovací klíče tam nejsou.
  • Read-only snapshoty, aby chybný sync nebo ransomware nesmazal i kopie.
  • Hlídá se stáří kopie, ne jen její existence - stejně jako u kontroly pokrytí níž.
  • Zálohy na druhou lokaci nijak nečekají; je to pasivní druhý čtenář R2.

Dokud tahle sekce říká „připravujeme", druhá lokace neexistuje - jediné úložiště je R2.

Šifrování

Vše je zašifrované před uložením do R2; klíče drží care, ne Cloudflare. Bez klíče je záloha jen šum, a bez nastaveného klíče záloha neproběhne - nešifrovaně ukládat odmítáme, i za cenu chybějící zálohy.

Dvě cesty podle druhu:

  • Databáze se šifruje u nás (libsodium, XChaCha20-Poly1305, chunkovaně) a ukládá přes naši infrastrukturu.
  • Soubory šifruje přímo váš server nástrojem age - veřejným klíčem. Na serveru tedy neleží žádné tajemství a zašifrovaný archiv nahraje server rovnou do R2 přes jednorázovou předpodepsanou URL. Dešifrovat umí jen držitel privátního klíče, a ten v žádném běžícím systému není - existuje jen pro obnovu.

Jak dlouho zálohy držíme

TarifRetence
Základ, Péče30 dní
Partner90 dní

Retence se ukládá na řádek zálohy v okamžiku jejího vzniku. Pozdější změna tarifu tedy zpětně nesmaže historii, kterou už máte zaplacenou. Mazání obstarávají lifecycle pravidla přímo v R2 - nezávisle na tom, jestli náš kód běží.

Co zálohované není

  • Statický frontend (Netlify, Gatsby a spol.). Vygenerovaný build je artefakt - zdroj pravdy je git repozitář. Zálohovat vygenerované HTML nedává smysl.
  • Weby mimo WordPress. Zatím.
  • Soubory mimo wp-content. Jádro WordPressu se stáhne znovu, konfigurace je v záloze databáze.

Co se kontroluje

Každá záloha projde kontrolou, ještě než ji označíme za hotovou:

  • dump jde rozbalit (kontrolní součet gzipu),
  • končí značkou -- Dump completed - chytá useknutý dump, nejčastější tichou vadu,
  • obsahuje tabulky users a options s prefixem z wp-config.php (wp_users, bs_users...),
  • počet tabulek sedí s tím, co hlásí databáze,
  • velikost neklesla o víc než polovinu proti minulé záloze.

Záloha, která neprojde, se označí jako selhaná. Záloha, které nevěříme, není záloha.

Tomuhle říkáme kontrola integrity, ne „ověřená záloha". Dokazuje, že soubor má tvar celého dumpu - ne že se z něj web postaví. To dokazuje až obnova do prázdné databáze, kterou děláme zvlášť.

Nad tím vším běží každou noc kontrola pokrytí: web, kterému zálohu slibujeme a nemá čerstvou zálohu databáze (do 48 hodin) nebo souborů (do 10 dnů), spustí alert. Každý druh se hlídá zvlášť, aby denní dump nezakryl výpadek týdenní zálohy souborů. Ptá se na výsledek, ne na to, jestli je rozvrh zapnutý - chytá tedy vypnutý rozvrh, spadlý cron i vypršelý SSH přístup naráz.

Jak se web obnoví

Napište nám. Obnova je ruční úkon - potřebuje rozhodnutí, ke kterému bodu se vracíte a co se mezitím na webu stalo.

Technicky: objekt z R2 → dešifrovat (databáze naším klíčem, soubory age identitou) → rozbalit → naimportovat. U full navíc rozbalit wp-content.

Osobní údaje

Záloha databáze WordPressu obsahuje osobní údaje (uživatelé, e-maily, komentáře, objednávky). Tím se care stává zpracovatelem - patří to do zpracovatelské smlouvy. Cloudflare je subdodavatel, jurisdikce EU, retence 30/90 dní, šifrování v klidu.

Pro agenty

Job typu backup, instructions = {"kind":"db"} nebo {"kind":"full"}. Jediný typ úkolu, který neběží přes LLM - jede deterministickým executorem. Důvod je v datovém modelu: agent smí prohlásit „záloha proběhla", aniž proběhla, a u dat to nepřipadá v úvahu.

On this page