V následující části si ukážeme postup obnovy webu nebo aplikace ze zálohy, která je dostupná na virtuálním serveru. Běžné stránky ukládají údaje do souborů a do databáze. V návodu si tedy popíšeme, jak obnovit zvlášť soubory a jak obnovit databázi.
Požadavky na server
- Návod je psaný pro aktuální distribuce OS Ubuntu LTS (14.04, 16.04, 18.04)
- Na server je potřeba mít přístup přes protokol SSH, s root (nebo sudo privilegiemi)
- K serveru je potřeba mít zakoupenou službu Zálohování serveru
Jako první krok zkontrolujeme aktuálnost záloh přes webadmina. Zálohy se nacházejí mimo server tak, aby se nezapočítávaly do diskové kapacity. K serveru jsou připojené přes síť, tzv. mountem do složky /backups. Mount zkontrolujeme příkazem:
root@vps:~# mount | grep /backup
backup3.websupport.cz:/ssd_backups/vps-cust/abcdefgh-1234-5678-ijkl-mnoprstuvxyz/ on /backups type nfs
Obnova souborů
Na obnovu souborů použijeme program rsync, který je při kopírovaní dat velmi efektivní. V případě, že se na Vašem VPS nenachází, instalace je jednoduchá:
root@vps:~# apt-get install rsync -y
Samotné kopírování souborů spustíme příkazem níže. Používáme tedy program rsync, kde určujeme přepínače na archivaci (rychlejší přenos dat -a), na detailnější průběh kopírování (verbose -v), a na přepsání souborů těmi ze zálohy (tedy abychom obnovili všechno ze zálohy –delete).
root@vps:~# rsync -av --delete <source> <destination>
Source bude v našem případě záloha, ze které jdeme soubory obnovovat, destination zase cíl, kam obnovujeme. Za předpokladu, že obnovujeme celý adresář /data/web/domena.tld/web z datumu 20.10.2010, doporučujeme použít následovný příkaz:
root@vps:~# rsync -av --delete /backups/.zfs/snapshot/2010-10-20-00:30:00/root/data/web/domena.tld/web /data/web/domena.tld/web
Samotný datum, jako i web můžete samozřejmě dynamicky měnit podle potřeby. Zálohy jsou dostupné po dobu posledních 14 dní.
Obnova databáze
Kompletní obnova webu je většinou podmíněná i obnovou samotné databáze. Tento krok doporučujeme udělat ze stejného času, z jakého byly obnovené soubory. Dodatečné zálohy databází můžeme najít vylistováním dané složky (tedy například pro datum 20.10.2010):
root@vps:~# ls -la /backups/.zfs/snapshot/2010-10-20-00:30:00/mysql
total 77
drwxr-xr-x 6 root root 6 Oct 20 18:45 .
drwxr-xr-x 4 root root 4 May 30 18:55 ..
drwxr-xr-x 2 root root 9 Oct 19 18:35 2010-10-19_18-35
drwxr-xr-x 2 root root 9 Oct 20 02:40 2010-10-20_02-40
drwxr-xr-x 2 root root 9 Oct 20 10:40 2010-10-20_10-40
drwxr-xr-x 2 root root 9 Oct 20 18:45 2010-10-20_18-45
Protože chceme obnovit databázi co nejblíže k datumu obnovy souborů, vybereme čas 02:40 – tedy složku 2010-10-20_02-40.
root@vps:~# ls -la /backups/.zfs/snapshot/2010-10-20-00:30:00/mysql/2010-10-20_02-40
total 4439
drwxr-xr-x 2 root root 9 Oct 20 02:40 ./
drwxr-xr-x 6 root root 6 Oct 20 02:40 ../
-rw-r--r-- 1 root root 57386 Oct 20 02:40 databaza.sql.gz
Následně můžeme obnovit databázi z daného dumpu. Na spuštění tohoto příkazu potřebujeme jméno databáze, jméno uživatele a heslo uživatele. Nejprve zálohu databáze doporučujeme zkopírovat například do home složky:
root@vps:~# cp /backups/.zfs/snapshot/2010-10-20-00:30:00/mysql/2010-10-20_02-40/databaza.sql.gz ~/databaze.sql.gz
Potom databázi dekomprimujeme příkazem gunzip, čímž vznikne soubor databaze.sql:
root@vps:~# gunzip ~/databaza.sql.gz
A posledním krokem importujeme zálohu databáze namísto aktuální databáze (je potřeba nahradit user_name za jméno uživatele databáze, user_pass za heslo, a db_name za název databáze):
mysql -uuser_name -puser_pass -h localhost db_name < ~/databaza.sql
Příklad jako příkaz vypadá při jednoduchém jménu (databáze) uživateli (databáze) i hesle (heslo123):
mysql -udatabaza -pheslo123 -h localhost databaza < ~/databaza.sql
Přečtěte si článek, jak dokážete přistupovat k vašim zálohám na virtuálním serveru.