Instantanés Btrfs
Introduction
Section intitulée « Introduction »Qu’est-ce qu’un instantané Btrfs ?
Section intitulée « Qu’est-ce qu’un instantané Btrfs ? »Commençons par les bases :
Les instantanés Btrfs découlent de la fonctionnalité de sous-volume. Qu’est-ce qu’un sous-volume, pourriez-vous demander ? Pensez à un sous-volume comme un système de fichiers distinct au sein du système de fichiers Btrfs. Cela vous permet de segmenter vos données en différentes parties. C’est pourquoi, par exemple, dans CachyOS, nous avons différents sous-volumes pour :
- Le système de fichiers racine : (
/) - Le répertoire racine : (
/root) - Le répertoire personnel : (
/home) - Les répertoires Var : (
/var/cache,/var/tmp,/var/log) - Le répertoire Srv : (
/srv)
En ayant des sous-volumes différents pour ces répertoires, nous pouvons les gérer indépendamment, appliquer des paramètres différents et, surtout, créer des instantanés pour eux.
C’est là qu’un instantané naît. Un instantané est essentiellement une copie en lecture seule ou en lecture-écriture (par défaut) d’un sous-volume à un moment précis. Cela signifie que vous pouvez capturer l’état de votre système de fichiers, y compris tous les fichiers et répertoires, à cet instant.
Les instantanés deviennent donc une référence à un moment donné, ce qui signifie que lorsque le fichier cible diverge des données de l’instantané, l’instantané conservera le fichier original et la cible créera un nouveau fichier avec les modifications, tandis que l’instantané restera le même pour toujours. C’est pourquoi certains utilisateurs appellent un instantané des “données figées dans le temps”.
Imaginez prendre une photographie de votre système de fichiers à un moment précis, et pouvoir toujours revenir à cette photographie chaque fois que vous en avez besoin.
L’un des principaux avantages des instantanés est qu’ils sont très efficaces en termes d’espace, car il ne s’agit que d’une référence aux données originales jusqu’à ce que des modifications soient apportées.
Mais c’est là qu’un instantané se distingue d’une sauvegarde traditionnelle. Disons que votre disque tombe en panne. Si vous aviez une sauvegarde traditionnelle, vous pourriez restaurer vos données à partir de cette sauvegarde. Cependant, si vous n’aviez que des instantanés sur le disque défaillant, vous perdriez l’accès à ces instantanés puisqu’ils sont stockés sur le même disque.
Cas de récupération où les instantanés sont utiles et inutiles
Section intitulée « Cas de récupération où les instantanés sont utiles et inutiles »Ils sont utiles pour la récupération suite à :
- Des problèmes ou des corruptions après des mises à jour du système.
- Des erreurs de configuration qui empêchent le système de démarrer.
- Des suppressions ou modifications accidentelles de fichiers.
Ils ne sont pas utiles pour la récupération suite à :
- Des problèmes de chargeur d’amorçage (bootloader).
- Des pannes matérielles (par exemple, des disques durs défaillants).
Gestion des instantanés (GUI & CLI)
Section intitulée « Gestion des instantanés (GUI & CLI) »Quelques points à considérer avant de gérer les instantanés. S’applique aux méthodes CLI et GUI.
- Il est recommandé de conserver un maximum de 10 instantanés. Au-delà, les instantanés deviennent trop anciens et moins utiles. Dans le pire des cas, revenir à un ancien instantané peut introduire des problèmes de compatibilité avec des versions logicielles plus récentes.
- Les instantanés sont idéalement destinés à des fins de récupération. Cependant, vous pouvez les utiliser pour annuler des modifications de fichiers sans restaurer l’instantané entier.
- Ajoutez une description significative lors de la création d’instantanés. Cela vous aidera à identifier l’objectif de chaque instantané plus tard.
Btrfs Assistant (GUI)
Section intitulée « Btrfs Assistant (GUI) »Avant de continuer, assurez-vous d’avoir installé btrfsmaintenance pour profiter des fonctionnalités de gestion automatique des instantanés.
Pour ceux qui préfèrent gérer Btrfs, les instantanés et plus encore via une interface graphique. Btrfs Assistant est un projet génial pour les débutants.
Configuration du nettoyage automatique des instantanés
Section intitulée « Configuration du nettoyage automatique des instantanés »Nous allons configurer le nettoyage automatique des instantanés à l’aide de Btrfs Assistant. Cela aidera à gérer vos instantanés efficacement sans intervention manuelle.
Suivez ces étapes :
-
Lancez Btrfs Assistant en ouvrant un terminal et en exécutant :
Terminal window btrfs-assistant-launcherAlternativement :
Terminal window sudo -E btrfs-assistant -
Naviguez vers l’onglet Paramètres Snapper (Snapper Settings) :

