
Snapper Btrfs-Snapshot-Verwaltung mit grafischer Oberfläche
Snapper ist ein sehr mächtiges Terminal- Tool zum erstellen und verwalten von Snapshots im BTRFS Dateisystem. Um das ganze bequem innerhalb einer minimalsitsichen GUI zu verwalten, ist ein Skript entsatnden, welches eine einfache Zenity - GUI bereitstellt. Bevor wir zum eigentlichen Zenity Skript kommen, hier einige schlagkräftige Argumente für Snapper.
Warum ich Snapper anstelle von Timeshift für meine Snapshots nutze
Wer viel am System schraubt, konfiguriert oder neue Software testet, braucht ein verlässliches Sicherheitsnetz. Das ständige herumschubsen von backups ist in meinen Augen nicht zielführend, weil extrem zeitraubend. Was jedoch nicht bedeutet, dass ich auf Backups verzichte. Ein Hardwareausfall kann jederzeit passieren. Deshalb sichere ich meine Daten - in regelmässigen Abständen - zusätzlich auf externe Speichermedien, wie SSDs, und in diverse Cloud-Umgebungen.
Auf meinem ThinkPad T580 unter Linux Mint Xfce war, dafür tatsächlich lange Zeit Timeshift zuständig. Mittlerweile bin ich jedoch komplett zu Snapper gewechselt. Warum? Hier sind die entscheidenden Gründe, warum das Tool für meinen Workflow einfach besser geeignet ist.
1. Der Lebensretter: GRUB-Bootmenü-Integration
Das absolute Schmankerl gleich vorweg: In Kombination mit dem Paket grub-btrfs trägt Snapper jeden erstellten Snapshot automatisch direkt in das GRUB-Bootmenü ein.
Sollte mal ein Update fehlschlagen oder ich mir das System so dermassen zerschießen, dass es gar nicht mehr hochfährt, ist das kein Grund zur Panik. Ich wähle beim Neustart im GRUB-Menü einfach einen vorherigen, noch funktionierenden Snapshot aus. Das System bootet in null komma nix sofort wieder hoch, als wäre nie etwas passiert, und ich kann den Fehler in Ruhe rückgängig machen. Es sei denn, wie zuvor erwähnt, dass die Festplatte physikalisch defekt ist.
2. Perfekte Btrfs-Symbiose
Snapper ist nativ auf das Btrfs-Dateisystem zugeschnitten. Das Erstellen eines Snapshots passiert dadurch ohne spürbare Verzögerung und verbraucht im Moment der Erstellung exakt 0 Byte zusätzlichen Speicherplatz. Erst wenn Dateien verändert werden, greift das Copy-on-Write-Prinzip und belegt Platz für die modifizierten Daten.
3. Flexibilität: System und Nutzerdaten
Timeshift hat eine eiserne Regel: Es sichert strikt das Root-System und klammert Nutzerdaten aus. Das verhindert zwar, dass persönliche Dateien versehentlich zurückgesetzt werden, schränkt aber enorm ein. Mit Snapper kann ich ganz flexibel jedes beliebige Btrfs-Subvolume konfigurieren. So lassen sich bei Bedarf eben auch Arbeitsdaten oder Home-Verzeichnisse lückenlos erfassen.
4. Skripting-Power für das Terminal
Für alle, die gerne Automatisierungen schreiben, ist Snapper ein Traum. Es ist primär ein Kommandozeilen-Tool und lässt sich hervorragend in eigene Abläufe integrieren. Wenn ich im mousepad-Editor an neuen Bash-Skripten für mein Verzeichnis ~/.scripte bastele, kann ich die Snapshot-Erstellung per Befehl nahtlos in meine Routinen einbauen.
5. Chirurgische Präzision mit snapper diff
Manchmal will man gar nicht das komplette System in der Zeit zurückschicken, sondern nur einen bestimmten Fehler finden. Mit dem Befehl snapper diff kann ich zwei Snapshots miteinander vergleichen. Das Tool listet mir exakt auf, welche Konfigurationsdateien geändert wurden. So kann ich gezielt nur eine einzige fehlerhafte Datei wiederherstellen.
6. Intelligentes Aufräumen (Timeline-Cleanup)
Manuelle Snapshot-Pflege kostet Zeit. Die Timeline-Regeln von Snapper nehmen mir das Speichermanagement komplett ab. Ich kann haargenau definieren, wie viele stündliche, tägliche, wöchentliche oder jährliche Snapshots auf der SSD verbleiben sollen. Der Rest wird vollautomatisch im Hintergrund entsorgt.
Fazit: Timeshift ist eine hervorragende und einfache Lösung für Anwender, welche eine grafische "Fire-and-Forget"-Oberfläche suchen. Wer aber die volle Kontrolle über Btrfs, direkte Rettungsmöglichkeiten über den GRUB-Bootloader In Kombination mit dem Paket grub-btrfs und starke Terminal-Integration sucht, findet in Snapper das deutlich mächtigere Werkzeugset.
------------------------------------------------------------
Und nun zum eigentlichen Zenity - Skript :
Die wichtigsten Funktionen im Überblick:
Einmalige Passwort-Abfrage: Das Skript fordert beim Start automatisch die nötigen Rechte für sudo über
pkexecan. Alle weiteren Aktionen laufen danach ohne erneute Passwortabfrage ab.

