Présentation
############

Restic est un outil opensource de sauvegarde fourni en tant qu'extra (beta) dans la suite logicielle Vitam. Son installation est optionnelle.

Il a pour but de simplifier la mise en oeuvre des sauvegardes des bases mongo sur les offres de stockages.

Ces sauvegardes sont utiles dans la reprise d'activité en cas de perte des bases de données (à minima les bases mongo-offer par défaut).

restic est déployé sur les machines du groupe [hosts_storage_offer_default] qui ont le paramètre `restic_enabled=true` de défini.

.. note:: Seuls les providers d'offres suivants sont supportés : `filesystem`, `filesystem-hash`, `openstack-swift-v3` et `amazon-s3-v2`.

Comment fonctionne Restic ?
---------------------------

L’outil Restic prend en charge les objets présents (fichiers et/ou sous arborescence) dans le répertoire qui lui est indiqué en ligne de commande. Dans notre cas, les dumps sont effectués sous ``/vitam/tmp/restic/backup/``.

La notion d’«Incremental For Ever»
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Techniquement, les sauvegardes Restic fonctionnent dans le mode suivant :

* Lors de la première sauvegarde, l’intégralité des données contenues dans le dossier à sécuriser sera recopiée et stockée dans ce repository.
* lors des sauvegardes suivantes, seuls les objets ajoutés ou modifiés seront sauvegardés.

La notion de sauvegarde totale ne s’applique donc que pour la toute première sauvegarde, les suivantes étant exclusivement incrémentales ; c’est le mode communément appelé « Incremental for ever ». Ce mécanisme permet de limiter drastiquement la volumétrie du flux de sauvegarde.

Les sauvegardes réalisées sont stockées sous forme de « snapshots » dans un repository hébergé sur l'offre de stockage.

La notion de snapshot
~~~~~~~~~~~~~~~~~~~~~

Dans le jargon Restic chaque sauvegarde est stockée sous la forme d’un snapshot et se voit attribuer un ID unique.

Le déclenchement des sauvegardes est réalisé via une crontab qui lance l'exécution du script ``/vitam/script/restic/restic_backup``.

La sauvegarde peut être effectuée manuellement en ligne de commande par l'exécution de ce même script.

Par défaut, la purge des anciens snapshots est automatisé lors de l'exécution de ce même script. La configuration du nombre de snapshots à conserver est personnalisable.
