Snapshots BTRFS
BTRFS est un système de fichiers Linux avec une fonctionnalité redoutable pour un homelab : les snapshots. Un snapshot fige l'état exact d'un système de fichiers en un instant, à coût quasi nul, sans copier le moindre octet de données au départ. Cassez quelque chose dix minutes après un apt full-upgrade, ou écrasez le mauvais fichier .env, et vous pouvez revenir exactement à l'état d'avant, sans toucher à une sauvegarde.
Ce n'est pas le rôle de Backrest et de la règle 3-2-1, donc autant être précis sur la différence avant de mettre quoi que ce soit en place.
Un snapshot n'est pas une sauvegarde
Un snapshot vit sur le même disque que les données qu'il protège. Il est instantané, ne demande aucun réseau, et il est parfait pour annuler une bêtise que vous venez de faire, mais il ne sert strictement à rien le jour où ce disque lâche, se fait voler, ou où votre serveur part en fumée. C'est le rôle d'une vraie sauvegarde 3-2-1 : une copie sur un support différent, idéalement hors site.
Voyez ça comme ça :
- Snapshot = un bouton annuler. Instantané, local, gratuit, utile seulement tant que le disque est vivant.
- Sauvegarde = une assurance. Plus lente, hors site, la seule chose qui survit à la mort du disque lui-même.
Gardez les deux. Les snapshots vous rendent serein face aux mises à jour et aux expérimentations, les sauvegardes garantissent qu'un disque mort reste un désagrément plutôt qu'une catastrophe.
/ déjà en ext4 après coup, c'est donc un choix à faire une seule fois, à l'installation.Formater la partition racine en BTRFS
Le partitionnement Assisté de Debian ne propose que de l'ext4. Pour obtenir du Btrfs, choisissez plutôt le partitionnement Manuel, à la même étape que décrit le guide d'installation principal :
Sélectionner le partitionnement manuel
Sur l'écran de méthode de partitionnement, choisissez Manuel plutôt que Assisté, utiliser un disque entier.
Créer une table de partitions
Sélectionnez le disque, confirmez la création d'une nouvelle table de partitions vide, puis sélectionnez l'ESPACE LIBRE obtenu et choisissez Créer une nouvelle partition.
Définir la taille et le type de la partition
Donnez à la partition le reste du disque (moins une petite partition EFI si vous êtes en UEFI, gérée comme dans une installation Assistée), et réglez Utiliser comme sur Système de fichiers journalisé Btrfs, avec comme point de montage /.
Terminer le partitionnement
Terminer le partitionnement et appliquer les changements, puis confirmez avec Oui.
Terminé !
Tout le reste de l'installeur reste identique.
Installer Snapper
Plutôt que de jongler à la main avec des commandes btrfs subvolume brutes, Snapper est un petit outil qui gère tout le cycle de vie des snapshots : les créer, les ranger proprement, supprimer les anciens, et encadrer automatiquement chaque opération apt d'une paire de snapshots.
sudo apt install snapper
sudo snapper -c root create-config /
create-config enregistre une configuration nommée root pour le système de fichiers /, et crée un sous-volume .snapshots dédié en dessous pour y stocker chaque snapshot, verrouillé pour root uniquement. Pas besoin de découpage @/@home, ça fonctionne très bien sur le layout à sous-volume unique que le partitionnement manuel vient de créer.
Activez la configuration en éditant /etc/default/snapper :
SNAPPER_CONFIGS="root"
Puis activez les timers qui exécutent les snapshots périodiques et le nettoyage de Snapper :
sudo systemctl enable --now snapper-timeline.timer snapper-cleanup.timer
snapper-timeline.timer se déclenche toutes les heures par défaut, c'est fixé par l'unité elle-même, pas par une option de configuration. Chaque exécution prend un snapshot et le range dans la bonne catégorie (horaire, quotidien, mensuel, annuel) ; les réglages TIMELINE_LIMIT_* vus plus bas ne contrôlent que combien de snapshots de chaque catégorie survivent, pas la fréquence à laquelle ils sont pris. snapper-cleanup.timer tourne une fois par jour (plus une fois 10 minutes après le démarrage) pour appliquer ces limites.
sudo systemctl edit snapper-timeline.timer
[Timer]
OnCalendar=
OnCalendar=*-*-* 0/6:00:00
OnCalendar= vide efface d'abord la valeur hourly du paquet, puisque systemd ajoute sinon les nouvelles lignes OnCalendar à celles déjà présentes au lieu de les remplacer. Appliquez avec sudo systemctl daemon-reload && sudo systemctl restart snapper-timeline.timer./etc/apt/apt.conf.d/80snapper) qui s'active dès qu'une configuration figure dans SNAPPER_CONFIGS : à partir de maintenant, chaque apt install, apt upgrade ou apt full-upgrade obtient automatiquement un snapshot juste avant et juste après son exécution, sans aucun effort de votre part.Prendre un snapshot
Pour tout ce qui sort du cadre d'apt, comme modifier une unité systemd ou un fichier Docker Compose, prenez-en un vous-même avec une description qui voudra vraiment dire quelque chose plus tard :
sudo snapper create --description "avant changement compose sur swag"
Listez-les tous avec :
sudo snapper list
# | Type | Pre # | Date | Description
---+--------+-------+--------------------------+---------------------------------
0 | single | | | current
1 | single | | Tue 09 Sep 2026 18:30:00 | avant changement compose sur swag
2 | pre | | Tue 09 Sep 2026 19:00:01 | apt install unattended-upgrades
3 | post | 2 | Tue 09 Sep 2026 19:00:14 | apt install unattended-upgrades
Restaurer des fichiers depuis un snapshot
Snapper conserve l'état complet du système de fichiers au moment du snapshot sous /.snapshots/<numéro>/snapshot, consultable comme n'importe quel autre dossier :
ls /.snapshots/1/snapshot/etc/ssh/
Pour voir exactement ce qui a changé entre un snapshot et le système actuel (0 désigne toujours "l'état actuel") avant de toucher à quoi que ce soit :
sudo snapper status 1..0
Ça affiche chaque fichier créé, modifié ou supprimé depuis. Pour annuler ces changements automatiquement :
sudo snapper undochange 1..0
Ou restaurez un seul fichier à la main, souvent le choix le plus sûr et le plus chirurgical :
sudo cp -a /.snapshots/1/snapshot/etc/ssh/sshd_config /etc/ssh/sshd_config
rollback de toute la partition racine vers un snapshot antérieur (il crée un nouveau sous-volume par défaut et démarre dessus au prochain redémarrage), pour un système dans un état vraiment cassé plutôt qu'un simple fichier manquant. C'est une opération plus délicate et bien plus rare, à tester une fois sur une machine où redémarrer ne vous dérange pas, avant d'en avoir vraiment besoin. Et si le disque lui-même est le problème, c'est exactement le scénario pour lequel votre sauvegarde Backrest hors site existe.Gérer et nettoyer les snapshots
Les snapshots sont bon marché, pas gratuits : dès que le système de fichiers actif diverge d'un snapshot, les anciens blocs qu'il référence toujours restent occupés. Sans surveillance, des mois de snapshots sur un serveur qui change beaucoup (images de conteneurs, logs) peuvent discrètement grignoter de l'espace disque réel.
Le snapper-cleanup.timer activé plus haut nettoie déjà automatiquement, selon la configuration de /etc/snapper/configs/root :
| Réglage | Défaut | Ce que ça fait |
|---|---|---|
TIMELINE_LIMIT_HOURLY / _DAILY / _MONTHLY / _YEARLY | 10 | Combien de snapshots de chronologie garder pour chaque granularité |
TIMELINE_LIMIT_WEEKLY | 0 | Désactivé par défaut |
NUMBER_LIMIT | 50 | Combien de snapshots manuels (single) garder |
Ajustez ça à votre goût, puis supprimez-en un immédiatement à la main si vous avez besoin de la place tout de suite :
sudo snapper delete 1
Vérifiez l'usage disque réel avec df -h / : les chiffres ci-dessus ne plafonnent que le nombre de snapshots, pas l'espace qu'un serveur très actif peut encore consommer entre deux nettoyages.
Et voilà : un bouton annuler automatique et permanent pour votre serveur, qui encadre discrètement chaque mise à jour et se nettoie tout seul, en tournant à côté des vraies sauvegardes que Backrest prend déjà hors site.
Backrest
Installer Backrest, une interface web conviviale pour restic, et sauvegarder son serveur comme il faut avec la règle 3-2-1, vers un disque local, un autre serveur, S3 ou Backblaze B2.
Stockeex
Introduction à Stockeex, un projet personnel de gestion de stock et d'inventaire. Documentation en cours de rédaction.