1. Báza znalostí
  2. Cloud a servery
  3. Virtuálny server (VPS)
  4. Obnova webovej stránky zo záloh na virtuálnom serveri

Obnova webovej stránky zo záloh na virtuálnom serveri

V tomto návode si ukážeme postup obnovy webu alebo aplikácie zo zálohy, ktorá je dostupná na virtuálnom serveri. Stránky si najčastejšie ukladajú údaje do súborov a do databázy – popíšeme si preto ako obnoviť zvlášť súbory a ako obnoviť databázu.

PREDTÝM NEŽ ZAČNEME

Požiadavky na server

  • Návod je písaný pre aktuálne distribúcie OS Ubuntu LTS (18.04, 20.04, 22.04)
  • Na server je potrebné mať prístup cez protokol SSH, s root užívateľom (alebo sudo privilégiá)
  • K serveru je potrebné mať zakúpenú službu Zálohovanie servera

Ako prvý krok skontrolujeme prístup k zálohám. Zálohy sa nachádzajú mimo Vášho servera, aby sa nezarátavali do diskovej kapacity a aby boli dostupné aj v prípade, že by sa s Vaším serverom niečo stalo. K Vášmu serveru su pripojené cez sieť, tzv. mountom do priečinka /backups. Pre jednoduchosť si to môžete predstaviť ako USB kľúč zapojený do Vášho počítača, ktorý ale môžete odpojiť a bezpečne odložiť, či pripojiť do iného zariadenia. Mount skontrolujeme príkazom:

root@vps:~# mount | grep /backup
backup8.websupport.sk:/ssd_backups/vps-cust/abcdefgh-1234-5678-ijkl-mnoprstuvxyz/ on /backups type nfs
Informácia

Ak výstup neobsahuje žiadny mount a službu zálohovania servera máte zakúpenú, najčastejšie ide o „odpojený USB kľúč“, teda dáta nie sú moutnuté na Vašom serveri. V takom prípade prosím kontaktujte našu podporu.

OBNOVA

Obnova súborov

Na obnovu súborov použijeme program rsync, ktorý je pri kopírovaní dát veľmi efektívny. V prípade že sa na Vašom VPS nenachádza, inštalácia je jednoduchá:

root@vps:~# apt-get install rsync -y

Samotné kopírovanie súborov spustíme príkazom nižšie. Pre rsync príkaz určíme prepínače na kompresiu (rýchlejší prenos dát -a), na detailnejší priebeh kopírovania (verbose -v), a na prepísanie súborov tými zo zálohy (teda aby sme obnovili všetko zo zálohy –delete).

root@vps:~# rsync -av --delete <zdroj> <ciel>

Zdroj bude v našom prípade záloha, z ktorej ideme súbory obnovovať, cieľ zasa miesto, kam obnovujeme. Za predpokladu, že obnovujeme celý adresár /data/web/domena.tld/web z dátumu 2.4.2023, odporúčame použiť nasledovný príkaz:

root@vps:~# rsync -av --delete /backups/.zfs/snapshot/2023-04-02-13:40:23/root/data/web/domena.tld/web/ /data/web/domena.tld/web

Samotný dátum, ako aj cestu k dátam môžete samozrejme dynamicky meniť podľa potreby. Zálohy sú dostupné po dobu posledných 14 dní, vylistovať si ich viete pomocou príkazu ls, ktorý použijete na priečinok /backups/.zfs/snapshot:

root@vps:/backups/.zfs/snapshot# ls -al
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-03-22-13:21:34
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-03-23-13:20:48
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-03-24-13:22:08
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-03-25-13:32:22
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-03-26-13:24:22
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-03-27-13:30:08
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-03-28-13:30:53
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-03-29-13:34:27
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-03-30-13:35:19
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-03-31-13:35:10
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-04-01-13:39:30
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-04-02-13:40:23
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-04-03-13:44:52
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-04-04-13:48:38
drwxr-xr-x 4 root root 4 Aug 25  2022 2023-04-05-13:49:40
Informácia

Ak v priečinku /backups nevidíte priečinok .zfs, je to v poriadku – tento priečinok je schovaný, je však možné s ním normálne pracovať.

