.. Zdroj: elza/docs/admin-guide/source/09-backup.rst, elza e87a93d6d1

.. _admin_backup:

====================
Zálohování a obnova
====================

Co zálohovat
============

Elza uchovává data na dvou místech, která tvoří jeden celek:

- **databáze**,
- **adresář dms** pracovního adresáře (:file:`<workingDir>/dms`)
  s přílohami, vygenerovanými výstupy, publikacemi a soubory importních
  dávek. Databáze odkazuje na každý soubor jeho cestou v tomto adresáři.

Obojí je nutné zálohovat a obnovovat společně, ze stejného okamžiku.
Databáze obnovená bez odpovídajícího adresáře :file:`dms` odkazuje na
chybějící soubory; soubory bez záznamu v databázi se považují za
osiřelé.

Zbytek pracovního adresáře zálohovat není nutné: balíčky jsou součástí
distribuce a ostatní data aplikace znovu vytvoří. Konfiguraci
(:file:`config/elza.yaml`) zálohujte spolu s ostatní konfigurací serveru.

Zálohovat lze i celý virtuální počítač, pokud je snímek databáze a
souborového systému konzistentní.

.. _admin_backup_db:

Databáze
========

Tabulky ``ap_cached_access_point`` a ``arr_cached_node`` jsou cache
automaticky obnovované při startu; jejich obsah lze ze zálohy vynechat
(jejich definici nikoli). Příklad:

.. code-block:: bash

   pg_dump -Fc --exclude-table-data=ap_cached_access_point \
               --exclude-table-data=arr_cached_node \
               -U elza -f elza.dump elza

Velikost zálohy středně velké instalace je v řádu jednotek gigabajtů.
Při použití instalačních skriptů zálohuje databázi pravidelně příkaz
``elza-backup`` s příslušným časovačem (viz
https://get.lightcomp.com/elza/).

.. _admin_backup_files:

Adresář dms
===========

Adresář zálohujte po databázi, nebo obojí při zastavené aplikaci. Soubor
vzniklý mezi oběma zálohami je pak jen osiřelým souborem, což nevadí.
Například:

.. code-block:: bash

   rsync -a --delete /opt/elza/work/dms/ /backup/elza/dms/

Mazané soubory se nejprve přesouvají do :file:`dms/_trash/<datum>/` a
odstraní se po ``elza.dms.trashRetentionDays`` (výchozí 30 dní); koš
zálohovat není nutné.

Frekvence a doba uchování
=========================

Frekvence závisí na organizaci a na objemu práce v aplikaci. Typické
nastavení:

========================= ===================================
Položka                   Frekvence
========================= ===================================
Úplná záloha databáze     denně nebo týdně, například ve 2:00
Adresář dms               po záloze databáze
Před každou aktualizací   vždy, obojí
========================= ===================================

Uchovávejte alespoň posledních osm týdenních záloh a vybrané zálohy po
delší dobu, například roční zálohy po dobu deseti let. Elza uchovává
archivní popis dlouhodobě, proto musí být možné napravit i chybu zjištěnou
se zpožděním.

Obnova
======

#. Zastavte aplikaci.
#. Vytvořte prázdnou databázi se stejným vlastníkem a locale podle
   :ref:`admin_install_db`, ale bez vytvoření rozšíření PostGIS; záloha je
   obsahuje. Obnovu proveďte jako superuživatel, protože vytvoření
   rozšíření to vyžaduje:

   .. code-block:: bash

      pg_restore -U postgres -d elza elza.dump

#. Obnovte adresář :file:`dms` ze stejného okamžiku.
#. Spusťte verzi Elzy, se kterou byla záloha pořízena. Novější verze data
   při startu migruje; starší verze je přečíst nedokáže.
#. Počkejte na spuštění aplikace; cache se obnoví při startu.