Modifiez les paramètres de Rétention des instantanés (Snapshot Retention) comme suit :
- Assurez-vous que la configuration
rootest sélectionnée. - Entrez la valeur
0pour Horaire (Hourly), Quotidien (Daily), Hebdomadaire (Weekly), Mensuel (Monthly) et Annuel (Yearly). - Décochez
Activer les instantanés chronologiques(Enable timeline snapshots). - Entrez la valeur
10dansNombre(Number). - Cochez ✅
Nettoyage Snapper activé(Snapper cleanup enabled). - Cliquez sur le bouton
Enregistrer(Save) en haut à droite et surAppliquer les changements systemd(Apply systemd changes) en bas à droite. snapper-cleanup.timer sera maintenant activé pour nettoyer automatiquement les anciens instantanés en fonction de votre configuration.
- Assurez-vous que la configuration
Suppression d’instantanés avec Btrfs Assistant
Section intitulée « Suppression d’instantanés avec Btrfs Assistant »-
Ouvrez Btrfs Assistant :
Terminal window btrfs-assistant-launcherAlternativement :
Terminal window sudo -E btrfs-assistant -
Allez dans l’onglet Paramètres Snapper (Snapper Settings) :

-
Sélectionnez le ou les instantanés que vous souhaitez supprimer de la liste.
-
Cliquez sur le bouton
Supprimer(Delete) situé en haut de la fenêtre. -
Régénérez les entrées de votre chargeur de démarrage pour refléter les changements :
systemd-boot
Terminal window sudo sdboot-manage genGRUB
Terminal window sudo grub-mkconfig -o /boot/grub/grub.cfgLimine
Terminal window sudo limine-mkinitcpio
Consultez leur Wiki Officiel pour un aperçu plus approfondi de ce qui peut être fait.
Snapper (CLI)
Section intitulée « Snapper (CLI) »Maintenant que nous avons expliqué ce qu’est un instantané Btrfs et ses cas d’utilisation, parlons de la manière de les gérer avec un outil appelé Snapper créé par Arvin Schnell de openSUSE.
CachyOS utilise la configuration Snapper suivante par défaut :
# subvolume to snapshotSUBVOLUME="/"
# filesystem typeFSTYPE="btrfs"
# btrfs qgroup for space aware cleanup algorithmsQGROUP=""
# fraction or absolute size of the filesystems space the snapshots may useSPACE_LIMIT="0.5"
# fraction or absolute size of the filesystems space that should be freeFREE_LIMIT="0.2"
# users and groups allowed to work with configALLOW_USERS=""ALLOW_GROUPS=""
# sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots# directorySYNC_ACL="no"
# start comparing pre- and post-snapshot in background after creating# post-snapshotBACKGROUND_COMPARISON="yes"
# run daily number cleanupNUMBER_CLEANUP="yes"
# limit for number cleanupNUMBER_MIN_AGE="1800"NUMBER_LIMIT="50"NUMBER_LIMIT_IMPORTANT="15"
# create hourly snapshotsTIMELINE_CREATE="no"
# cleanup hourly snapshots after some timeTIMELINE_CLEANUP="yes"
# limits for timeline cleanupTIMELINE_MIN_AGE="1800"TIMELINE_LIMIT_HOURLY="5"TIMELINE_LIMIT_DAILY="7"TIMELINE_LIMIT_WEEKLY="0"TIMELINE_LIMIT_MONTHLY="0"TIMELINE_LIMIT_YEARLY="0"
# cleanup empty pre-post-pairsEMPTY_PRE_POST_CLEANUP="yes"
# limits for empty pre-post-pair cleanupEMPTY_PRE_POST_MIN_AGE="1800"Voici une liste des commandes Snapper les plus courantes.
Obtenir la configuration actuelle :
sudo snapper get-configExemple de sortie :
❯ snapper list-configsConfig │ Subvolume───────┼──────────root │ /Lister les instantanés disponibles + détails :
sudo snapper listExemple de sortie :
# │ Type │ Pre # │ Date │ User │ Cleanup │ Description │ Userdata────┼────────┼───────┼──────────────────────────┼──────┼─────────┼──────────────────────────────────────────────────────────────────────────┼─────────0 │ single │ │ │ root │ │ current │715 │ pre │ │ Thu 22 Jan 2026 16:14:07 │ root │ number │ pacman -S -y -u --config /etc/pacman.conf -- │716 │ post │ 715 │ Thu 22 Jan 2026 16:14:25 │ root │ number │ docker-buildx lilv sof-firmware zed │717 │ pre │ │ Sat 24 Jan 2026 11:19:48 │ root │ number │ pacman -S -y -u --config /etc/pacman.conf -- │718 │ post │ 717 │ Sat 24 Jan 2026 11:20:19 │ root │ number │ bpf cachyos-hello cachyos-wallpapers cpupower jdk-openjdk ldb less libev │719 │ pre │ │ Sat 24 Jan 2026 11:20:31 │ root │ number │ pacman -U --config /etc/pacman.conf -- /home/mario/.cache/yay/visual-s │720 │ post │ 719 │ Sat 24 Jan 2026 11:20:36 │ root │ number │ visual-studio-code-bin │721 │ pre │ │ Sat 24 Jan 2026 20:46:40 │ root │ number │ pacman -Syu plasma-login-manager │722 │ post │ 721 │ Sat 24 Jan 2026 20:46:48 │ root │ number │ cmake fastfetch harfbuzz harfbuzz-icu jdk21-openjdk lib32-harfbuzz lib32 │723 │ pre │ │ Sat 24 Jan 2026 20:46:53 │ root │ number │ pacman -R sddm-kcm cachyos-themes-sddm sddm │724 │ post │ 723 │ Sat 24 Jan 2026 20:46:56 │ root │ number │ cachyos-themes-sddm sddm sddm-kcm │725 │ pre │ │ Sun 25 Jan 2026 08:05:05 │ root │ number │ pacman -S -y -u --config /etc/pacman.conf -- │726 │ post │ 725 │ Sun 25 Jan 2026 08:05:11 │ root │ number │ plasma-login-manager │727 │ pre │ │ Sun 25 Jan 2026 15:55:28 │ root │ number │ pacman -S --config /etc/pacman.conf -- cachyos-extra-znver4/caligula │728 │ post │ 727 │ Sun 25 Jan 2026 15:55:30 │ root │ number │ caligula │- Voici un résumé des colonnes :
#: Indique le numéro de l’instantané qui est utilisé dans d’autres commandes.Type: Indique si l’instantané est unique ou s’il fait partie d’une paire pré/post.single: Ces instantanés n’ont aucune relation particulière avec d’autres instantanés.pre: Ces instantanés sont destinés à être pris avant toute modification du système (comme l’édition d’un fichier ou l’installation d’un paquet).post: Comme son nom l’indique, ces instantanés font référence à des instantanés pris après qu’un changement système a eu lieu. Ils sont liés à leur instantanéprecorrespondant.
Pre #: Pour les instantanéspost, cette colonne indique le numéro de l’instantanéprecorrespondant.Date: La date et l’heure de création de l’instantané.User: L’utilisateur qui a créé l’instantané.Cleanup: Indique l’algorithme de nettoyage appliqué à l’instantané.- Il existe plusieurs algorithmes de nettoyage disponibles dans Snapper, tels que
number,timelineet empty-pre-post. Dans cet exemple, l’algorithmenumberest utilisé, ce qui signifie que les instantanés plus anciens seront supprimés en fonction d’une limite prédéfinie. - timeline : Les instantanés sont nettoyés en fonction de leur âge et de leur fréquence.
- empty-pre-post : Supprime les paires d’instantanés pré/post avec des différences vides.
- Il existe plusieurs algorithmes de nettoyage disponibles dans Snapper, tels que
Description: Une brève description de l’instantané, indiquant souvent la raison de sa création.Userdata: Données supplémentaires définies par l’utilisateur associées à l’instantané. Pour plus de détails sur les colonnes de sortie
Créer un nouvel instantané :
sudo snapper create --type single --description "Description de mon instantané"Modifier un instantané :
sudo snapper modify <option> <numéro_instantané>Options disponibles :
Options pour la commande 'modify' : --description, -d <description> Description pour l'instantané. --cleanup-algorithm, -c <algo> Algorithme de nettoyage pour l'instantané. --userdata, -u <userdata> Données utilisateur pour l'instantané. --read-only Rendre l'instantané en lecture seule. --read-write Rendre l'instantané en lecture-écriture. --default Définir l'instantané comme instantané par défaut.Exemple : Modification de la description de l’instantané 729 :
sudo snapper modify 729 --description 'Ma nouvelle description d'instantané'Suppression d’instantanés :
Supprimer un seul instantané :
sudo snapper delete <numéro_instantané>Supprimer une plage d’instantanés :
sudo snapper delete 718-721Les instantanés 718, 719, 720 et 721 seront supprimés.
Documentation de Snapper
Section intitulée « Documentation de Snapper »Page man officielle de la commande Snapper :
Guide du fichier de configuration Snapper :
Recommandations & Astuces Limine
Section intitulée « Recommandations & Astuces Limine »Ajuster les paramètres d’affichage des instantanés du chargeur de démarrage Limine
Section intitulée « Ajuster les paramètres d’affichage des instantanés du chargeur de démarrage Limine »- Limitez le nombre d’instantanés affichés dans le menu du chargeur de démarrage Limine pour éviter l’encombrement :
- Créez une sauvegarde du fichier de configuration limine-snapper-sync :
Terminal window sudo cp /etc/limine-snapper-sync.conf /etc/limine-snapper-sync.conf.orig - Modifiez le fichier de configuration limine-snapper-sync :
Extrait de la sortie attendue :
Terminal window sudo nano /etc/limine-snapper-sync.confOptionnellement, ajustez le format du nom de l’instantané :Terminal window ### Max Snapshot Entries### Sets the limit for how many snapshot entries show up in the boot menu.### This depends on the size of your FAT32 boot partition and how many different kernel and module versions you want to keep.### A larger FAT32 boot partition allows more snapshot entries.MAX_SNAPSHOT_ENTRIES=10Terminal window ### Snapshot Name Format### Choose a format for how snapshot entries look in the Limine bootloader:### 0. ID=111 2023-12-20 10:59:59 (default)### 1. 111│2023-12-20 10:59:59### 2. 111 │ 2023-12-20 10:59:59### 3. 2023-12-20 10:59:59│111### 4. 2023-12-20 10:59:59 │ 111### 5. 2023-12-20 10:59:59### 6. 111### 7. 111│snapshot description### 8. 2023-12-20 10:59:59│snapshot description### 9. │snapshot descriptionSNAPSHOT_FORMAT_CHOICE=88est un bon choix car il affiche la date et l’heure avec la description de l’instantané. - Enregistrez le fichier et quittez en appuyant sur
CTRL+OEntréeCTRL+X
Restauration à partir d’un instantané
Section intitulée « Restauration à partir d’un instantané »Limine
- Depuis le menu du chargeur de démarrage Limine, naviguez vers le menu des instantanés (Snapshots) :