Obnova databázy

Kompletná obnova webu je väčšinou podmienená aj obnovou databázy, ktorá je k nemu pripojená. Buďte ale opatrní, nakoľko databáza môže obsahovať dáta, o ktoré nechcete prísť (napr. v prípade eshopov sú to objednávky). Pri takejto obnove prídete o všetko, čo bolo do databázy zapísané po vytvorení zálohy.
Tento krok odporúčame spraviť z rovnakého času, z akého boli obnovené súbory. Dodatočné zálohy databáz môžeme nájsť vylistovaním daného priečinku (teda napríklad pre dátum 2.4.2023):

root@vps:/backups/.zfs/snapshot/2023-04-02-13:40:23/mysql# ls -al 
total 39
drwxr-xr-x 4 root root 4 Apr  2 13:40 .
drwxr-xr-x 4 root root 4 Aug 25  2022 ..
drwxr-xr-x 2 root root 7 Apr  1 13:30 2023-04-01_13-30
drwxr-xr-x 2 root root 7 Apr  2 13:31 2023-04-02_13-30
Informácia

Frekvenciu zálohovania databáz je možné nastaviť na inú hodnotu ako pri zálohovaní dát, môžete mať teda pre jeden deň viacero dumpov.

Nakoľko chceme obnoviť databázu čo najbližšie k dátumu obnovy súborov, vyberieme priečinok 2023-04-02_13-30:

(Managed) root@inlibri:/backups/.zfs/snapshot/2023-04-02-13:40:23/mysql/2023-04-02_13-30# ls -al
-rw-r--r-- 1 root root    59913 Apr  2 13:31 databaza.sql.gz
-rw-r--r-- 1 root root 32571502 Apr  2 13:31 databaza_dev.sql.gz
-rw-r--r-- 1 root root   382999 Apr  2 13:31 databaza_test.sql.gz

Následne môžeme obnoviť konkrétnu databázu z dumpu – teda .sql súboru, ktorý obsahuje dáta z databázy. Do príkazu zadávame meno databázy, meno používateľa a heslo používateľa – v prípade root prístupu však nemusia byť tieto údaje potrebné.

Informácia

Obnovu je najlepšie vykonávať do novo vytvorenej databázy, aby vám v prípade potreby ostala pôvodná zachovaná. Uistite sa, že ste na novú databázu nasmerovali svoj web pomocou úpravy jeho konfigurácie.

Najprv zálohu databázy odporúčame skopírovať napríklad do home priečinku:

root@vps:~# cp /backups/.zfs/snapshot/2023-04-02-13:40:23/mysql/2023-04-02_13-30/databaza.sql.gz ~/databaza.sql.gz

Najjednoduchší spôsob obnovy je kombinácia príkazu zcat na prečítanie komprimovaného súboru, a následne mysql na nahratie obsahu do databázy:

root@vps:~# zcat databaza.sql.gz | mysql -u user_name -p -h localhost db_name

user_name = užívateľ, s ktorým sa pripájate do databázy
db_name = názov databázy

Po spustení príkazu bude potrebné ešte zadať heslo pre databázového užívateľa (z hľadiska bezpečnosti ho neodporúčame vkladať priamo do príkazu). Ak máte root užívateľa bez nutnosti zadávania hesla, bude stačiť aj takáto forma príkazu:

root@vps:~# zcat ~/databaza.sql.gz | mysql db_name

Druhá možnosť je dump najprv dekomprimovať príkazom gunzip, čím vznikne súbor databaza.sql, a potom ho nahrať do databázy:

root@vps:~# gunzip ~/databaza.sql.gz
root@vps:~# mysql -u user_name -p -h localhost db_name < ~/databaza.sql

Hotovo, dáta sú obnovené. Ak sa web po obnove nenachádza v želanom stave, skúste postup zopakovať so staršou zálohou.

Aktualizované 5. apríla 2023

Bol pre vás tento návod nápomocný?

Mohlo by vás tiež zaujímať:

Spýtajte sa nás, radi poradíme
Po - Ne 8:00-22:00
Kontaktovať podporu