Btrfs Snapshots
Einführung
Abschnitt betitelt „Einführung“Was ist ein Btrfs-Snapshot?
Abschnitt betitelt „Was ist ein Btrfs-Snapshot?“Fangen wir mal mit den Grundlagen an:
Btrfs-Snapshots basieren auf der Funktion der Subvolumes. Du fragst dich jetzt vielleicht, was ein Subvolume ist. Stell dir ein Subvolume wie ein separates Dateisystem innerhalb des Btrfs-Dateisystems vor. Damit kannst du deine Daten in verschiedene Bereiche aufteilen. Deswegen haben wir zum Beispiel in CachyOS verschiedene Subvolumes für:
- Root-Dateisystem: (
/) - Root-Verzeichnis: (
/root) - Home-Verzeichnis: (
/home) - Var-Verzeichnisse: (
/var/cache,/var/tmp,/var/log) - Srv-Verzeichnis: (
/srv)
Dadurch, dass wir für diese Verzeichnisse unterschiedliche Subvolumes haben, können wir sie unabhängig voneinander verwalten, verschiedene Einstellungen anwenden und – was am wichtigsten ist – Snapshots davon erstellen.
Und hier kommt ein Snapshot ins Spiel. Ein Snapshot ist im Grunde eine schreibgeschützte oder beschreibbare (Standard) Kopie eines Subvolumes zu einem bestimmten Zeitpunkt. Das heißt, du kannst den Zustand deines Dateisystems, inklusive aller Dateien und Verzeichnisse, in diesem Moment festhalten.
Snapshots werden also zu einer Referenz auf einen bestimmten Zeitpunkt. Das bedeutet, wenn die Zieldatei von den Daten im Snapshot abweicht, behält der Snapshot die ursprüngliche Datei bei, und für das Ziel wird eine neue Datei mit den Änderungen erstellt, während der Snapshot für immer gleich bleibt. Deshalb bezeichnen manche Nutzer einen Snapshot auch als “in der Zeit eingefrorene Daten”.
Stell dir vor, du machst ein Foto von deinem Dateisystem in einem bestimmten Moment und kannst jederzeit zu diesem Foto zurückkehren, wenn du es brauchst.
Einer der Hauptvorteile von Snapshots ist, dass sie sehr speichereffizient sind, weil sie nur eine Referenz auf die ursprünglichen Daten sind, bis Änderungen vorgenommen werden.
Aber genau hier unterscheidet sich ein Snapshot von einem traditionellen Backup. Nehmen wir an, deine Festplatte geht kaputt. Wenn du ein traditionelles Backup hättest, könntest du deine Daten von diesem Backup wiederherstellen. Hättest du aber nur Snapshots auf der kaputten Festplatte, würdest du den Zugriff auf diese Snapshots verlieren, da sie auf derselben Festplatte gespeichert sind.
Wiederherstellungsfälle, in denen Snapshots nützlich sind und in denen nicht
Abschnitt betitelt „Wiederherstellungsfälle, in denen Snapshots nützlich sind und in denen nicht“Sie sind nützlich, um sich von Folgendem zu erholen:
- Kaputten oder beschädigten Systemupdates.
- Fehlkonfigurationen, die das System am Booten hindern.
- Versehentlichem Löschen oder Ändern von Dateien.
Sie sind nicht nützlich, um sich von Folgendem zu erholen:
- Problemen mit dem Bootloader.
- Hardware-Ausfällen (z. B. kaputten Festplatten).
Snapshots verwalten (GUI & CLI)
Abschnitt betitelt „Snapshots verwalten (GUI & CLI)“Ein paar Dinge, die du beachten solltest, bevor du Snapshots verwaltest. Gilt sowohl für die CLI- als auch für die GUI-Methoden.
- Es wird empfohlen, maximal 10 Snapshots aufzubewahren. Darüber hinaus werden Snapshots zu alt und weniger nützlich. Im schlimmsten Fall kann das Wiederherstellen eines alten Snapshots zu Kompatibilitätsproblemen mit neueren Softwareversionen führen.
- Snapshots sind idealerweise für Wiederherstellungszwecke gedacht. Du kannst sie aber auch verwenden, um Änderungen an Dateien rückgängig zu machen, ohne den gesamten Snapshot wiederherzustellen.
- Gib beim Erstellen von Snapshots eine aussagekräftige Beschreibung an. Das wird dir später helfen, den Zweck jedes Snapshots zu identifizieren.
Btrfs Assistant (GUI)
Abschnitt betitelt „Btrfs Assistant (GUI)“Bevor du fortfährst, stelle sicher, dass du btrfsmaintenance installiert hast, um die automatischen Funktionen zur Snapshot-Verwaltung zu nutzen.
Für diejenigen, die Btrfs, Snapshots und mehr lieber über eine GUI verwalten. Btrfs Assistant ist ein großartiges Projekt für Anfänger.
Einrichtung der automatischen Snapshot-Bereinigung
Abschnitt betitelt „Einrichtung der automatischen Snapshot-Bereinigung“Wir werden die automatische Snapshot-Bereinigung mit Btrfs Assistant einrichten. Das hilft dir, deine Snapshots effektiv und ohne manuellen Eingriff zu verwalten.
Folge diesen Schritten:
-
Starte Btrfs Assistant, indem du ein Terminal öffnest und Folgendes ausführst:
Terminal-Fenster btrfs-assistant-launcherAlternativ:
Terminal-Fenster sudo -E btrfs-assistant -
Navigiere zum Tab „Snapper Settings“:

