Zálohování serverů pomocí duplicity

Jedna se základních věcí patřících k serverům je zálohování. Na první pohled nejde o žádnou vědu, stačí přece jednou za čas zkopírovat web a databázi do svého home adresáře je vystaráno. Nebo ne?

Jak nezálohovat

Výše uvedený příklad má dvě chyby. Zálohu děláte jednou za čas, kdy si vzpomenete a v případě havárie disků přijdete jak o data, tak o zálohy. Toto riziko může snížit dobře nakonfigurované RAID pole, které ale nezabrání neúmyslnému smazání dat způsobenému například lidskou chybou, případně útokem na Váš server. Také nezálohujete konfiguraci serveru, v případě že Vám odejde RAID pole, bude jeho obnova časově náročná.

Co musí splňovat funkční zálohování

Správně nakonfigurované zálohování musí mít tyto vlastnosti:

  • offsite uložení – Vaše zálohy nesmí být na stejném serveru, jako jsou samotná data. Ideální je, mít je v jiném fyzickém umístění, např. v jiné serverovně.
  • zálohování pouze potřebných dat – mnoho věcí na serveru není potřeba zálohovat, případně stačí je zálohovat méně často
  • šifrování – nikdo, ani správce serveru kde máte své zálohy je nesmí dokázat přečíst, dokud mu to nedovolíte
  • konzistenci – zálohovaná data musí být konzistentní a bez problému obnovitelná
  • inkrementální zálohy – je potřeba ukládat jen změněná data, nemá smysl duplikovat v záloze data, která se nemění
  • kontrolu a obnovu – nejdůležitější části zálohování není vytvoření zálohy, ale naopak její snadná obnova. K správně nastavenému zálohování patří i pravidelné testy fukčnosti záloh

Z běžně dostupných zálohovacích nástrojů všechny tyto vlastnosti software duplicity. K úplnému ideálu ji chybí deduplikace dat. Ta je  ale obecně u šifrovaných záloh implementačně velmi obtížná., proto se bez ní musíme obejít. Duplicity dokáže také zapisovat těméř na libovolné úložiště (ve výběru jsou například ftp, ssh, rsync, Amazon S3, WebDAV a další).

Nastavení a spouštění

Abych jen nechválil, duplicity má jednu slabost a to konfigurační soubory, resp. jejich neexistenci. Veškeré parametry musíte zadávat do příkazové řádky, případně si jejich volání obalit do skriptů. K vytvoření skriptů je dobré znát základní syntaxi, uvedu proto několik příkladů. Skripty byly zkoušeny na distribuci Debian Squeeze.

Vytvoření inkrementální zálohy adresáře /etc/. Pokud je poslední plná záloha starší, než 6 dní, tak vytvoř místo inkrementální další plnou zálohy. Při nahrání skrz ssh použíj klíč /root/.ssh/id_dsa_backup:

PASSPHRASE="TajnaASlozitaPassphrase"\
 duplicity --full-if-older-than "6D" --ssh-options "-i /root/.ssh/id_dsa_backup"\
 /etc/ scp://uzivatel@server/etc/

Pro vytvoření inkrementíální zálohy není třeba zadávat žádný parametr. Pokud chceme explicitně vytvořil plnou  zálohu přidáme slůvko full:

PASSPHRASE="TajnaASlozitaPassphrase"\
 duplicity full --ssh-options "-i /root/.ssh/id_dsa_backup"\
 /etc/ scp://uzivatel@server/etc/

Když potřebujeme získat seznam  záloh:

PASSPHRASE="TajnaASlozitaPassphrase"\
 duplicity collection-status --ssh-options "-i /root/.ssh/id_dsa_backup"\
 scp://uzivatel@server/etc/

Pročištění záloh starších, než 28 dní:

PASSPHRASE="TajnaASlozitaPassphrase"\
 duplicity remove-older-than "28D" --force --ssh-options "-i /root/.ssh/id_dsa_backup"\
 scp://uzivatel@server/etc/

Pokud se Vám během tvorby zálohy například přeruší spojení, zbydou po nedokončené záloze nepoužitelné soubory, jejich pročištění zajistíte pomocí příkazu cleanup:

PASSPHRASE="TajnaASlozitaPassphrase"\
 duplicity cleanup --force --ssh-options "-i /root/.ssh/id_dsa_backup"\
 scp://uzivatel@server/etc/

Ověření platnosti zálohy je náročný proces, de facto se jedná o obnovu zálohy, kdy se obnovená data místo uložení zahodí. Duplicity postupně stáhne a dešifruje všechny soubory a tím otestuje, že je záloha konzistentní. Pokud by jste chtěli ověřit jen část souborů, je potřeba přidat direktivu –file-to-restore.

PASSPHRASE="TajnaASlozitaPassphrase"\
 duplicity verify --ssh-options "-i /root/.ssh/id_dsa_backup"\
 scp://uzivatel@server/etc/

A poslední, ale v žádném případě nedůležité, obnovení zálohy, v tomto příkladu obnovení 3 dny starých suborů:

PASSPHRASE="TajnaASlozitaPassphrase"\
 duplicity -t "3D" --ssh-options "-i /root/.ssh/id_dsa_backup"\
 scp://uzivatel@server/etc/ /home/etc/

Závěrem

Duplicity je velmi dobrý zálohovací nástroj, pokud potřebujete zálohovat server a chcete mít jistotu, že budou Vaše zálohy v bezpečí. Pomocí skriptů z něj můžete naskriptovat plnohodnotné zálohování, které pak „prostě poběží“. Pokud by jste se s nechtěli zabývat skriptováním, můžete se porozhlédnout na internetu, například na githubu najdete už hotový skript duplicity-backup, případně Vám mohu zálohování nakonfigurovat.

 

Komentování je uzavřeno.