# backup

Woodstock Backup v2.0.0 - La réécriture complète en Rust

Posté le 26 avril 2026 dans Woodstock Tags: woodstock, backup, sauvegarde, rust, grpc

Temps de lecture: 22 min

Bonjour à tous,

Six ans. Il m'aura fallu six ans entre la première version de Woodstock Backup et cette v2. Si vous m'aviez dit en 2020 que je passerais la moitié de la décennie à réécrire trois fois le même logiciel de sauvegarde... j'aurais quand même foncé tête baissée. C'est ma façon de faire. Me voilà donc avec une version 2 stable, entièrement réécrite en Rust, qui tourne en production sur ma petite infrastructure depuis plus d'un an. Et je suis vraiment content du résultat. 😄

Pour ceux qui me lisent depuis longtemps, voici un récapitulatif des articles qui ont précédé celui-ci :

ArticleDateSujet
Woodstock Backup v1.0.02020-09-20Présentation du projet, prototype TypeScript + rsync
Woodstock Backup - Btrfs2021-01-12Abandon de Btrfs, écriture d'un pool custom
Woodstock Backup - Protocole et Langage de sauvegarde2021-04-18Protocole gRPC maison
Woodstock Backup - Optimiser Node.js avec Rust2023-05-10NAPI-RS et bindings Rust pour réduire la consommation mémoire
Woodstock Backup - Reverse engineering de BackupPC2024-05-07Migration du pool BackupPC vers Woodstock

Pour les nouveaux, je résume : Woodstock Backup est mon logiciel de sauvegarde personnel, centralisé, qui sauvegarde toutes les machines de mon réseau local et mes serveurs distants sur un NAS. L'idée de départ était simple. Le résultat est... un peu plus complexe. :)

Pool of chunks


Woodstock Backup - Reverse engineering de BackupPC

Posté le 7 mai 2024 dans Programmation Tags: woodstock, backup, sauvegarde, javascript, nodejs

Temps de lecture: 24 min

Une partie de cet article a été publiée sur LinuxFR. Après avoir reçu quelques retours, j'ai décidé de publier une version modifiée et améliorée de cet article sur mon blog.

Je remercie donc la communauté de LinuxFR pour ses retours. 😄

Les commentaires sur le code ou sur l'article sont les bienvenus.


Woodstock Backup - Optimiser la consommation mémoire de Node.js avec Rust

Posté le 10 mai 2023 dans Programmation Tags: woodstock, backup, sauvegarde, javascript, nodejs

Temps de lecture: 17 min

Introduction

Node.js est un environnement d'exécution JavaScript côté serveur qui repose sur le moteur JavaScript V8 de Google. Il est utilisé pour développer des applications serveur en back-end d'une application web, des outils en ligne de commande et des applications desktop. Cependant, la consommation de mémoire peut être un problème pour certaines applications Node.js, en particulier celles qui manipulent de grandes quantités de données ou des données volumineuses.

Dans cet article, nous allons voir comment optimiser la consommation de mémoire d'une application Node.js en le couplant avec Rust. Rust est un langage de programmation système qui offre des performances similaires à celles du C++, tout en offrant une sécurité de mémoire à la compilation. Rust peut être utilisé pour écrire des bibliothèques C/C++ natives pour Node.js.


Woodstock Backup - Protocol et Language de sauvegarde

Posté le 7 avril 2023 dans Programmation Tags: woodstock, backup, sauvegarde, javascript, nodejs

Temps de lecture: 23 min

Woodstock Backup - Protocol et Language de sauvegarde

Note de 2023 : Ce billet a été écrit en avril 2021, il y a deux ans, mais n'a jamais été publié. Le temps passe vite.

Depuis lors, j'ai travaillé sur d'autres projets, mais aussi sur ce logiciel de sauvegarde. En progressant dans le développement du projet, j'ai pu optimiser les performances et me faire une opinion sur le choix que j'ai finalement fait, que je partagerai à la fin de l'article.

Je mettrai à jour mes conclusions en fonction de mes avancées sur le sujet.

Dans notre précédent article, nous avons vu comment dédupliquer les fichiers dans un pool sans utiliser btrfs, un système de fichier permettant la déduplication. Pour pouvoir copier les fichiers dans notre pool, le logiciel doit savoir comment écrire les fichiers de manière appropriée.


Woodstock Backup - Utilisation de Btrfs et son remplacement

Posté le 12 janvier 2021 dans Woodstock Tags: backup, sauvegarde, btrfs, rsync, javascript, nodejs, woodstock

Temps de lecture: 13 min

Bonjour à tous,

La version 1 de mon programme de sauvegarde Woodstock Backup utlise Btrfs et Rsync pour effectuer une sauvegarde. Je l'utilise depuis quelques mois pour sauvegarder mes differentes machines (7 machines).

Voici un premier compte-rendu de l'utilisation de la première version de cet outil dont je suis l'auteur:

  • Lors de mon utilisation la sauvegarde fonctionne très bien, et cela c'est cool :). Je suis aux alentours de 200 snapshots.
  • J'ai eu un problème d'espace disque. Lors du déplacement de plusieurs énormes fichiers sur un serveur. La taille de l'espace de stockage à augmenté énormément.
    En effet rsync ne permet pas de détecter les déplacements de fichiers et btrfs ne permet pas de dédupliquer à la volée les données.
    Les fichiers ont donc été considérés comme étant nouveau.
  • L'espace disque étant tombé à zéro, j'ai voulu supprimer la dernière snapshot pour tester un déplacement de fichiers dans btrfs (à la main).
    La suppression de la snapshot a commencé à prendre énormément de temps, puis la machine est devenue inaccessible.
    En me connectant en direct sur la machine (KVM), j'ai découvert que la suppression du dernier volume Btrfs remplissait la mémore. Les 8Go octets de mémoire ont été remplis. Et le noyaux linux a utilisé OOM Killer pour détruire tous les processus.
    Bref la machine n'était plus dans un état lui permettant de faire les sauvegardes.

Woodstock Backup v1.0.0

Posté le 20 septembre 2020 dans Woodstock Tags: backup, sauvegarde, btrfs, rsync, javascript, nodejs, woodstock

Temps de lecture: 12 min

Bonjour à tous,

Un projet s'en va et un autre commence. Je suis heureux de vous présenter ce nouveau projet: Woodstock Backup.

Genèse du projet

Mes problèmes

Pour faire des sauvegardes, j'utilisais jusqu'ici BackupPC. C'est un très bon logiciel pour effectuer des sauvegardes de plusieurs machines sur une instance centralisée.

BackupPC est écrit en Perl avec des partie en C. En effet il se base sur un fork de rsync qui permet d'enregistrer le résultat des sauvegardes dans un format qui lui est propre. Malgré qu'il fonctionne très bien j'ai eu plusieurs problèmes avec récemment.

Il permet de faire des sauvegardes lancées depuis un serveur centralisé. Ce dernier vérifie régulièrement si les différents PC à sauvegarder sont présents sur le réseau et s'y connecte pour faire les sauvegardes sur la base d'un calendrier.