Snapshots anzeigen: Listet alle aktuell vorhandenen Snapshots und deren Details übersichtlich auf.
Snapshots erstellen: Legt per Klick einen neuen manuellen Snapshot mit einer eigenen Beschreibung an.


Einzelne Snapshots löschen: Die Snapshots werden in einer anklickbaren Tabelle dargestellt. Der gewünschte Eintrag kann einfach per Mausklick ausgewählt und anhand seiner ID sicher gelöscht werden. Der Löschvorgang muss zuvor bestätigt werden.

Speicherplatz aufräumen: Startet auf Knopfdruck die Bereinigung (Cleanup) von alten Snapshots nach den definierten Snapper-Regeln.
Automatische GRUB-Synchronisation: Nach jedem Erstellen, Löschen oder Aufräumen von Snapshots wird im Hintergrund automatisch das GRUB-Bootmenü mittels (
update-grub) aktualisiert. So verschwinden gelöschte Snapshots sofort aus dem Bootmenü und es bleiben keine fehlerhaften Einträge ("Leichen") zurück.

-

Voraussetzungen :
Der Zielrechner muss natürlich zwingend Btrfs nutzen, sonst läuft Snapper ins Leere.
Die Pakete snapper, zenity (für die grafischen Fenster) und pkexec (für die Passwortabfrage) müssen installiert sein.
Die Snapper-Konfiguration: Das Skript sucht nach dem Konfigurationsnamen root. Wer das Skript nutzt, muss also vorher schon die Snapper-Config ROOT angelegt haben. Überprüfen lässt sich das im Terminal mit ....
snapper list-configs
Ausgabe im terminal :
Konfiguration | Subvolumen
--------------+-----------
root | /
Standardmäßig wird die Snapper-Konfiguration für das System-Wurzelverzeichnis (/) genau so benannt. Falls sie auf einem System noch nicht existiert muss sie neu angelegt werden. Dies geschieht das mit folgendem Befehl:
sudo snapper -c root create-config /
Dadurch wird die Konfigurationsdatei unter /etc/snapper/configs/root erstellt und in die globale Snapper-Konfiguration eingebunden.
Und so sieht meine sanpper konfig für das Root Dir aus
sudo cat /etc/snapper/configs/root
# subvolume to snapshot
SUBVOLUME="/"
# filesystem type
FSTYPE="btrfs"
# btrfs qgroup for space aware cleanup algorithms
QGROUP=""
# fraction or absolute size of the filesystems space the snapshots may use
SPACE_LIMIT="0.5"
# fraction or absolute size of the filesystems space that should be free
FREE_LIMIT="0.2"
# users and groups allowed to work with config
ALLOW_USERS=""
ALLOW_GROUPS=""
# sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots
# directory
SYNC_ACL="no"
# start comparing pre- and post-snapshot in background after creating
# post-snapshot
BACKGROUND_COMPARISON="yes"
# run daily number cleanup
NUMBER_CLEANUP="yes"
# limit for number cleanup
NUMBER_MIN_AGE="1800"
NUMBER_LIMIT="10"
NUMBER_LIMIT_IMPORTANT="5"
# create hourly snapshots
TIMELINE_CREATE="yes"
# cleanup hourly snapshots after some time
TIMELINE_CLEANUP="yes"
-----------------
Debian/Ubuntu/Mint als Basis: Das Skript aktualisiert das Bootmenü mit dem Befehl update-grub. Das funktioniert unter Debian basierenden Systemen perfekt. Nutzer von z. B. Arch Linux oder Fedora müssten diesen Befehl im Skript anpassen, da er dort grub-mkconfig heißt.
Wenn diese Punkte auf eurem System erfüllt sind, läuft das Ding sofort out-of-the-box! ...
Das fertige Zenity- Skript steht hier zum Download bereit.
Hinweis :
Ich übernehme keinerlei Haftung falls auf eurem System irgendetwas in die Binsen gehen sollte.