Ändere die Einstellungen für die Snapshot Retention wie folgt:
- Stelle sicher, dass die
root-Konfiguration ausgewählt ist. - Gib den Wert
0für stündlich (Hourly), täglich (Daily), wöchentlich (Weekly), monatlich (Monthly) und jährlich (Yearly) ein. - Entferne das Häkchen bei
Enable timeline snapshots. - Gib den Wert
10beiNumberein. - Setze ein ✅ bei
Snapper cleanup enabled. - Klicke auf den
Save-Button oben rechts und aufApply systemd changesunten rechts. snapper-cleanup.timer wird nun aktiviert, um alte Snapshots automatisch basierend auf deiner Konfiguration zu bereinigen.
- Stelle sicher, dass die
Snapshots mit Btrfs Assistant entfernen
Abschnitt betitelt „Snapshots mit Btrfs Assistant entfernen“-
Öffne Btrfs Assistant:
Terminal-Fenster btrfs-assistant-launcherAlternativ:
Terminal-Fenster sudo -E btrfs-assistant -
Gehe zum Tab „Snapper Settings“:

-
Wähle den oder die Snapshots aus, die du aus der Liste löschen möchtest.
-
Klicke auf den
Delete-Button oben im Fenster. -
Generiere deine Bootloader-Einträge neu, um die Änderungen zu übernehmen:
systemd-boot
Terminal-Fenster sudo sdboot-manage genGRUB
Terminal-Fenster sudo grub-mkconfig -o /boot/grub/grub.cfgLimine
Terminal-Fenster sudo limine-mkinitcpio
Schau dir ihr Offizielles Wiki an, um einen genaueren Einblick zu bekommen, was alles möglich ist.
Snapper (CLI)
Abschnitt betitelt „Snapper (CLI)“Nachdem wir nun behandelt haben, was ein Btrfs-Snapshot ist und wofür man ihn verwendet, wollen wir darüber sprechen, wie man sie mit einem Tool namens Snapper verwaltet, das von Arvin Schnell von openSUSE erstellt wurde.
CachyOS verwendet standardmäßig die folgende Snapper-Konfiguration:
# 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"Hier ist eine Liste der häufigsten Snapper-Befehle.
Aktuelle Konfiguration abrufen:
sudo snapper get-configAusgabebeispiel:
❯ snapper list-configsConfig │ Subvolume───────┼──────────root │ /Verfügbare Snapshots + Details auflisten:
sudo snapper listAusgabebeispiel:
# │ 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 │- Hier ist eine Zusammenfassung der Spalten:
#: Gibt die Snapshot-Nummer an, die in anderen Befehlen verwendet wird.Type: Gibt an, ob der Snapshot ein einzelner Snapshot ist oder Teil eines Pre/Post-Paares.single: Diese Snapshots haben keine besondere Beziehung zu anderen Snapshots.pre: Diese Snapshots sollen vor jeder Art von Systemänderung erstellt werden (wie dem Bearbeiten einer Datei oder der Installation eines Pakets).post: Wie der Name schon sagt, beziehen sich diese Snapshots auf Snapshots, die nach einer Systemänderung erstellt wurden. Sie sind mit ihrem entsprechendenpre-Snapshot verknüpft.
Pre #: Beipost-Snapshots gibt diese Spalte die Snapshot-Nummer des entsprechendenpre-Snapshots an.Date: Das Datum und die Uhrzeit, zu der der Snapshot erstellt wurde.User: Der Benutzer, der den Snapshot erstellt hat.Cleanup: Gibt den auf den Snapshot angewendeten Bereinigungsalgorithmus an.- In Snapper sind mehrere Bereinigungsalgorithmen verfügbar, wie z. B.
number,timelineundempty-pre-post. In diesem Beispiel wird dernumber-Algorithmus verwendet, was bedeutet, dass ältere Snapshots basierend auf einem vordefinierten Limit gelöscht werden. timeline: Snapshots werden basierend auf ihrem Alter und ihrer Häufigkeit bereinigt.empty-pre-post: Löscht Pre/Post-Snapshot-Paare mit leeren Diffs.
- In Snapper sind mehrere Bereinigungsalgorithmen verfügbar, wie z. B.
Description: Eine kurze Beschreibung des Snapshots, die oft den Grund für seine Erstellung angibt.Userdata: Zusätzliche benutzerdefinierte Daten, die mit dem Snapshot verknüpft sind. Für weitere Details zu den Ausgabespalten
Einen neuen Snapshot erstellen:
sudo snapper create --type single --description "Meine Snapshot-Beschreibung"Einen Snapshot ändern:
sudo snapper modify <option> <snapshot_nummer>Verfügbare Optionen:
Options for 'modify' command: --description, -d <description> Description for snapshot. --cleanup-algorithm, -c <algo> Cleanup algorithm for snapshot. --userdata, -u <userdata> Userdata for snapshot. --read-only Set snapshot read-only. --read-write Set snapshot read-write. --default Set snapshot as default snapshot.Beispiel: Beschreibung von Snapshot 729 ändern:
sudo snapper modify 729 --description 'Meine neue Snapshot-Beschreibung'Löschen von Snapshots:
Einen einzelnen Snapshot löschen:
sudo snapper delete <snapshot_nummer>Einen Bereich von Snapshots löschen:
sudo snapper delete 718-721Die Snapshots 718, 719, 720 und 721 werden gelöscht.
Snapper-Dokumentation
Abschnitt betitelt „Snapper-Dokumentation“Offizielle Manpage für Snapper-Befehle:
Anleitung zur Snapper-Konfigurationsdatei:
Limine Empfehlungen & Tipps
Abschnitt betitelt „Limine Empfehlungen & Tipps“Anzeigeeinstellungen für Snapshots im Limine-Bootloader anpassen
Abschnitt betitelt „Anzeigeeinstellungen für Snapshots im Limine-Bootloader anpassen“- Begrenze die Anzahl der im Limine-Bootloader-Menü angezeigten Snapshots, um Unübersichtlichkeit zu vermeiden:
- Erstelle eine Sicherungskopie der Konfigurationsdatei
limine-snapper-sync:Terminal-Fenster sudo cp /etc/limine-snapper-sync.conf /etc/limine-snapper-sync.conf.orig - Bearbeite die Konfigurationsdatei
limine-snapper-sync:Erwarteter Ausschnitt der Ausgabe:Terminal-Fenster sudo nano /etc/limine-snapper-sync.confOptional kannst du auch das Format des Snapshot-Namens anpassen:Terminal-Fenster ### 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-Fenster ### 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=88ist eine gute Wahl, da es das Datum und die Uhrzeit zusammen mit der Snapshot-Beschreibung anzeigt. - Speichere die Datei und beende den Editor mit
STRG+O,Enter,STRG+X.
Aus einem Snapshot wiederherstellen
Abschnitt betitelt „Aus einem Snapshot wiederherstellen“Limine
- Navigiere im Limine-Bootloader-Menü zum Snapshots-Menü:

