# Sauvegarder ses données

## Sauvegarder son poste de travail: rsync

Pour sauvegarder l'ensemble du contenu important de mon poste de travail, j'utilise un disque dur externe. C'est une méthode abordable qui respecte un des principes d'une bonne sauvegarde: être hors-ligne.

Pour transférer mes fichiers vers ce disque, j'utilise un logiciel en ligne de commande qui fait exactement ça, des copies. C'est `rsync` (pour Remote Sync). Il est disponible sur macOS et sur GNU/Linux sans installation additionnelle.

### Installation sur Windows

Sur Windows, si vous avez installé MSYS2 que j'ai présenté au chapitre 1, alors pour obtenir rsync, il suffit de l'installer avec la commande suivante:

```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
pacman -Syu rsync
```

Note: Dans MSYS2, les répertoires sont représentés à la manière de Linux. Donc, le disque `C:\` se situe plutôt dans `/c/`

### La seule commande à retenir

Comme la majorité des logiciels provenant du monde GNU/Linux, rsync possède de nombreuses options. Cependant pour notre besoin, une seule commande est à retenir. Elle s'écrit comme suit:

```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"}
rsync -av \
--progress \
--delete \
/source/mondossier \
/destination/mondossier
```

Voici le détail des options:

- `-av` signifie archive verbose. C'est à dire que nous effectuons une archive et que nous voulons que le logiciel affiche toutes les opérations effectuées.
- `--progress` signifie d'afficher l'état d'avancement de la synchronisation.
- `--delete` signifie de supprimer les fichiers sur la destination qui n'existent plus sur la source. Ceci nous empêche de conserver de vieux fichiers qui ont été supprimé depuis la dernière sauvegarde. Si vous effectuez une sauvegarde automatisée, je vous conseille de supprimer cette option et de refaire une exécution manuelle de temps en temps, en prenant soin de tester l'exécution comme suit.

### Tester avant d'exécuter

rsync est un outil puissant et rapide qui ne pardonne pas les erreurs. Un conseil d'ami: toujours tester ses commandes rsync avec une exécution d'essai via l'option --dry-run, que l'on ajoute à la commande.

## Sauvegarder son contenu: Nextcloud

Pour garder des copies de sauvegarde de tous mes projets en cours et de mes contenus pour le web, j'utilise Nextcloud, qui est installé sur mon serveur en autohébergement.

![Capture d'écran de Nextcloud Fichiers](Images/nextcloud_fichiers_jevalideca.png)

Avec Nextcloud, l'avantage, c'est que j'ai une copie sur chacun de mes ordinateurs qui se garde synchronisée automatiquement.

![Capture d'écran du client Nextcloud local](Images/nextcloud_local_jevalideca.png)

De plus, le serveur permet de gérer les versions multiples des fichiers. Ce qui permet de réparer les erreurs de manipulation en plus de me protéger contre les incidents matériels.

![Capture d'écran du panneau des versions de Nextcloud Fichiers](Images/nextcloud_fichiers_versions_jevalideca.png)

J'ajoute à cela le fait que mon répertoire local de Nextcloud est aussi sauvegardé sur mon disque externe avec rsync, tel que je l'ai présenté précédemment.

## Code et fichiers texte: git

Les fichiers qui changent rapidement, tel que le code, doivent avoir leur propre mécanisme de sauvegarde qui permet des retours arrières illimités, ainsi qu'une gestion des versions. Pour ce faire, on utilise un système qui est maintenant omniprésent chez les développeurs: git.

Ce logiciel fonctionne de manière autonome, mais peut être utilisé comme mécanisme de sauvegarde en mode client et serveur. Du côté serveur, les services GitHub et GitLab sont les plus populaires. Mais, si comme moi vous êtes tentés par l'autohébergement, je recommande le logiciel [Gitea](https://gitea.io).

Les données qui sont communiquées à travers Git sont chiffrées et signées. Donc à chaque fois qu'une transaction a lieu entre un client et un serveur, il y a une certitude de l'intégrité des données. Git est donc en soi un système de sauvegarde très performant.

![Création d'un répertoire géré avec git](git_nouveau_repertoire.png)

## Serveurs et site web: Borg

[Borg](https://www.borgbackup.org/) est un logiciel de gestion de sauvegarde qui est spécialisé dans la sauvegarde avec cryptographie. Si vous choisissez de sauvegarder vos données sur un service infonuagique, il est **très fortement recommandé** de crypter vos données avant l'envoi.

Borg est basé sur rsync et offre des fonctionnalités spécifiques tel que la compression et la gestion des versions de sauvegardes. De ce fait, il est le candidat tout indiqué pour faire des sauvegardes automatisées, sécuritaires et sans entretien.
