Cela fait des années que je me dis qu’il faut que je prennes du temps pour mettre en place un vrai système de sauvegarde, et j’ai enfin trouvé le temps (youhou \o/).

Je me suis donc lancé dans la quête du meilleur outil pour faire ceci, pour cela, j’ai évalué mon besoin.

Analyse du besoin

Quoi sauvegarder ?

Les machines à sauvegarder

Déjà quels périphériques faut-il sauvegarder, dans mon cas, j’ai besoin de sauvegarder mes smartphones, tablettes, PCs (Linux et windows) et mes serveurs. Il me font donc une solution cross-platform.

Les données

Ensuite il y a la question des fichiers, là j’ai surtout besoin de sauvegarder mes données personnelles (photos, documents, sextape etc …), car si je perds ces données, ba je l’ai dans le cul.
Tout ce qui est films, séries et musiques, c’est toujours récupérable, donc OSEF.

La configuration de certaines de mes applications peut aussi être importantes, nous avons ici 2 types de fichier de configuration, que je nomme dynamique et statique. Par exemple, un fichier de configuration de sshd, c’est générable, c’est d’ailleurs ce que fait un de mes rôles ansible. Mais un fichier de configuration qui est généré par une application, qui évolue avec le temps, ça il faut le sauvegarder.

Quand sauvegarder ?

Alors là c’est simple pour un serveur qui tourne H24, on le sauvegarde quand il n’y a pas trop d’activités dessus, souvent la nuit.

Mais un PCs, on ne peux pas faire tourner la nuit, car souvent il est éteint. On ne peux pas faire tourner une sauvegarde pendant qu’on joue, c’est assez consommateur de ressource.
J’ai d’abord pensé à une sauvegarde à l’extinction du PC, d’autant pour un PC fixe ça fonctionne sans soucis, mais un PC portable, si je l’éteins pour partir avec, je ne vais pas attendre 1h avant de partir quand même.
Je ne veux pas non plus d’une sauvegarde manuel, c’est toujours au moment de faire la sauvegarde que ça plante.

Pour les smartphones/tablettes, c’est un peu la même chose, mais en plus nous avons la question de la batterie, qui risque de consommer beaucoup.

Où sauvegarder ?

J’aimerai sauvegarder mes données à plusieurs endroits, chez moi pour y avoir accès rapidement, mais aussi ailleurs pour sécuriser physiquement celle-ci.
Pour le local c’est faisable, j’ai mon serveur chez moi. Pour le ailleurs, l’utilisation d’un cloud serait pas mal, en y ajoutant du chiffrement bien évidemment.

Mes choix

Je n’ai malheureusement pas trouvé l’outil parfait, mais un trio de 3 outils, qui me permettent de faire exactement ce que je veux.
Je sauvegarde donc sur une VM créer pour ceci, et je sauvegarde mes sauvegardes sur un google drive illimité.

Les outils

Syncthing

Le premier outils que j’utilise est syncthing, il est installé sur chacune de mes machines clientes (PCs, smartphones et tablettes), ainsi que sur ma VM qui me sert de fileserver.
Le syncthing installé sur mon fileserver est un simple réceptable, il réceptionne les fichiers, mais n’en envoie aucun, avec une rétention de fichier de 2 jours, si un fichier est supprimé du client, il est gardé de coté pendant 2 jours, au cas où c’est une erreur.
Sur les clients, syncthing est seulement en envoie, et en temps réel, dès qu’il y a un nouveau fichier il l’envoie.

L’avantage de syncthing, c’est que grace au relay, même sans être sur le réseau, la pseudo synchronisation fonctionne quand même.

Borgbackup

BorgBackup est installé sur chacun de mes serveurs (virtuel et physique), et via une tâche cron, est sauvegardé toute les nuits à 2h. Il les envoies sur ma VM de sauvegarde (nommé saver, oui j’ai de l’imagination).
Et donc tous mes fichiers synchronisés par Syncthing sur fileserver sont sauvegardés également.

Tout ceci est géré et installé par mon role ansible, par défaut je ne sauvegarde que mon /config, car je centralise généralement ma configuration dynamique dans ce répertoire sur mes serveurs. Mais je peux ajouter des répertoires via une variable.

Duplicati

Duplicati est le dernier outil que j’utilises, il n’est installé que sur le saver, et il me permets donc d’envoyer le répertoire de BorgBackup dans le cloud (google drive).
En gros, Duplicati me permets de faire une sauvegarde de sauvegardes, ce n’est pas le mieux, mais ça fonctionne parfaitement.

Lui tourne toute les nuits à 4h du matin.

Petit schéma de mes sauvegardes

Save scheme

Amélioration

Mon système de sauvegarde n’est pas parfait, j’ai encore des améliorations à effectuer, notamment sur la partie ordonnancement. Le top serait de pouvoir centralisé l’ordonnancement, et de pouvoir améliorer le temps d’éxecution de toute la chaine, car là je joue sur l’heure avec cron, en estimant au mieux le temps des sauvegardes, mais je risquerais un jour d’avoir un problème et des étapes qui se chevauche. J’ai pensé à rundeck, mais je trouve ça lourd pour une 20ène de job.

L’autre amélioration, c’est la déduplication des données, BorgBackup le fait, Duplicati également, mais pas Syncthing.
De base de mon coté, j’essaie au maximum d’éviter de dupliquer mes fichiers, mais ma copine c’est autre chose. J’ai compris comment elle gérait le tri de ses photos, et c’est catastrophique, en gros un répertoire par évenement (là je trouve ça normal), mais ensuite elle copie les photos dans des répertoires par personnes, donc une photo avec 50 personnes dessus, on se retrouve avec 51 fois la photo. C’est comme ça que sur son PC (et le fileserver), je me retrouve avec 1To, mais une fois sauvegardé et dédupliqué par BorgBackup, je n’ai plus que 200Go de fichier.

Mon système de sauvegarde n’est pas sur un choix arrêté, cela fait 2 semaines que ça tourne comme ça, et pour l’instant ça me va. Cependant je suis en train de regarder restic, qui couplé à rclone pourrait faire des miracles.

Conclusion

J’espère que cet article t’a plu, et que cela te donneras des idées.
N’hésites pas à me faire un retour, sur ton système de sauvegarde, ou sur des idées pour améliorer le mien.