- Sélectionnez l’instantané et le noyau à partir desquels vous souhaitez restaurer :


- Votre système est maintenant en
mode lecture seule. Une notification pop-up devrait apparaître, indiquant qu’un instantané a été détecté et demandant de le restaurer :
- Cliquez sur
Restaurer maintenant(Restore now). Une fenêtre de terminal s’ouvrira avec une invite et demandera quelques confirmations :Exemple d'invite de restauration Snapshot ID : 2Date : 2026-01-26 11:19:14Description : nc-gitRestore method : replaceConfirm restore of snapshot 2 using the "replace" method?Type [y]es to restore, [l]ist to display all snapshots, or [c]ancel to abort.Your input: yesEnter a description for the "backup" of the subvolume: @Your input: @ - Tapez
yeset ajoutez éventuellement une description pour l’instantané de sauvegarde. - Le processus de restauration commencera. Une fois terminé, tapez
yesà nouveau dans la nouvelle invite pour redémarrer votre système :Terminal window The restore is complete. Please reboot now:Type [y]es to reboot, [n]o or [c]ancel to abort rebooting.Your input: yes
GRUB
-
Depuis le menu du chargeur de démarrage GRUB. Démarrez sur l’instantané et le noyau souhaités à partir desquels vous voulez restaurer.
-
Une fois démarré. Ouvrez Btrfs Assistant :
Terminal window btrfs-assistant-launcherAlternativement :
Terminal window sudo -E btrfs-assistant -
Allez dans l’onglet Snapper → onglet “Parcourir/Restaurer” (Browse/Restore) et sélectionnez l’instantané à partir duquel vous avez démarré :

-
Cliquez sur le bouton
Restaurer(Restore) et redémarrez votre système pour appliquer les changements.