IN CASE OF EMERGENCY
====================

This file describe the process of backing up, and restoring data saved
on a host.

TL;DR
-----
        # init!
        dup-keygen /etc/dedup.key
        dup-init -k /etc/dedup.key -E XChaCha20-Poly1305 /var/dedup/$(hostname -f)
        safe -s ~/passwords -a dedup-key < /etc/dedup.key

        # backup!
        tar -cf - $HOME | dup-pack -k /etc/dedup.key -r /var/dedup/$(hostname -f) $(date +\%Y\%m\%d)

        # restore!
        safe -s ~/passwords dedup-key > /etc/dedup.key
        dup-unpack -k ~/backup/dedup.key -r ~/dedup $ARCHIVE | tar -C / -xf -


Backing up
----------
The following tools are necessary to the backup process:

* [dedup][0]: save/compress/encrypt data in a store
* [safe][1]: passphrase encrypted storage for secrets
* [tar][2]: archive content
* [rclone][3]: synchronise data with remote clouds

### Preparation

Before proceeding to the actual backup, some tools need to be configured.

        # création de la clé / initialisation du repo de sauvegarde
        dup-keygen /etc/dedup.key
        dup-init -k /etc/dedup.key -E XChaCha20-Poly1305 /var/dedup/$(hostname -f)

        # export de la clé dans le gestionnaire de mot de passe
        </etc/dedup.key safe -s ~/passwords -a dedup-key

        # configuration de l'accès cloud (ici [backblaze b2][4])
        rclone config create backblaze b2 key $KEY account $KEYID

### Archivage

Les données sont archivées, dédupliquées et chiffrées grâce à la
commande suivante. Chaque exécution de cette commande va créer un
snapshot du dossier `$HOME`, et peut ainsi être éxécutée chaque jour
via une tâche `cron` (attention à échapper les signes %).

        tar -cf - $HOME | dup-pack -k /etc/dedup.key -r /var/dedup/$(hostname -f) $(date +\%Y\%m\%d)

_Note_: Chaque archive (snapshot) sera daté format YYYYMMDD

### Export

L'export des données est une étape importante car elle permet de
s'assurer que les données soient accessible en un autre endroit en cas
de restauration.
_Note_: l'export des mots de passe est TRÈS important, car il contient
la clé de chiffrement de `dedup`.

	rclone mkdir backblaze:dedup-repo
        rclone copy /var/dedup/$(hostname -f) backblaze:dedup-repo/$(hostname -f)

	rclone mkdir backblaze:safe-store
        rclone copy ~/passwords backblaze:safe-store


Restauration
------------
En cas de perte de données, vol du poste, corruption, …, la première
étape est de vérifier d'être en possession des points suivants:

* mot de passe `safe(1)`
* login / mot de passe Backblaze

Les commandes suivantes permettrons ensuite de restaurer les données
dans un dossier `$HOME/restore`. Il est important de s'assurer que
l'espace disque nécessaire soit disponible.

_Note_: Il peut être pratique de stocker des versions statique des
binaires `safe` et `dup-unpack` avec les backups, pour être certain de
pouvoir extraire la clé de déchiffrement.

### Préparation

La première étape est de récupérer les archives en local, afin de
pouvoir les traiter. Pour cela, il peut être nécessaire de reconfigurer
rclone:

        rclone config create backblaze b2
        rclone config update backblaze account $KEYID
        rclone config update backblaze key $KEY

Il faut ensuite récupérer les données en local, et recréer la clé de chiffrement:

        rclone copy b2:backup ~/
        safe -s backup/passwords dedup-key > ~/backup/dedup.key

À ce niveau, la restauration des données peut être lancée depuis
une archive donnée:

        mkdir -p $HOME/restore/$DATE
        dup-unpack -k ~/backup/dedup.key -r ~/backup/dedup $DATE | tar -C $HOME/restore/$DATE -xf -

[0]: git://git.2f30.org/dedup
[1]: git://git.z3bra.org/safe
[2]: https://en.wikipedia.org/wiki/Tar_%28computing%29
[3]: https://rclone.org
[4]: https://backblaze.com/b2