Da ich Snapper seit einem Monat im produktiven Einsatz habe, hier ein kurzes Update (ist doch etwas länger ausgefallen als ursprünglich gedacht )
Anders als im Eingangspost beschrieben habe ich nur drei Pakete installiert
- snapper (das eigentliche Programm)
- grub-btrfs (sorgt für die Einträge der Snapshots im Grub-Bootloader)
- snap-pac (erstellt automatische Snapshots bei De-/Installation von Programmen und Systemupdates
Auf eine GUI habe ich verzichtet, da diese auf das BTRFS-Layout von Suse ausgerichtet ist und bei Abweichungen davon nur eingeschränkt funktioniert. Ist aber auch nicht unbedingt erforderlich, da die Bedienung über das Terminal doch recht simpel ist.
Mit sudo snapper list werden die vorhandenen Snapshots aufgelistet. Der "Snapshot" mit der #0 stellt immer den aktuellen Stand des Sytems dar.
timeline = automatische zeitgesteuerte Snapshots
number = Snapshots vor/nach einer Installation, Update...
# | Typ | Vorher # | Datum | Benutzer | Bereinigen | Beschreibung
-----+--------+----------+------------------------------+----------+------------+--------------------------------------------------------------------------
0 | single | | | root | | current
209 | single | | So 11 Sep 2022 00:00:07 CEST | root | timeline | timeline
222 | single | | Mo 12 Sep 2022 06:00:30 CEST | root | timeline | timeline
229 | single | | Di 13 Sep 2022 06:00:03 CEST | root | timeline | timeline
234 | single | | Mi 14 Sep 2022 08:00:02 CEST | root | timeline | timeline
238 | single | | Do 15 Sep 2022 04:00:00 CEST | root | timeline | timeline
247 | single | | Fr 16 Sep 2022 04:00:01 CEST | root | timeline | timeline
255 | single | | Sa 17 Sep 2022 08:00:05 CEST | root | timeline | timeline
259 | single | | So 18 Sep 2022 08:00:17 CEST | root | timeline | timeline
265 | single | | Mo 19 Sep 2022 08:00:19 CEST | root | timeline | timeline
266 | single | | Mo 19 Sep 2022 12:00:29 CEST | root | timeline | timeline
267 | single | | Mo 19 Sep 2022 16:00:19 CEST | root | timeline | timeline
268 | pre | | Di 20 Sep 2022 03:33:17 CEST | root | number | pacman -Syu
269 | post | 268 | Di 20 Sep 2022 03:33:20 CEST | root | number | boost-libs cracklib firefox-ublock-origin fuse-common fuse3 hwdata imath
270 | pre | | Di 20 Sep 2022 03:46:05 CEST | root | number | pacman -S -y --config /etc/pacman.conf -- extra/python-appdirs community
271 | post | 270 | Di 20 Sep 2022 03:46:05 CEST | root | number | cython meson ninja python-appdirs python-autocommand python-inflect pyth
272 | pre | | Di 20 Sep 2022 03:46:29 CEST | root | number | pacman -R -u --noconfirm --config /etc/pacman.conf -- python-appdirs pyt
273 | post | 272 | Di 20 Sep 2022 03:46:29 CEST | root | number | cython meson ninja python-appdirs python-autocommand python-inflect pyth
274 | pre | | Di 20 Sep 2022 03:47:22 CEST | root | number | pacman -U --noconfirm --config /etc/pacman.conf -- /home/sascha/.cache/y
275 | post | 274 | Di 20 Sep 2022 03:47:23 CEST | root | number | vscodium-bin
278 | single | | Di 20 Sep 2022 04:00:22 CEST | root | timeline | timeline
279 | single | | Di 20 Sep 2022 08:00:12 CEST | root | timeline | timeline
280 | single | | Di 20 Sep 2022 12:00:38 CEST | root | timeline | timeline
281 | single | | Di 20 Sep 2022 16:00:38 CEST | root | timeline | timeline
282 | single | | Di 20 Sep 2022 20:00:28 CEST | root | timeline | timeline
283 | single | | Mi 21 Sep 2022 08:00:19 CEST | root | timeline | timeline
284 | single | | Mi 21 Sep 2022 12:00:19 CEST | root | timeline | timeline
285 | single | | Mi 21 Sep 2022 16:00:04 CEST | root | timeline | timeline
286 | single | | Mi 21 Sep 2022 20:00:04 CEST | root | timeline | timeline
Alles anzeigen
Mit sudo snapper create --description "Das wird ein Snaphot" lassen sich auch manuelle Snapshots erstellen.
Wie viele Snapshots aufbewahrt werden sollen, ist in der /etc/snapper/configs/root hinterlegt. Diese kann mit einem Editor bearbeitet werden oder man nutzt die Snapper-Tools.
sudo snapper get-config
Schlüssel | Wert
-----------------------+------
ALLOW_GROUPS |
ALLOW_USERS |
BACKGROUND_COMPARISON | yes
EMPTY_PRE_POST_CLEANUP | yes
EMPTY_PRE_POST_MIN_AGE | 1800
FREE_LIMIT | 0.2
FSTYPE | btrfs
NUMBER_CLEANUP | yes
NUMBER_LIMIT | 10
NUMBER_LIMIT_IMPORTANT | 10
NUMBER_MIN_AGE | 1800
QGROUP |
SPACE_LIMIT | 0.5
SUBVOLUME | /
SYNC_ACL | no
TIMELINE_CLEANUP | yes
TIMELINE_CREATE | yes
TIMELINE_LIMIT_DAILY | 10
TIMELINE_LIMIT_HOURLY | 7
TIMELINE_LIMIT_MONTHLY | 0
TIMELINE_LIMIT_WEEKLY | 0
TIMELINE_LIMIT_YEARLY | 0
TIMELINE_MIN_AGE | 1800
Alles anzeigen
In dieser Konfiguration werden 7 stündliche Snapshots und 10 tägliche aufbewahrt. Mit sudo snapper set-config TIMELINE_LIMIT_DAILY=7 lassen sich die Werte anpassen.
Jetzt geht es ans Eingemachte, es gibt ein Problem und es muss zurückgerollt werden.
Um beim obigen Beispiel zu bleiben: Beim Snapshot 278 war alles noch in Ordnung, danach ist irgendwas schiefgelaufen.
Es muss auf die Nummer 278 zurückgerollt werden. Mit sudo snapper undochange 278..0 wird der Snapshot 278 auf das aktuelle System 0 übertragen. Alle Änderungen im System, die nach dem Snapshot #278 gemacht wurden, sind damit weg.
Vielleicht soll aber nicht das gesamte System zurückgerollt werden, sondern nur eine bestimmte Änderung. Mit sudo snapper status 278..0 lassen sich die Veränderungen anzeigen.
+..... /etc/libvirt/qemu/PopOS.xml
c..... /etc/sudoers
c..... /etc/.updated
+..... /var/lib/libvirt/qemu/nvram/PopOS_VARS.fd
c..... /var/lib/pacman/sync/arcolinux_repo_3party.db
c..... /var/lib/pacman/sync/arcolinux_repo_3party.db.sig
c..... /var/lib/pacman/sync/community.db
c..... /var/lib/pacman/sync/extra.db
c..... /var/lib/systemd/random-seed
+..... /var/lib/upower/history-charge-generic_id.dat
c..... /var/lib/upower/history-charge-M705-101b-cc-f9-d0-fb.dat
c..... /var/lib/upower/history-charge-MK700-2008-81-fd-07-db.dat
+..... /var/lib/upower/history-rate-generic_id.dat
c..... /var/lib/upower/history-rate-M705-101b-cc-f9-d0-fb.dat
c..... /var/lib/upower/history-rate-MK700-2008-81-fd-07-db.dat
+..... /var/lib/upower/history-time-empty-generic_id.dat
Alles anzeigen
Es gab unter anderem eine Änderung in der /etc/sudoers (c = change). Um zu sehen, was verändert wurde, gibt es den Befehl diff.
sudo snapper diff 278..0 /etc/sudoers
--- /.snapshots/278/snapshot/etc/sudoers 2022-09-18 06:24:23.238752494 +0200
+++ /etc/sudoers 2022-09-20 16:48:22.989685117 +0200
@@ -97,4 +97,4 @@
## Read drop-in files from /etc/sudoers.d
@includedir /etc/sudoers.d
-%wheel ALL=(ALL:ALL) ALL,NOPASSWD:/usr/bin/snapper list
+%wheel ALL=(ALL:ALL) ALL
Jeder, der schon mal mit Github u. ä. zu tun hatte, kennt diese Darstellung. In diesem Fall habe ich der Gruppe "wheel" das Recht eingeräumt, "snapper list" ohne Passwort zu benutzen.
Mit sudo snapper undochange 278..0 /etc/sudoers lässt sich diese Änderung nun rückgängig machen.
Wenn aber gar nichts mehr geht und das System nicht mehr starten möchte, dann kommt das Paket grub-btrfs ins Spiel. Das sorgt dafür, dass es von jedem vorhandenen Snapshot einen bootfähigen Eintrag in Grub gibt, von dem aus das System gestartet werden kann.
Das war's...