- Wähle den Snapshot & Kernel aus, aus dem du wiederherstellen möchtest:


- Dein System befindet sich jetzt im
read-only-Modus. Eine Pop-up-Benachrichtigung sollte erscheinen, die anzeigt, dass ein Snapshot erkannt wurde und dich fragt, ob du daraus wiederherstellen möchtest:
- Klicke auf
Restore now. Ein Terminalfenster öffnet sich mit einer Aufforderung und bittet um einige Bestätigungen:Beispiel Wiederherstellungsaufforderung 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: @ - Gib
yesein und füge optional eine Beschreibung für den Backup-Snapshot hinzu. - Der Wiederherstellungsprozess beginnt. Sobald er abgeschlossen ist, gib in der neuen Aufforderung erneut
yesein, um dein System neu zu starten:Terminal-Fenster The restore is complete. Please reboot now:Type [y]es to reboot, [n]o or [c]ancel to abort rebooting.Your input: yes
GRUB
-
Boote aus dem GRUB-Bootloader-Menü in den gewünschten Snapshot & Kernel, aus dem du wiederherstellen möchtest.
-
Sobald gebootet, öffne Btrfs Assistant:
Terminal-Fenster btrfs-assistant-launcherAlternativ:
Terminal-Fenster sudo -E btrfs-assistant -
Gehe zum Snapper-Tab → „Browse/Restore“-Tab und wähle den Snapshot aus, von dem du gebootet hast:

-
Klicke auf den
Restore-Button und starte dein System neu, um die Änderungen zu übernehmen.