Le contenu important de notre poste de travail est sauvegardé sur 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 nos fichiers vers ce disque, nous utilison 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.
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 :
- L'option *-av* signifie archive verbeuse. C'est-à-dire que nous effectuons une archive et que nous voulons que le logiciel affiche toutes les opérations effectuées.
- L'interrupteur *--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és depuis la dernière sauvegarde. Si nous effectuons une sauvegarde programmée à l'avance, nous conseillons 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.
*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, ajoutée à la commande.
Pour garder des copies de sauvegarde de tous nos projets en cours et de nos contenus pour le web, nous utilisons Nextcloud, qui est installé sur notre serveur en auto-hébergement.
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 nous protéger contre les incidents physiques.
Nous ajoutons à cela le fait que notre répertoire local de Nextcloud est aussi sauvegardé sur notre disque externe avec rsync, tel que présenté précédemment.
Les fichiers qui changent rapidement, tels que ceux contenant du code, doivent avoir leur propre mécanisme de sauvegarde qui permet des retours arrière illimités, ainsi qu'une gestion des versions. Pour ce faire, nous utilisons un système qui est maintenant omniprésent chez les développeurs et développeuses : *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, pour ceux tentés par l'auto-hébergement, nos recommandons 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. Donc, *git* est un système de sauvegarde très performant.
[Borg](https://www.borgbackup.org/) est un logiciel de gestion de sauvegarde qui est spécialisé dans la sauvegarde avec cryptographie. Si nous choisissons de sauvegarder nos données sur un service infonuagique, il est **très fortement recommandé** de les crypter avant l'envoi.
Borg est basé sur rsync et offre des fonctions spécifiques telles que la compression et la gestion des versions de sauvegardes. De ce fait, il est le candidat tout indiqué pour faire des sauvegardes fréquentes, sécuritaires et sans entretien.