10 Systemwiederherstellung und Snapshot-Verwaltung mit Snapper #
Mit Snapper werden Dateisystem-Snapshots erstellt und verwaltet. Durch Dateisystem-Snapshots kann eine Kopie des Zustands eines Dateisystems zu einem bestimmten Zeitpunkt beibehalten werden. Die Standardeinrichtung von Snapper lässt ein Rollback von Systemänderungen zu. Sie können es jedoch auch zum Erstellen von Sicherungen der Benutzerdaten auf Wechseldatenträgern verwenden. Als Basis für diese Funktion verwendet Snapper das Btrfs-Dateisystem oder LVM-Volumes mit Thin Provisioning mit einem XFS- oder Ext4-Dateisystem.
Snapper verfügt über eine Befehlszeilen-Schnittstelle und eine YaST-Schnittstelle. Mit Snapper können Sie Dateisystem-Snapshots zu den folgenden Dateisystemtypen erstellen und verwalten:
Btrfs, ein Kopie-beim-Schreiben-Betriebssystem für Linux, das nativ Dateisystem-Snapshots von Subvolumes unterstützt. (Subvolumes sind separat einhängbare Dateisysteme in einer physischen Partition.)
Sie können auch von
Btrfs
-Snapshots booten. Weitere Informationen finden Sie in Abschnitt 10.3, „System-Rollback durch Booten aus Snapshots“.LVM-Volumes mit Thin Provisioning formatiert mit XFS oder Ext4.
Mit Snapper können die folgenden Aufgaben ausgeführt werden:
Systemänderungen rückgängig machen, die von
zypper
und YaST vorgenommen wurden. Ausführliche Informationen finden Sie unter Abschnitt 10.2, „Rückgängigmachen von Änderungen mit Snapper“.Dateien aus früheren Snapshots wiederherstellen. Ausführliche Informationen finden Sie unter Abschnitt 10.2.2, „Wiederherstellen von Dateien mit Snapper“.
System-Rollback durch Booten aus einem Snapshot vornehmen. Ausführliche Informationen finden Sie unter Abschnitt 10.3, „System-Rollback durch Booten aus Snapshots“.
Im laufenden System manuell Snapshots erstellen und verwalten. Ausführliche Informationen finden Sie unter Abschnitt 10.6, „Manuelles Erstellen und Verwalten von Snapshots“.
10.1 Standardeinrichtung #
Snapper unter SUSE Linux Enterprise Desktop wird als Werkzeug zum Rückgängigmachen und Wiederherstellen von Systemänderungen eingerichtet. Standardmäßig ist die root-Partition (/
) von SUSE Linux Enterprise Desktop mit Btrfs
formatiert. Das Erstellen von Snapshots wird automatisch aktiviert, wenn die root-Partition (/
) groß genug ist (mehr als ca. 16 GB). Snapshots auf anderen Partitionen als /
werden standardmäßig deaktiviert.
Wenn Sie Snapper während der Installation deaktiviert haben, können Sie dieses Werkzeug später jederzeit wieder aktivieren. Erstellen Sie hierzu eine Snapper-Standardkonfiguration für das root-Dateisystem mit:
>
sudo
snapper -c root create-config /
Aktivieren Sie dann die verschiedenen Snapshot-Typen gemäß den Anweisungen unter Abschnitt 10.1.4.1, „Deaktivieren/Aktivieren von Snapshots“.
Bei einem Btrfs-root-Dateisystem muss für Snapshots ein Dateisystem mit Subvolumes konfiguriert sein, wie vom Installationsprogramm vorgeschlagen. Die Partition muss zudem mindestens 16 GB groß sein.
Beim Erstellen eines Snapshots verweisen sowohl der Snapshot als auch das Original auf dieselben Blöcke im Dateisystem. Zunächst belegt ein Snapshot also keinen zusätzlichen Speicherplatz auf der Festplatte. Werden Daten im Original-Dateisystem bearbeitet, so werden die geänderten Datenblöcke kopiert, und die alten Datenblöcke werden im Snapshot beibehalten. Der Snapshot belegt daher dieselbe Speicherplatzmenge wie die geänderten Daten. Im Lauf der Zeit wächst der Speicherplatzbedarf eines Snapshots somit an. Wenn Sie also Dateien aus einem Btrfs
-Dateisystem löschen, auf dem sich Snapshots befinden, wird unter Umständen kein Speicherplatz freigegeben.
Snapshots befinden sich stets auf der Partition oder dem Subvolume, auf dem der Snapshot aufgenommen wurde. Es ist nicht möglich, einen Snapshot auf einer anderen Partition oder einem anderen Subvolume zu speichern.
Folglich müssen Partitionen mit Snapshots größer sein als Partitionen ohne Snapshots. Die genaue Speichermenge ist dabei stark abhängig von der Anzahl der Snapshots und vom Umfang der Änderungen an den Daten. Als Faustregel sollten Sie für diese Partitionen doppelt so viel Speicherplatz vorsehen wie normalerweise. Um zu verhindern, dass es zu wenig Speicherplatz gibt, werden alte Snapshots automatisch bereinigt. Weitere Informationen finden Sie unter Abschnitt 10.1.4.4, „Steuern der Snapshot-Archivierung“.
10.1.1 Standardeinstellungen #
- Festplatten größer als 16 GB
Konfigurationsdatei:
/etc/snapper/configs/root
USE_SNAPPER=yes
TIMELINE_CREATE=no
- Festplatten kleiner als 16 GB
Konfigurationsdatei: nicht erstellt
USE_SNAPPER=no
TIMELINE_CREATE=yes
10.1.2 Typen von Snapshots #
Die Snapshots an sich unterscheiden sich streng genommen nicht voneinander, werden allerdings dennoch gemäß den Ereignissen, die sie ausgelöst haben, in drei Snapshot-Typen gegliedert:
- Zeitleisten-Snapshots
In Abständen von einer Stunde wird ein einzelner Snapshot erstellt. Alte Snapshots werden automatisch gelöscht. Standardmäßig wird der erste Snapshot der letzten zehn Tage, Monate und Jahre beibehalten. Bei der YaST-Methode für die Betriebssysteminstallation (Standard) sind Zeitleisten-Snapshots aktiviert, außer für das root-Dateisystem.
- Installations-Snapshots
Wenn Sie ein oder mehrere Pakete mit YaST oder zypper installieren, wird ein Snapshot-Paar erstellt: ein Snapshot vor Beginn der Installation („Pre“) und ein zweiter Snapshot nach Abschluss der Installation („Post“). Wird eine wichtige Systemkomponente installiert (z. B. der Kernel), wird das Snapshot-Paar als wichtig gekennzeichnet (
important=yes
). Alte Snapshots werden automatisch gelöscht. Standardmäßig werden die letzten zehn wichtigen Snapshots und die letzten zehn „normalen“ Snapshots (auch Verwaltungs-Snapshots) beibehalten. Installations-Snapshots sind standardmäßig aktiviert.- Verwaltungs-Snapshots
Wenn Sie die Verwaltung eines Systems mit YaST vornehmen, wird ein Snapshot-Paar erstellt: ein Snapshot beim Starten eines YaST-Moduls („Pre“) und ein zweiter Snapshot beim Schließen des Moduls („Post“). Alte Snapshots werden automatisch gelöscht. Standardmäßig werden die letzten zehn wichtigen Snapshots und die letzten zehn „normalen“ Snapshots (auch Installations-Snapshots) beibehalten. Administrations-Snapshots sind standardmäßig aktiviert.
10.1.3 Verzeichnisse, die aus Snapshots ausgenommen sind #
Bestimmte Verzeichnisse müssen aus verschiedenen Gründen aus den Snapshots ausgenommen werden. Die folgende Liste zeigt alle ausgeschlossenen Verzeichnisse:
/boot/grub2/i386-pc
,/boot/grub2/x86_64-efi
,/boot/grub2/powerpc-ieee1275
,/boot/grub2/s390x-emu
Ein Rollback der Bootloader-Konfiguration wird nicht unterstützt. Die obigen Verzeichnisse sind abhängig von der Architektur. Die ersten beiden Verzeichnisse gelten für AMD64-/Intel 64-Computer und die letzten beiden Verzeichnisse für IBM POWER bzw. für IBM Z.
/home
Wenn sich
/home
nicht auf einer separaten Partition befindet, wird dieses Verzeichnis ausgeschlossen, damit bei einem Rollback kein Datenverlust eintritt./opt
Produkte von Drittanbietern werden in der Regel im Verzeichnis
/opt
installiert. Dieses Verzeichnis wird ausgeschlossen, damit die betreffenden Anwendungen bei einem Rollback nicht deinstalliert werden./srv
Enthält Daten für Web- und FTP-Server. Ausgeschlossen, damit bei einem Rollback kein Datenverlust eintritt.
/tmp
Alle Verzeichnisse, die temporäre Dateien und Caches enthalten, werden aus den Snapshots ausgeschlossen.
/usr/local
Dieses Verzeichnis wird bei der manuellen Installation von Software verwendet. Dieses Verzeichnis wird ausgeschlossen, damit die betreffenden Installationen bei einem Rollback nicht deinstalliert werden.
/var
Dieses Verzeichnis enthält viele Variablendateien, einschließlich Protokolle, temporäre Caches und Drittanbieterprodukte in
/var/opt
. Es ist der Standardspeicherort für Images und Datenbanken von virtuellen Maschinen. Daher wird dieses Subvolume so erstellt, dass alle Variablendaten von Snapshots ausgeschlossen werden und „Kopie beim Schreiben“ deaktiviert ist.
10.1.4 Anpassen der Einrichtung #
Die Standardeinrichtung von SUSE Linux Enterprise Desktop deckt die meisten Anwendungsfälle ab. Sie haben jedoch die Möglichkeit, alle Aspekte beim Anfertigen und Beibehalten der Snapshots ganz nach Ihren Anforderungen zu konfigurieren.
10.1.4.1 Deaktivieren/Aktivieren von Snapshots #
Die drei Snapshot-Typen (Zeitleiste, Installation, Administration) können unabhängig voneinander einzeln aktiviert oder deaktiviert werden.
- Deaktivieren/Aktivieren von Zeitleisten-Snapshots
Aktivieren von.
snapper -c root set-config "TIMELINE_CREATE=yes"
Deaktivieren.
snapper -c root set-config "TIMELINE_CREATE=no"
Bei der YaST-Methode für die Betriebssysteminstallation (Standard) sind Zeitleisten-Snapshots aktiviert, außer für das root-Dateisystem.
- Deaktivieren/Aktivieren von Installations-Snapshots
Aktivieren von: Installieren Sie das Paket
snapper-zypp-plugin
Deaktivieren: Deinstallieren Sie das Paket
snapper-zypp-plugin
Installations-Snapshots sind standardmäßig aktiviert.
- Deaktivieren/Aktivieren von Administrations-Snapshots
Aktivieren: Legen Sie
USE_SNAPPER
aufyes
in/etc/sysconfig/yast2
fest.Deaktivieren: Legen Sie
USE_SNAPPER
aufno
in/etc/sysconfig/yast2
fest.Administrations-Snapshots sind standardmäßig aktiviert.
10.1.4.2 Steuern von Installations-Snapshots #
Das Anfertigen von Snapshot-Paaren beim Installieren von Paketen mit YaST oder Zypper erfolgt mit snapper-zypp-plugin
. Die XML-Konfigurationsdatei /etc/snapper/zypp-plugin.conf
definiert den Zeitpunkt, zu dem die Snapshots erstellt werden sollen. Standardmäßig sieht die Datei folgendermaßen aus:
1 <?xml version="1.0" encoding="utf-8"?> 2 <snapper-zypp-plugin-conf> 3 <solvables> 4 <solvable match="w"1 important="true"2>kernel-*3</solvable> 5 <solvable match="w" important="true">dracut</solvable> 6 <solvable match="w" important="true">glibc</solvable> 7 <solvable match="w" important="true">systemd*</solvable> 8 <solvable match="w" important="true">udev</solvable> 9 <solvable match="w">*</solvable>4 10 </solvables> 11 </snapper-zypp-plugin-conf>
Das Übereinstimmungsattribut definiert, ob das Schema eine Wildcard im Unix-Shell-Format ( | |
Wenn für das angegebene Schema eine Übereinstimmung vorliegt und das entsprechende Paket als wichtig gekennzeichnet ist (z. B. Kernel-Pakete), wird der Snapshot ebenfalls als wichtig gekennzeichnet. | |
Schema, das mit einem Paketnamen abgeglichen werden soll. Gemäß der Einstellung für das Attribut | |
Mit dieser Zeile werden alle Pakete als übereinstimmend eingestuft. |
Bei dieser Konfiguration werden Snapshot-Paare angefertigt, sobald ein Paket installiert wird (Zeile 9). Wenn Kernel-, dracut-, glibc-, systemd- oder udev-Pakete installiert werden, die als wichtig gekennzeichnet sind, wird auch das Snapshot-Paar als wichtig gekennzeichnet (Zeile 4 bis 8). Alle Regeln werden ausgewertet.
Zum Deaktivieren einer Regel können Sie die betreffende Regel löschen oder mithilfe von XML-Kommentaren deaktivieren. Wenn das System beispielsweise keine Snapshot-Paare für alle Paketinstallationen anfertigen soll, kommentieren Sie Zeile 9 aus:
1 <?xml version="1.0" encoding="utf-8"?> 2 <snapper-zypp-plugin-conf> 3 <solvables> 4 <solvable match="w" important="true">kernel-*</solvable> 5 <solvable match="w" important="true">dracut</solvable> 6 <solvable match="w" important="true">glibc</solvable> 7 <solvable match="w" important="true">systemd*</solvable> 8 <solvable match="w" important="true">udev</solvable> 9 <!-- <solvable match="w">*</solvable> --> 10 </solvables> 11 </snapper-zypp-plugin-conf>
10.1.4.3 Erstellen und Einhängen neuer Subvolumes #
Das Erstellen eines neuen Subvolumes unter der /
-Hierarchie und das dauerhafte Einhängen dieses Subvolumes werden unterstützt. Ein solches Subvolume wird in den Snapshots nicht berücksichtigt. Das Subvolume darf nicht in einem vorhandenen Snapshot angelegt werden, da Sie dann nach einem Rollback keine Snapshots mehr löschen könnten.
SUSE Linux Enterprise Desktop ist mit dem Subvolume /@/
konfiguriert, das als unabhängiger Root für dauerhafte Subvolumes wie /opt
, /srv
oder /home
und andere fungiert. Alle erstellten und dauerhaft eingehängten Subvolumes müssen in diesem anfänglichen root-Dateisystem erstellt werden.
Führen Sie hierzu die nachfolgenden Befehle aus. In diesem Beispiel wird das neue Subvolume /usr/important
aus /dev/sda2
erstellt.
>
sudo
mount /dev/sda2 -o subvol=@ /mnt>
sudo
btrfs subvolume create /mnt/usr/important>
sudo
umount /mnt
Der zugehörige Eintrag in /etc/fstab
muss wie folgt lauten:
/dev/sda2 /usr/important btrfs subvol=@/usr/important 0 0
Ein Subvolume kann Dateien enthalten, die sich fortwährend ändern, z. B. virtualisierte Festplatten-Images, Datenbankdateien oder Protokolldateien. Wenn dies der Fall ist, sollten Sie die Copy-on-Write-Funktion für dieses Volume deaktivieren, damit die Festplattenblöcke nicht dupliziert werden. Geben Sie hierzu die Einhängeoption nodatacow
in /etc/fstab
an:
/dev/sda2 /usr/important btrfs nodatacow,subvol=@/usr/important 0 0
Mit dem Befehl chattr +C
PATH
können Sie das Copy-on-Write-Verfahren alternativ für einzelne Dateien oder Verzeichnisse deaktivieren.
10.1.4.4 Steuern der Snapshot-Archivierung #
Snapshots belegen Speicherplatz auf der Festplatte. Damit keine Systemfehler wegen mangelnden Festplattenspeichers auftreten, werden alte Snapshots automatisch gelöscht. Standardmäßig werden zehn wichtige Installations- und Verwaltungs-Snapshots und bis zu zehn normale Installations- und Verwaltungs-Snapshots beibehalten. Wenn diese Snapshots mehr als 50 % des root-Dateisystems einnehmen, werden zusätzliche Snapshots gelöscht. Mindestens vier wichtige und zwei normale Snapshots werden immer beibehalten.
Anweisungen zum Ändern dieser Werte finden Sie in Abschnitt 10.5.1, „Verwalten vorhandener Konfigurationen“.
10.1.4.5 Verwenden von Snapper auf LVM-Volumes mit Thin Provisioning #
Neben Snapshots auf Btrfs
-Dateisystemen unterstützt Snapper auch das Erstellen von Snapshots auf LVM-Volumes mit Thin Provisioning (Snapshots auf normalen LVM-Volumes werden nicht unterstützt), die mit XFS, Ext4 oder Ext3 formatiert sind. Weitere Informationen zu LVM-Volumes sowie Anweisungen zum Einrichten dieser Volumes finden Sie im Abschnitt 7.3, „LVM-Konfiguration“.
Um Snapper auf einem LVM-Volume mit Thin Provisioning zu nutzen, müssen Sie eine Snapper-Konfiguration für dieses Volume erstellen. Auf LVM muss das Dateisystem mit --fstype=lvm(FILESYSTEM)
angegeben werden. ext3
, etx4
und xfs
sind zulässige Werte für FILESYSTEM. Beispiel:
>
sudo
snapper -c lvm create-config --fstype="lvm(xfs)" /thin_lvm
Sie können diese Konfiguration gemäß den Anweisungen unter Abschnitt 10.5.1, „Verwalten vorhandener Konfigurationen“ an Ihre Anforderungen anpassen.
10.2 Rückgängigmachen von Änderungen mit Snapper #
Snapper unter SUSE Linux Enterprise Desktop ist als Werkzeug vorkonfiguriert, mit dem Sie die Änderungen rückgängig machen, die von zypper
und YaST vorgenommen werden. Hierzu ist Snapper so konfiguriert, dass vor und nach jeder Ausführung von zypper
bzw. YaST ein Snapshot-Paar erstellt wird. Mit Snapper können Sie außerdem Systemdateien wiederherstellen, die versehentlich gelöscht oder geändert wurden. Zeitleisten-Snapshots für die root-Partition müssen für diesen Zweck aktiviert werden. Weitere Detailinformationen finden Sie unter Abschnitt 10.1.4.1, „Deaktivieren/Aktivieren von Snapshots“.
Standardmäßig werden automatische Snapshots (wie oben beschrieben) für die root-Partition und deren Subvolumes konfiguriert. Sollen Snapshots auch für andere Partitionen zur Verfügung stehen, beispielsweise für /home
, können Sie benutzerdefinierte Konfigurationen anlegen.
Beim Wiederherstellen von Daten mithilfe von Snapshots ist zu beachten, dass Snapper zwei grundlegend verschiedene Szenarien bearbeiten kann:
- Rückgängigmachen von Änderungen
Beim Rückgängigmachen von Änderungen gemäß den nachfolgenden Anweisungen werden zwei Snapshots miteinander verglichen, und die Änderungen zwischen diesen beiden Snapshots werden rückgängig gemacht. Bei diesem Verfahren können Sie zudem die wiederherzustellenden Dateien explizit auswählen.
- Rollback
Beim Rollback gemäß den Anweisungen in Abschnitt 10.3, „System-Rollback durch Booten aus Snapshots“ wird das System in den Zustand zurückversetzt, der beim Anfertigen des Snapshots vorlag.
Beim Rückgängigmachen von Änderungen können Sie außerdem einen Snapshot mit dem aktuellen System vergleichen. Das Wiederherstellen aller Dateien aus einem solchen Vergleich liefert dasselbe Ergebnis wie ein Rollback. Für ein Rollback ist jedoch das in Abschnitt 10.3, „System-Rollback durch Booten aus Snapshots“ beschriebene Verfahren vorzuziehen, da es schneller ist und Sie das System vor dem Ausführen des Rollbacks prüfen können.
Es gibt keinen Mechanismus, mit dem die Datenkonsistenz beim Erstellen von Snapshots gewährleistet werden kann. Wenn eine Datei (z. B. eine Datenbank) zur selben Zeit geschrieben wird, während der Snapshot erstellt wird, so wird diese Datei beschädigt oder nur teilweise geschrieben. Beim Wiederherstellen dieser Datei treten Probleme auf. Darüber hinaus dürfen bestimmte Systemdateien wie /etc/mtab
unter keinen Umständen wiederhergestellt werden. Es wird daher dringend empfohlen, die Liste der geänderten Dateien und ihrer Unterschiede (Diffs) in jedem Fall sorgfältig zu prüfen. Stellen Sie nur solche Dateien wieder her, die tatsächlich zu der zurückzunehmenden Aktion gehören.
10.2.1 Rückgängigmachen von Änderungen durch YaST oder Zypper #
Wenn Sie die Stammpartition während der Installation mit Btrfs
einrichten, wird Snapper (für Rollbacks von Änderungen durch YaST oder Zypper vorkonfiguriert) automatisch installiert. Bei jedem Starten eines YaST-Moduls und bei jeder Zypper-Transaktion werden zwei Snapshots erstellt: ein „Pre-Snapshot“ mit dem Zustand des Dateisystems vor dem Start des Moduls und ein „Post-Snapshot“ nach Beendigung des Moduls.
Mit dem YaST-Snapper-Modul oder mit dem snapper
-Befehlszeilenwerkzeug können Sie Dateien aus dem „Pre-Snapshot“ wiederherstellen und so die Änderungen durch YaST/Zypper rückgängig machen. Durch den Vergleich der beiden Snapshots mit diesen Werkzeugen erkennen Sie außerdem, welche Dateien geändert wurden. Darüber hinaus können Sie die Unterschiede (Diff) zwischen zwei Versionen einer Datei abrufen.
Starten Sie das
-Modul im Abschnitt in YaST, oder geben Sieyast2 snapper
ein.Unter
muss die Option eingestellt sein. Dies ist im Prinzip immer der Fall, sofern Sie nicht eigene Snapper-Konfigurationen manuell hinzugefügt haben.Wählen Sie ein Pre-/Post-Snapshot-Paar aus der Liste aus. Sowohl die YaST als auch die Zypper-Snapshot-Paare sind vom Typ
. Für YaST-Snapshots wird die Bezeichnungzypp(y2base)
in der angezeigt, für zypper-Snapshots die Bezeichnungzypp(zypper)
.Klicken Sie auf
. Die Liste der Dateien, bei denen Unterschiede zwischen den beiden Snapshots bestehen, wird geöffnet.Prüfen Sie die Dateiliste. Zum Anzeigen der Unterschiede („Diff“) zwischen der Pre- und der Post-Version einer Datei wählen Sie die Datei aus der Liste aus.
Zum Wiederherstellen von einer oder mehreren Dateien aktivieren Sie das entsprechende Kontrollkästchen für die gewünschten Dateien oder Verzeichnisse. Klicken Sie auf
, und bestätigen Sie den Vorgang mit .Zum Wiederherstellen einer einzelnen Datei klicken Sie auf den Namen dieser Datei. Die Diff-Ansicht der Datei wird aktiviert. Klicken Sie auf
, und bestätigen Sie mit .
snapper
#Rufen Sie eine Liste der YaST- und Zypper-Snapshots ab, indem Sie
snapper list -t pre-post
ausführen. Für YaST-Snapshots wird die Bezeichnungyast MODULE_NAME
in der angezeigt, für zypper-Snapshots die Bezeichnungzypp(zypper)
.>
sudo
snapper list -t pre-post Pre # | Post # | Pre Date | Post Date | Description ------+--------+-------------------------------+-------------------------------+-------------- 311 | 312 | Tue 06 May 2018 14:05:46 CEST | Tue 06 May 2018 14:05:52 CEST | zypp(y2base) 340 | 341 | Wed 07 May 2018 16:15:10 CEST | Wed 07 May 2018 16:15:16 CEST | zypp(zypper) 342 | 343 | Wed 07 May 2018 16:20:38 CEST | Wed 07 May 2018 16:20:42 CEST | zypp(y2base) 344 | 345 | Wed 07 May 2018 16:21:23 CEST | Wed 07 May 2018 16:21:24 CEST | zypp(zypper) 346 | 347 | Wed 07 May 2018 16:41:06 CEST | Wed 07 May 2018 16:41:10 CEST | zypp(y2base) 348 | 349 | Wed 07 May 2018 16:44:50 CEST | Wed 07 May 2018 16:44:53 CEST | zypp(y2base) 350 | 351 | Wed 07 May 2018 16:46:27 CEST | Wed 07 May 2018 16:46:38 CEST | zypp(y2base)Mit dem Befehl
snapper status
PRE erhalten Sie eine Liste der geänderten Dateien für ein Snapshot-Paar.POST. Dateien, deren Inhalt geändert wurde, sind mit gekennzeichnet, hinzugefügte Dateien mit und gelöschte Dateien mit .>
sudo
snapper status 350..351 +..... /usr/share/doc/packages/mikachan-fonts +..... /usr/share/doc/packages/mikachan-fonts/COPYING +..... /usr/share/doc/packages/mikachan-fonts/dl.html c..... /usr/share/fonts/truetype/fonts.dir c..... /usr/share/fonts/truetype/fonts.scale +..... /usr/share/fonts/truetype/みかちゃん-p.ttf +..... /usr/share/fonts/truetype/みかちゃん-pb.ttf +..... /usr/share/fonts/truetype/みかちゃん-ps.ttf +..... /usr/share/fonts/truetype/みかちゃん.ttf c..... /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-x86_64.cache-4 c..... /var/lib/rpm/Basenames c..... /var/lib/rpm/Dirnames c..... /var/lib/rpm/Group c..... /var/lib/rpm/Installtid c..... /var/lib/rpm/Name c..... /var/lib/rpm/Packages c..... /var/lib/rpm/Providename c..... /var/lib/rpm/Requirename c..... /var/lib/rpm/Sha1header c..... /var/lib/rpm/Sigmd5Zum Anzeigen der Unterschiede (Diff) für eine bestimmte Datei führen Sie
snapper diff
PRE aus.POST FILENAME. Wenn Sie FILENAME nicht angeben, wird die Diff-Ansicht für alle Dateien angezeigt.>
sudo
snapper diff 350..351 /usr/share/fonts/truetype/fonts.scale --- /.snapshots/350/snapshot/usr/share/fonts/truetype/fonts.scale 2014-04-23 15:58:57.000000000 +0200 +++ /.snapshots/351/snapshot/usr/share/fonts/truetype/fonts.scale 2014-05-07 16:46:31.000000000 +0200 @@ -1,4 +1,4 @@ -1174 +1486 ds=y:ai=0.2:luximr.ttf -b&h-luxi mono-bold-i-normal--0-0-0-0-c-0-iso10646-1 ds=y:ai=0.2:luximr.ttf -b&h-luxi mono-bold-i-normal--0-0-0-0-c-0-iso8859-1 [...]Zum Wiederherstellen einer oder mehrerer Dateien führen Sie
snapper -v undochange
PRE aus.POST FILENAMES. Wenn Sie FILENAMES nicht angeben, werden alle geänderten Dateien wiederhergestellt.>
sudo
snapper -v undochange 350..351 create:0 modify:13 delete:7 undoing change... deleting /usr/share/doc/packages/mikachan-fonts deleting /usr/share/doc/packages/mikachan-fonts/COPYING deleting /usr/share/doc/packages/mikachan-fonts/dl.html deleting /usr/share/fonts/truetype/みかちゃん-p.ttf deleting /usr/share/fonts/truetype/みかちゃん-pb.ttf deleting /usr/share/fonts/truetype/みかちゃん-ps.ttf deleting /usr/share/fonts/truetype/みかちゃん.ttf modifying /usr/share/fonts/truetype/fonts.dir modifying /usr/share/fonts/truetype/fonts.scale modifying /var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-x86_64.cache-4 modifying /var/lib/rpm/Basenames modifying /var/lib/rpm/Dirnames modifying /var/lib/rpm/Group modifying /var/lib/rpm/Installtid modifying /var/lib/rpm/Name modifying /var/lib/rpm/Packages modifying /var/lib/rpm/Providename modifying /var/lib/rpm/Requirename modifying /var/lib/rpm/Sha1header modifying /var/lib/rpm/Sigmd5 undoing change done
Es wird nicht empfohlen, das Hinzufügen von Benutzern durch Rückgängigmachen von Änderungen zurückzunehmen. Einige Dateien, die zu diesen Benutzern gehören, verbleiben im System, da bestimmte Verzeichnisse von den Snapshots ausgeschlossen sind. Wenn ein Benutzer mit derselben Benutzer-ID wie ein gelöschter Benutzer erstellt wird, würde dieser neue Benutzer die zurückgebliebenen Dateien erben. Für das Entfernen von Benutzern wird daher dringend das YaST-Werkzeug
empfohlen.10.2.2 Wiederherstellen von Dateien mit Snapper #
Neben den Installations- und Verwaltungs-Snapshots werden auch Zeitleisten-Snapshots in Snapper angefertigt. Mithilfe dieser Sicherungs-Snapshots können Sie Dateien wiederherstellen, die versehentlich gelöscht wurden, oder eine frühere Version einer Datei wiederherstellen. Mit der Diff-Funktion in Snapper können Sie außerdem feststellen, welche Änderungen zu einem bestimmten Zeitpunkt vorgenommen wurden.
Das Wiederherstellen von Daten ist besonders für Daten interessant, die sich in Subvolumes oder Partitionen befinden, für die standardmäßig keine Snapshots erstellt werden. Damit Sie beispielsweise Dateien aus einem home-Verzeichnis wiederherstellen können, legen Sie eine separate Snapper-Konfiguration für /home
an, mit der automatische Zeitleisten-Snapshots angefertigt werden. Eine Anleitung dazu finden Sie unter Abschnitt 10.5, „Erstellen und Bearbeiten von Snapper-Konfigurationen“.
Anhand der Snapshots für das root-Dateisystem (in der root-Konfiguration von Snapper definiert) können Sie ein Rollback des Systems vornehmen. Hierzu wird empfohlen, aus dem Snapshot zu booten und dann das Rollback auszuführen. Ausführliche Informationen finden Sie unter Abschnitt 10.3, „System-Rollback durch Booten aus Snapshots“.
Zum Ausführen eines Rollbacks können Sie alternativ alle Dateien aus einem root-Dateisystem gemäß den nachfolgenden Anweisungen wiederherstellen. Diese Methode wird jedoch nicht empfohlen. Sie können durchaus einzelne Dateien wiederherstellen, beispielsweise eine Konfigurationsdatei im Verzeichnis /etc
, nicht jedoch die gesamte Liste aller Dateien im Snapshot.
Diese Beschränkung gilt nur für Snapshots, die für das root-Dateisystem angefertigt wurden.
Starten Sie das
-Modul im Abschnitt in YaST, oder geben Sieyast2 snapper
ein.Wählen Sie die
aus, von der ein Snapshot ausgewählt werden soll.Wählen Sie einen Zeitleisten-Snapshot aus, aus dem eine Datei wiederhergestellt werden soll, und wählen Sie
. Zeitleisten-Snapshots weisen den Typ und den Beschreibungswert (Zeitachse) auf.Wählen Sie eine Datei im Textfeld aus; klicken Sie hierzu auf den Dateinamen. Die Unterschiede zwischen der Snapshot-Version und dem aktuellen System werden angezeigt. Aktivieren Sie das Kontrollkästchen für die wiederherzustellende Datei. Wiederholen Sie dies für alle wiederherzustellenden Dateien.
Klicken Sie auf
, und bestätigen Sie den Vorgang mit .
snapper
#Mit dem folgenden Befehl erhalten Sie eine Liste der Zeitleisten-Snapshots für eine bestimmte Konfiguration:
>
sudo
snapper -c CONFIG list -t single | grep timelineErsetzen Sie CONFIG durch eine vorhandene Snapper-Konfiguration. Mit
snapper list-configs
rufen Sie eine Liste ab.Mit dem folgenden Befehl erhalten Sie eine Liste der geänderten Dateien in einem bestimmten Snapshot:
>
sudo
snapper -c CONFIG status SNAPSHOT_ID..0Ersetzen Sie SNAPSHOT_ID durch die ID des Snapshots, aus dem die Dateien wiederhergestellt werden sollen.
Rufen Sie optional mit dem folgenden Befehl eine Liste der Unterschiede zwischen der aktuellen Dateiversion und der Dateiversion im Snapshot ab:
>
sudo
snapper -c CONFIG diff SNAPSHOT_ID..0 FILE NAMEWenn Sie keinen Dateinamen (<FILE NAME>) angeben, werden die Unterschiede für alle Dateien angezeigt.
Zum Wiederherstellen einer oder mehrerer Dateien führen Sie Folgendes aus:
>
sudo
snapper -c CONFIG -v undochange SNAPSHOT_ID..0 FILENAME1 FILENAME2Wenn Sie keine Dateinamen angeben, werden alle geänderten Dateien wiederhergestellt.
10.3 System-Rollback durch Booten aus Snapshots #
Mit der GRUB 2-Version in SUSE Linux Enterprise Desktop können Sie aus Btrfs-Snapshots booten. Zusammen mit der Rollback-Funktion in Snapper sind Sie so in der Lage, ein falsch konfiguriertes System wiederherzustellen. Nur Snapshots, die für die Snapper-Standardkonfiguration (root
) erstellt wurden, sind bootfähig.
Ab SUSE Linux Enterprise Desktop 15 SP6 werden System-Rollbacks nur unterstützt, wenn die Konfiguration des Standard-Subvolumes der root-Partition nicht geändert wurde.
Beim Booten eines Snapshots werden die Teile des Dateisystems, die sich im Snapshot befinden, schreibgeschützt eingehängt. Alle anderen Dateisysteme und Teile, die aus Snapshots ausgeschlossen sind, werden schreibfähig eingehängt und können bearbeitet werden.
Beim Wiederherstellen von Daten mithilfe von Snapshots ist zu beachten, dass Snapper zwei grundlegend verschiedene Szenarien bearbeiten kann:
- Rückgängigmachen von Änderungen
Beim Rückgängigmachen von Änderungen gemäß den Anweisungen in Abschnitt 10.2, „Rückgängigmachen von Änderungen mit Snapper“ werden zwei Snapshots miteinander verglichen, und die Änderungen zwischen diesen beiden Snapshots werden rückgängig gemacht. Bei diesem Verfahren können Sie zudem die Dateien, die von der Wiederherstellung ausgeschlossen werden sollen, explizit auswählen.
- Rollback
Beim Rollback gemäß den folgenden Anweisungen wird das System in den Zustand zurückversetzt, der beim Anfertigen des Snapshots vorlag.
Zum Ausführen eines Rollbacks aus einem bootfähigen Snapshot müssen die nachfolgenden Anforderungen erfüllt sein. Bei einer Standardinstallation wird das System entsprechend eingerichtet.
Das root-Dateisystem muss Btrfs sein. Das Booten aus Snapshots für LVM-Volumes wird nicht unterstützt.
Das Root-Dateisystem muss sich auf einem einzelnen Gerät befinden. Um dies zu überprüfen, führen Sie
sudo /sbin/btrfs filesystem show
aus.Total devices 1
muss ausgegeben werden. Wenn mehr als1
Gerät aufgeführt ist, wird Ihr Setup nicht unterstützt.Anmerkung: Verzeichnisse, die aus Snapshots ausgeschlossen sindVerzeichnisse, die aus Snapshots ausgeschlossen sind, beispielsweise
/srv
(vollständige Liste siehe Abschnitt 10.1.3, „Verzeichnisse, die aus Snapshots ausgenommen sind“), können sich auf separaten Geräten befinden.Das System muss über den installierten Bootlader bootfähig sein.
Nur der Inhalt des Subvolumes
/
wird zurückgesetzt. Es ist nicht möglich, andere Subvolumes einzubeziehen.
So führen Sie ein Rollback aus einem bootfähigen Snapshot aus:
Booten Sie das System. Wählen Sie im Bootmenü den Eintrag
(Bootfähige Snapshots), und wählen Sie den zu bootenden Snapshot aus. Die Snapshots sind nach Datum geordnet, wobei der jüngste Snapshot an oberster Stelle steht.Melden Sie sich beim System an. Prüfen Sie sorgfältig, ob alle Funktionen wie erwartet arbeiten. Beachten Sie, dass Sie in kein Verzeichnis schreiben können, das Teil des Snapshots ist. Daten, die Sie in andere Verzeichnisse schreiben, gehen nicht verloren, unabhängig von Ihrem nächsten Schritt.
Wählen Sie den nächsten Schritt abhängig davon aus, ob das Rollback ausgeführt werden soll oder nicht:
Wenn sich das System in einem Status befindet, in dem kein Rollback ausgeführt werden soll, booten Sie erneut in den aktuellen Systemstatus. Sie können dann einen anderen Snapshot auswählen oder das Rettungssystem starten.
Zum Ausführen des Rollbacks führen Sie Folgendes aus:
>
sudo
snapper rollbackFühren Sie anschließend einen Reboot aus. Wählen Sie im Bootbildschirm den Standard-Booteintrag. Das neu eingesetzte System wird erneut gebootet. Ein Snapshot mit dem Zustand des Dateisystems, bevor das Rollback erstellt wird. Das Standard-Subvolume für root wird durch einen frischen Schreib-Lese-Snapshot ersetzt. Weitere Informationen finden Sie unter Abschnitt 10.3.1, „Snapshots nach dem Rollback“.
Es ist sinnvoll, eine Beschreibung für den Snapshot mit der Option
-d
hinzuzufügen. Beispiel:New file system root since rollback on DATE TIME
Wenn die Snapshots bei der Installation nicht deaktiviert werden, wird am Ende der ursprünglichen Systeminstallation ein anfänglicher bootfähiger Snapshot angelegt. Diesen Zustand können Sie jederzeit wiederherstellen; booten Sie hierzu diesen Snapshot. Der Snapshot ist an der Beschreibung after installation
erkennbar.
Auch beim Starten eines Systemupgrades auf ein Service Pack oder eine neue Hauptversion wird ein bootfähiger Snapshot erstellt (sofern die Snapshots nicht deaktiviert sind).
10.3.1 Snapshots nach dem Rollback #
Vor dem Ausführen eines Rollbacks wird ein Snapshot des laufenden Dateisystems erstellt. Die Beschreibung verweist auf die ID des Snapshots, der mit dem Rollback wiederhergestellt wurde.
Die mit Rollbacks erstellten Snapshots erhalten den Wert number
für das Attribut Cleanup
. Die Rollback-Snapshots werden daher automatisch gelöscht, sobald die angegebene Anzahl von Snapshots erreicht ist. Weitere Informationen finden Sie unter Abschnitt 10.7, „Automatisches Bereinigen von Snapshots“. Wenn der Snapshot wichtige Daten enthält, extrahieren Sie die Daten aus dem Snapshot, bevor er entfernt wird.
10.3.1.1 Beispiel für einen Rollback-Snapshot #
Nach einer Neuinstallation liegen beispielsweise die folgenden Snapshots auf dem System vor:
#
snapper
--iso list Type | # | | Cleanup | Description | Userdata -------+---+ ... +---------+-----------------------+-------------- single | 0 | | | current | single | 1 | | | first root filesystem | single | 2 | | number | after installation | important=yes
Nach dem Ausführen von sudo snapper rollback
wird der Snapshot 3
erstellt. Dieser Snapshot enthält den Zustand des Systems vor Beginn des Rollbacks. Snapshot 4
ist das neue Btrfs-Standard-Subvolume und damit das neue System nach dem Neustart.
#
snapper
--iso list Type | # | | Cleanup | Description | Userdata -------+---+ ... +---------+-----------------------+-------------- single | 0 | | | current | single | 1 | | number | first root filesystem | single | 2 | | number | after installation | important=yes single | 3 | | number | rollback backup of #1 | important=yes single | 4 | | | |
10.3.2 Abrufen und Erkennen von Snapshot-Booteinträgen #
Zum Booten aus einem Snapshot booten Sie den Computer neu und wählen Sie ↓ und ↑ zum gewünschten Snapshot und aktivieren Sie ihn mit Eingabetaste. Wenn Sie einen Snapshot aus dem Bootmenü heraus aktivieren, wird der Computer nicht sofort neu gestartet; stattdessen wird der Bootloader des ausgewählten Snapshots geöffnet.
(Bootloader aus einem schreibgeschützten Snapshot starten). Ein Bildschirm mit allen bootfähigen Snapshots wird geöffnet. Der jüngste Snapshot steht an erster Stelle in der Liste, der älteste entsprechend an letzter Stelle. Navigieren Sie mit den TastenWeitere Informationen finden Sie in https://www.suse.com/support/kb/doc/?id=000020602.
Die einzelnen Snapshot-Einträge im Bootloader sind an ihrem Namensschema leicht erkennbar:
[*]1OS2 (KERNEL3,DATE4TTIME5,DESCRIPTION6)
Wenn der Snapshot als | |
Bezeichnung des Betriebssystems. | |
Datum im Format | |
Uhrzeit im Format | |
Dieses Feld enthält eine Beschreibung des Snapshots. Bei einem manuell erstellten Snapshot ist dies die Zeichenkette, die mit der Option |
Sie können die standardmäßige Zeichenkette im Beschreibungsfeld eines Snapshots durch eine benutzerdefinierte Zeichenkette ersetzen. Dies empfiehlt sich beispielsweise, wenn eine automatisch erstellte Beschreibung nicht ausreicht oder eine benutzerdefinierte Beschreibung zu lang ist. Mit dem folgenden Befehl legen Sie eine benutzerdefinierte Zeichenkette STRING für den Snapshot NUMBER fest:
>
sudo
snapper modify --userdata "bootloader=STRING" NUMBER
Die Beschreibung sollte nicht mehr als 25 Zeichen haben. Längere Beschreibungen sind auf dem Bootbildschirm nicht lesbar.
10.3.3 Nutzungsbeschränkungen #
Ein vollständiges System-Rollback, bei dem der exakte Zustand des gesamten Systems zum Zeitpunkt eines Snapshots wiederhergestellt wird, ist nicht möglich.
10.3.3.1 Verzeichnisse, die aus Snapshots ausgenommen sind #
Snapshots des root-Dateisystems enthalten nicht alle Verzeichnisse. Weitere Informationen und Begründungen finden Sie unter Abschnitt 10.1.3, „Verzeichnisse, die aus Snapshots ausgenommen sind“. Als allgemeine Folge werden Daten in diesen Verzeichnissen nicht wiederhergestellt, was zu den nachfolgenden Beschränkungen führt.
- Add-ons und Software von Drittanbietern sind nach einem Rollback u. U. nicht nutzbar
Anwendungen und Add-ons, mit denen Daten in Subvolumes installiert werden, die vom Snapshot ausgeschlossen sind (z. B.
/opt
), sind nach einem Rollback möglicherweise nicht funktionsfähig, wenn andere Teile der Anwendungsdaten auf Subvolumes installiert wurden, die im Snapshot berücksichtigt wurden. Zum Beheben dieses Problems installieren Sie die Anwendung oder das Add-on neu.- Probleme beim Dateizugriff
Wenn bei einer Anwendung die Berechtigungen und/oder das Eigentum für Dateien zwischen dem Anfertigen des Snapshots und dem aktuellen Zustand des Systems geändert wurden, kann diese Anwendung möglicherweise nicht mehr auf diese Dateien zugreifen. Setzen Sie die Berechtigungen und/oder das Eigentum für die betreffenden Dateien nach dem Rollback zurück.
- Inkompatible Datenformate
Wenn ein Service oder eine Anwendung ein neues Datenformat zwischen dem Anfertigen des Snapshots und dem aktuellen Zustand des Systems festgelegt hat, kann die Anwendung die betreffenden Datendateien nach einem Rollback möglicherweise nicht mehr lesen.
- Subvolumes mit einer Mischung aus Code und Daten
Subvolumes wie
/srv
können eine Mischung aus Code und Daten enthalten. Bei einem Rollback entsteht dabei möglicherweise nicht funktionsfähiger Code. Ein Downgrade der PHP-Version kann beispielsweise zu fehlerhaften PHP-Skripten für den Webserver führen.- Benutzerdaten
Wenn bei einem Rollback bestimmte Benutzer aus dem System entfernt werden, so werden die Daten im Eigentum dieser Benutzer in Verzeichnissen, die vom Snapshot ausgeschlossen sind, nicht entfernt. Wenn ein Benutzer mit derselben Benutzer-ID erstellt wird, würde dieser neue Benutzer die Dateien erben. Suchen und entfernen Sie bezuglose (verwaiste) Dateien mit einem Werkzeug wie
find
.
10.3.3.2 Kein Rollback der Bootloader-Daten #
Ein Rollback des Bootloaders ist nicht möglich, da alle „Stufen“ des Bootloaders zusammenpassen müssen. Dies kann bei einem Rollback von /boot
nicht gewährleistet werden.
10.4 Aktivieren von Snapper in Benutzer-Startverzeichnissen #
Sie können Snapshots für das Verzeichnis /home
der Benutzer aktivieren, womit eine Reihe von Anwendungsfällen unterstützt wird:
Verwaltung der jeweils eigenen Snapshots und Rollbacks durch die einzelnen Benutzer
Systembenutzer, z. B. Datenbank-, System- und Netzwerkadministratoren, die Kopien der Konfigurationsdateien, Dokumentation usw. nachverfolgen möchten
Samba-Freigaben mit Startverzeichnissen und dem Btrfs-Back-End
Die einzelnen Benutzerverzeichnisse sind jeweils ein Btrfs-Subvolume von /home
. Dies kann manuell eingerichtet werden (siehe Abschnitt 10.4.3, „Manuelles Aktivieren von Snapshots in Startverzeichnissen“). pam_snapper
bietet jedoch eine komfortablere Alternative. Mit dem Paket pam_snapper
werden das Modul pam_snapper.so
und die Hilfsskripte installiert, mit denen die Benutzererstellung und die Snapper-Konfiguration automatisiert werden.
pam_snapper
sorgt für die Integration in den Befehl useradd
, in PAM (Pluggable Authentication Modules) und in Snapper. Snapshots werden standardmäßig beim An- und Abmelden eines Benutzers und zusätzlich in bestimmten Abständen erstellt, wenn Benutzer längere Zeit angemeldet bleiben. Sie können die Standardeinstellungen mit den gewohnten Snapper-Befehlen und Konfigurationsdateien ändern.
10.4.1 Installieren von pam_snapper und Erstellen von Benutzern #
Der einfachste Einstieg gelingt mit einem neuen /home
-Verzeichnis, das mit Btrfs formatiert ist, und ganz ohne Benutzer. Installieren pam_snapper
:
#
zypper in pam_snapper
Fügen Sie diese Zeile in /etc/pam.d/common-session
ein:
session optional pam_snapper.so
Verwenden Sie das Skript /usr/lib/pam_snapper/pam_snapper_useradd.sh
, um einen neuen Benutzer und ein neues Home-Verzeichnis zu erstellen. Standardmäßig führt das Skript einen Probelauf aus. Ersetzen Sie DRYRUN=1
im Skript durch DRYRUN=0
. Nun können Sie einen neuen Benutzer erstellen:
#
/usr/lib/pam_snapper/pam_snapper_useradd.sh \
username group passwd=password
Create subvolume '/home/username'
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Die Dateien aus /etc/skel
werden beim ersten Anmelden des Benutzers in sein Startverzeichnis kopiert. Rufen Sie Ihre Snapper-Konfigurationen ab und prüfen Sie, ob die Konfiguration des Benutzers erstellt wurde:
#
snapper list --all
Config: home_username, subvolume: /home/username
Type | # | Pre # | Date | User | Cleanup | Description | Userdata
-------+---+-------+------+------+---------+-------------+---------
single | 0 | | | root | | current |
Im Lauf der Zeit umfasst diese Ausgabe eine Liste der Snapshots, die der Benutzer mit den standardmäßigen Snapper-Befehlen verwalten kann.
10.4.2 Entfernen von Benutzern #
Entfernen Sie Benutzer mit dem Skript /usr/lib/pam_snapper/pam_snapper_userdel.sh
. Standardmäßig führt das Skript einen Probelauf aus. Ersetzen Sie DRYRUN=1
im Skript daher durch DRYRUN=0
. Damit werden der Benutzer, das Start-Subvolume des Benutzers und die Snapper-Konfiguration entfernt und alle Snapshots gelöscht.
#
/usr/lib/pam_snapper/pam_snapper_userdel.sh username
10.4.3 Manuelles Aktivieren von Snapshots in Startverzeichnissen #
Mit diesen Schritten richten Sie die Startverzeichnisse der Benutzer manuell für Snapper ein. /home
muss mit Btrfs formatiert sein und die Benutzer dürfen noch nicht erstellt worden sein.
#
btrfs subvol create /home/username#
snapper -c home_username create-config /home/username#
sed -i -e "s/ALLOW_USERS=\"\"/ALLOW_USERS=\"username\"/g" \ /etc/snapper/configs/home_username#
yast users add username=username home=/home/username password=password#
chown username.group /home/username#
chmod 755 /home/username/.snapshots
10.5 Erstellen und Bearbeiten von Snapper-Konfigurationen #
Das Verhalten von Snapper ist in je einer Konfigurationsdatei pro Partition und Btrfs
-Subvolume definiert. Diese Konfigurationsdateien sind unter /etc/snapper/configs/
gespeichert.
Falls das root-Dateisystem groß genug ist (etwa 12 GB), werden bei der Installation Snapshots automatisch für das root-Dateisystem /
aktiviert. Die entsprechende Standardkonfiguration hat den Namen root
. Mit ihr werden die YaST- und Zypper-Snapshots erstellt und verwaltet. Eine Liste der Standardwerte finden Sie im Abschnitt 10.5.1.1, „Konfigurationsdaten“.
Wie unter Abschnitt 10.1, „Standardeinrichtung“ erläutert, belegen Snapshots zusätzlichen freien Speicherplatz im root-Dateisystem. Die tatsächliche Menge ist abhängig von der Anzahl der installierten Pakete und der Anzahl der Änderungen am Volume, das in den Snapshots berücksichtigt wird. Auch die Snapshot-Häufigkeit und die Anzahl der archivierten Snapshots spielen eine Rolle.
Es ist eine bestimmte Mindestgröße des Dateisystems erforderlich, damit Snapshots während der Installation automatisch aktiviert werden können. Die Größe beträgt aktuell etwa 12 GB. Dieser Wert kann sich in Zukunft durchaus ändern, je nach der Architektur und der Größe des Basissystems. Dieser Wert ist abhängig vom Wert der folgenden Tags in der Datei /control.xml
auf den Installationsmedien:
<root_base_size> <btrfs_increase_percentage>
Er wird mit der folgenden Formel berechnet: ROOT_BASE_SIZE * (1 + BTRFS_INCREASE_PERCENTAGE/100)
Denken Sie daran, dass dieser Wert lediglich die Mindestgröße angibt. Stellen Sie ggf. mehr Speicherplatz für das root-Dateisystem bereit. Als Faustregel sollten Sie die Größe, die ohne aktivierte Snapshots gelten würde, verdoppeln.
Sie können eigene Konfigurationen für andere, mit Btrfs
formatierte Partitionen sowie für vorhandene Subvolumes auf einer Btrfs
-Partition erstellen. Im nachfolgenden Beispiel wird eine Snapper-Konfiguration zum Sichern der Webserverdaten eingerichtet, die sich auf einer separaten, mit Btrfs
formatierten, unter /srv/www
eingehängten Partition befinden.
Nach dem Erstellen einer Konfiguration können Sie Dateien aus diesen Snapshots wahlweise mit snapper
selbst oder mit dem -Modul in YaST wiederherstellen. In YaST wählen Sie die aus, wobei Sie die Konfiguration für snapper
mit dem globalen Schalter -c
angeben (beispielsweise snapper -c myconfig
list
).
Zum Erstellen einer neuen Snapper-Konfiguration führen Sie snapper
create-config
aus:
>
sudo
snapper -c www-data1 create-config /srv/www2
Der Name der Konfigurationsdatei. | |
Einhängepunkt der Partition oder des |
Mit diesem Befehl erstellen Sie eine neue Konfigurationdsdatei /etc/snapper/configs/www-data
mit geeigneten Standardwerten (aus /etc/snapper/config-templates/default
übernommen). Anweisungen zum Anpassen dieser Standardwerte finden Sie in Abschnitt 10.5.1, „Verwalten vorhandener Konfigurationen“.
Die Standardwerte für eine neue Konfiguration werden aus /etc/snapper/config-templates/default
übernommen. Sollen eigene Standardwerte verwendet werden, erstellen Sie eine Kopie dieser Datei in demselben Verzeichnis, und passen Sie diese Kopie gemäß Ihren Anforderungen an. Geben Sie dann die Option -t
für den Befehl create-config an:
>
sudo
snapper -c www-data create-config -t MY_DEFAULTS /srv/www
10.5.1 Verwalten vorhandener Konfigurationen #
Der Befehl snapper
bietet verschiedene Unterbefehle für die Verwaltung von vorhandenen Konfigurationen. Sie können sie auflisten, anzeigen, löschen und bearbeiten:
- Auflisten von Konfigurationen
Mit dem Unterbefehl
snapper list-configs
rufen Sie alle vorhandenen Konfigurationen ab:>
sudo
snapper list-configs Config | Subvolume -------+---------- root | / usr | /usr local | /local- Anzeigen einer Konfiguration
Mit dem Unterbefehl
snapper -c CONFIG get-config
zeigen Sie die angegebene Konfiguration an. Ersetzen Sie CONFIG durch einen der Konfigurationsnamen insnapper list-configs
. Weitere Informationen zu den Konfigurationsoptionen finden Sie in Abschnitt 10.5.1.1, „Konfigurationsdaten“.Zum Anzeigen der Standardkonfiguration führen Sie den folgenden Befehl aus:
>
sudo
snapper -c root get-config- Bearbeiten einer Konfiguration
Verwenden Sie den Unterbefehl
snapper -c CONFIG set-config OPTION=VALUE
, um eine Option in der angegebenen Konfiguration zu ändern. Ersetzen Sie CONFIG durch einen der Konfigurationsnamen insnapper list-configs
. Eine Liste der möglichen Werte für OPTION und VALUE finden Sie in Abschnitt 10.5.1.1, „Konfigurationsdaten“.- Löschen einer Konfiguration
Verwenden Sie den Unterbefehl
snapper -c CONFIG delete-config
zum Löschen einer Konfiguration. Ersetzen Sie CONFIG durch einen der Konfigurationsnamen insnapper list-configs
.
10.5.1.1 Konfigurationsdaten #
Jede Konfiguration enthält eine Liste von Optionen, die über die Befehlszeile bearbeitet werden können. Die folgende Liste zeigt weitere Details zu den einzelnen Optionen. Zum Ändern eines Werts führen Sie snapper -c CONFIG
set-config
"KEY=VALUE"
aus.
ALLOW_GROUPS
,ALLOW_USERS
Erteilt regulären Benutzern die erforderlichen Berechtigungen zum Verwenden von Snapshots. Weitere Informationen zu diesem Thema finden Sie unter dem Stichwort Abschnitt 10.5.1.2, „Verwenden von Snapper als normaler Benutzer“.
Der Standardwert ist
""
.BACKGROUND_COMPARISON
Legt fest, ob Pre- und Post-Snapshots nach dem Erstellen im Hintergrund miteinander verglichen werden sollen.
Der Standardwert ist
"yes"
.EMPTY_*
Definiert den Bereinigungsalgorithmus für Snapshot-Paare mit identischen Pre- und Post-Snapshots. Ausführliche Informationen finden Sie unter Abschnitt 10.7.3, „Bereinigen von Snapshot-Paaren, die sich nicht unterscheiden“.
FSTYPE
Dateisystemtyp der Partition. Bearbeiten Sie diese Datei nicht.
Der Standardwert ist
"btrfs"
.NUMBER_*
Definiert den Bereinigungsalgorithmus für Installations- und Verwaltungs-Snapshots. Ausführliche Informationen finden Sie unter Abschnitt 10.7.1, „Bereinigen von nummerierten Snapshots“.
QGROUP
/SPACE_LIMIT
Fügt Quotenunterstützung zu Bereinigungs-Algorithmen hinzu. Ausführliche Informationen finden Sie unter Abschnitt 10.7.5, „Hinzufügen von Festplattenquotenunterstützung“.
SUBVOLUME
Einhängepunkt für die Partition oder das Subvolume am Snapshot. Bearbeiten Sie diese Datei nicht.
Der Standardwert ist
"/"
.SYNC_ACL
Wenn Snapper von regulären Benutzern verwendet wird (siehe Abschnitt 10.5.1.2, „Verwenden von Snapper als normaler Benutzer“), müssen die Benutzer auf die Verzeichnisse
.snapshot
zugreifen und Dateien in diesen Verzeichnissen lesen können. Wenn SYNC_ACL aufyes
(ja) festgelegt ist, macht Snapper die betreffenden Verzeichnisse automatisch mithilfe von ACLs für die Benutzer und Gruppen zugänglich, die in den Einträgen ALLOW_USERS oder ALLOW_GROUPS angegeben sind.Der Standardwert ist
"no"
.TIMELINE_CREATE
Bei
yes
(ja) werden stündliche Snapshots erstellt. Gültige Einstellungen:yes
,no
.Der Standardwert ist
"no"
.TIMELINE_CLEANUP
/TIMELINE_LIMIT_*
Definiert den Bereinigungsalgorithmus für Zeitleisten-Snapshots. Ausführliche Informationen finden Sie unter Abschnitt 10.7.2, „Bereinigen von Zeitleisten-Snapshots“.
10.5.1.2 Verwenden von Snapper als normaler Benutzer #
Standardmäßig kann Snapper nur von root
verwendet werden. Unter Umständen müssen jedoch bestimmte Gruppen oder Benutzer in der Lage sein, Snapshots zu erstellen oder Änderungen durch Wiederherstellen eines Snapshots rückgängig zu machen:
Website-Administratoren, die Snapshots von
/srv/www
anfertigen möchtenBenutzer, die einen Snapshot von ihrem Home-Verzeichnis anfertigen möchten
Für diesen Zweck erstellen Sie Konfigurationen, die Berechtigungen für Benutzer und/oder Gruppen gewähren. Die Benutzer müssen in der Lage sein, das zugehörige Verzeichnis .snapshots
zu lesen und darauf zuzugreifen. Am einfachsten erreichen Sie dies, wenn Sie die Option SYNC_ACL auf yes
(ja) einstellen.
Alle Schritte in diesem Verfahren müssen von root
ausgeführt werden.
Falls noch keine Snapper-Konfiguration vorhanden ist, erstellen Sie eine Konfiguration für die Partition oder das Subvolume, in der/dem der Benutzer Snapper verwenden soll. Weitere Anweisungen finden Sie unter Abschnitt 10.5, „Erstellen und Bearbeiten von Snapper-Konfigurationen“. Beispiel:
>
sudo
snapper --config web_data create /srv/wwwDie Konfigurationsdatei wird unter
/etc/snapper/configs/CONFIG
erstellt, wobei CONFIG der Wert ist, den Sie mit-c/--config
im vorherigen Schritt angegeben haben (beispielsweise/etc/snapper/configs/web_data
). Passen Sie die Datei entsprechend Ihrer Anforderungen an. Weitere Informationen finden Sie im Abschnitt 10.5.1, „Verwalten vorhandener Konfigurationen“.Legen Sie Werte für
ALLOW_USERS
und/oderALLOW_GROUPS
fest. Damit gewähren Sie bestimmten Benutzern bzw. Gruppen die Berechtigungen. Mehrere Einträge müssen mit Leertaste getrennt werden. Um beispielsweise dem Benutzerwww_admin
Berechtigungen zu gewähren, führen Sie Folgendes aus:>
sudo
snapper -c web_data set-config "ALLOW_USERS=www_admin" SYNC_ACL="yes"Die vorhandene Snapper-Konfiguration kann nunmehr durch die angegebenen Benutzer und/oder Gruppen verwendet werden. Testen Sie dies beispielsweise mit dem Befehl
list
:www_admin:~ >
snapper -c web_data list
10.6 Manuelles Erstellen und Verwalten von Snapshots #
Snapper ist nicht auf das automatische Erstellen und Verwalten von Snapshots über eine Konfiguration beschränkt. Mit dem Befehlszeilenwerkzeug oder dem YaST-Modul können Sie auch selbst Snapshot-Paare („vorher/nachher“) oder einzelne Snapshots manuell erstellen.
Alle Snapper-Vorgänge werden für eine vorhandene Konfiguration ausgeführt (weitere Details finden Sie unter Abschnitt 10.5, „Erstellen und Bearbeiten von Snapper-Konfigurationen“). Sie können Snapshots nur für Partitionen oder Volumes erstellen, für die eine Konfiguration vorhanden ist. Standardmäßig wird die Systemkonfiguration (root
) verwendet. Sollen Snapshots für Ihre eigene Konfiguration erstellt oder verwaltet werden, müssen Sie diese Konfiguration explizit auswählen. Verwenden Sie das Dropdown-Feld in YaST oder geben Sie den Schalter -c
in der Befehlszeile an (snapper -c MYCONFIG
COMMAND
).
10.6.1 Snapshot-Metadaten #
Ein Snapshot besteht jeweils aus dem Snapshot selbst und aus bestimmten Metadaten. Beim Erstellen eines Snapshots müssen Sie auch die Metadaten angeben. Wenn Sie einen Snapshot bearbeiten, so ändern Sie die Metadaten – der Inhalt selbst kann nicht bearbeitet werden. Verwenden Sie den Befehl snapper list
, um die vorhandenen Snapshots und ihre Metadaten anzuzeigen:
snapper --config home list
Listet Snapshots für die Konfiguration
home
auf. Um Snapshots für die Standardkonfiguration (root) aufzulisten, verwenden Siesnapper -c root list
odersnapper list
.snapper list -a
Listet Snapshots für alle vorhandenen Konfigurationen auf.
snapper list -t pre-post
Listet alle Pre- und Post-Snapshot-Paare für die Standardkonfiguration (
root
) auf.snapper list -t single
Listet alle Snapshots des Typs
single
für die Standardkonfiguration (root
) auf.
Die folgenden Metadaten sind für jeden Snapshot verfügbar:
Typ: Snapshot-Typ; Details siehe Abschnitt 10.6.1.1, „Snapshot-Typen“. Diese Daten können nicht geändert werden.
Nummer: Eindeutige Nummer des Snapshots. Diese Daten können nicht geändert werden.
Pre Number (Pre-Nummer): Nummer des zugehörigen Pre-Snapshots. Nur für Snapshots vom Post-Typ. Diese Daten können nicht geändert werden.
Beschreibung: Beschreibung des Snapshots.
Benutzerdaten: Erweiterte Beschreibung, in der Sie benutzerdefinierte Daten als eine durch Kommas getrennte Liste im Format „Schlüssel=Wert“ angeben können, beispielsweise:
reason=testing, project=foo
Mit diesem Feld wird außerdem ein Snapshot als wichtig gekennzeichnet (important=yes
), und der Benutzer, der den Snapshot erstellt hat, wird hier aufgeführt (user=tux).Bereinigungsalgorithmus: Bereinigungsalgorithmus für den Snapshot; Details siehe Abschnitt 10.7, „Automatisches Bereinigen von Snapshots“.
10.6.1.1 Snapshot-Typen #
In Snapper gibt es drei Typen von Snapshots: pre, post und einzeln. Physisch unterscheiden sie sich nicht, sie werden jedoch in Snapper unterschiedlich behandelt.
pre
Snapshot eines Dateisystems vor einer Änderung. Jeder Nachher-Snapshot (
pre
) entspricht einem Vorher-Snapshot (post
). Dies wird beispielsweise für automatische YaST/Zypper-Snapshots verwendet.post
Snapshot eines Dateisystems nach einer Änderung. Jeder Nachher-Snapshot (
post
) entspricht einem Vorher-Snapshot (pre
). Dies wird beispielsweise für automatische YaST/Zypper-Snapshots verwendet.single
Eigenständiger Snapshot. Dies wird beispielsweise für automatische stündliche Snapshots verwendet. Dies ist der Standardtyp beim Erstellen von Snapshots.
10.6.1.2 Bereinigungsalgorithmen #
Snapper bietet drei Algorithmen zum Bereinigen alter Snapshots. Die Algorithmen werden im Rahmen eines täglichen cron
-Auftrags ausgeführt. Sie können die Anzahl der verschiedenen Typen von Snapshots definieren, die in der Snapper-Konfiguration aufbewahrt werden sollen (siehe Abschnitt 10.5.1, „Verwalten vorhandener Konfigurationen“).
- Zahl
Löscht alte Snapshots, sobald eine bestimmte Anzahl von Snapshots erreicht wird.
- timeline (Zeitleiste)
Löscht Snapshots, die ein bestimmtes Alter erreicht haben; hierbei werden allerdings mehrere stündliche, tägliche, monatliche und jährliche Snapshots beibehalten.
- empty-pre-post (Leer-Pre-Post)
Löscht Pre-/Post-Snapshot-Paare, zwischen denen keine Unterschiede (Diffs) bestehen.
10.6.2 Erstellen von Snapshots #
Führen Sie zum Erstellen eines Snapshots den Befehl snapper create
aus oder klicken Sie im YaST-Modul auf . In den nachfolgenden Beispielen wird erläutert, wie Sie Snapshots über die Befehlszeile erstellen. Die YaST-Schnittstelle für Snapper wird hier nicht explizit beschrieben, bietet jedoch die gleiche Funktionalität.
Geben Sie stets eine aussagekräftige Beschreibung an, mit der der Zweck des Snapshots auch später noch eindeutig erkennbar ist. Mit der Option --userdata
können Sie auch weitere Informationen angeben.
snapper create --from 17 --description "with package2"
Erstellt aus einem bestehenden Snapshot einen eigenständigen Snapshot (Typ „Einzeln“). Er wird durch die Zahl des Snapshots von
snapper list
angegeben. (Dies gilt für Snapper Version 0.8.4 und neuere Versionen.)snapper create --description "Snapshot for week 2 2014"
Erstellt einen eigenständigen Snapshot (Einzeltyp) für die Standardkonfiguration (
root
) mit einer Beschreibung. Da kein Bereinigungsalgorithmus angegeben ist, wird der Snapshot nicht automatisch gelöscht.snapper --config home create --description "Cleanup in ~tux"
Erstellt einen eigenständigen Snapshot (Einzeltyp) für die benutzerdefinierte Konfiguration (
home
) mit einer Beschreibung. Da kein Bereinigungsalgorithmus angegeben ist, wird der Snapshot nicht automatisch gelöscht.snapper --config home create --description "Daily data backup" --cleanup-algorithm timeline
>Erstellt einen eigenständigen Snapshot (Einzeltyp) für die benutzerdefinierte Konfiguration (
home
) mit einer Beschreibung. Der Snapshot wird automatisch gelöscht, sobald die Kriterien für den Zeitleisten-Bereinigungsalgorithmus in der Konfiguration erfüllt sind.snapper create --type pre --print-number --description "Before the Apache config cleanup" --userdata "important=yes"
Erstellt einen Snapshot vom
pre
-Typ und gibt die Snapshot-Nummer aus. Erster Befehl zum Erstellen eines Snapshot-Paars, mit dem der „Vorher“-/„Nachher“-Zustand festgehalten wird. Der Snapshot wird als wichtig gekennzeichnet.snapper create --type post --pre-number 30 --description "After the Apache config cleanup" --userdata "important=yes"
Erstellt einen Snapshot vom
post
-Typ, gepaart mit derpre
-Snapshot-Nummer30
. Zweiter Befehl zum Erstellen eines Snapshot-Paars, mit dem der „Vorher“-/„Nachher“-Zustand festgehalten wird. Der Snapshot wird als wichtig gekennzeichnet.snapper create --command COMMAND --description "Before and after COMMAND"
Erstellt automatisch ein Snapshot-Paar vor und nach dem Ausführen von COMMAND. Diese Option ist nur verfügbar, wenn Snapper in der Befehlszeile verwendet wird.
10.6.3 Bearbeiten von Snapshot-Metadaten #
Bei Snapper können Sie die Beschreibung, den Bereinigungsalgorithmus und die Benutzerdaten eines Snapshots bearbeiten. Alle anderen Metadaten können nicht geändert werden. In den nachfolgenden Beispielen wird erläutert, wie Sie Snapshots über die Befehlszeile bearbeiten. Die Anpassung ist über die YaST-Oberfläche ganz einfach.
Um einen Snapshot in der Befehlszeile zu bearbeiten, müssen Sie seine Nummer kennen. Mit snapper list
rufen Sie alle Snapshots mit den dazugehörigen Nummern ab.
Im
-Modul in YaST werden bereits alle Snapshots aufgelistet. Wählen Sie einen Eintrag in der Liste, und klicken Sie auf .snapper modify --cleanup-algorithm "timeline"
10Bearbeitet die Metadaten von Snapshot 10 für die Standardkonfiguration (
root
). Der Bereinigungsalgorithmus ist auftimeline
festgelegt.snapper --config home modify --description "daily backup" -cleanup-algorithm "timeline" 120
Bearbeitet die Metadaten von Snapshot 120 für die benutzerdefinierte Konfiguration
home
. Eine neue Beschreibung wird festgelegt, und der Bereinigungsalgorithmus wird aufgehoben.
10.6.4 Löschen von Snapshots #
Zum Löschen eines Snapshots mit dem
-Modul in YaST wählen Sie den gewünschten Snapshot in der Liste aus, und klicken Sie auf .
Um einen Snapshot mit dem Befehlszeilenwerkzeug zu löschen, müssen Sie seine Nummer kennen. Führen Sie hierzu snapper list
aus. Zum Löschen eines Snapshots führen Sie snapper delete
NUMBER aus.
Der Snapshot des aktuellen Standard-Subvolumes darf nicht gelöscht werden.
Wenn Sie Snapshots mit Snapper löschen, wird der freigegebene Speicherplatz von einem Btrfs-Prozess in Anspruch genommen, der im Hintergrund ausgeführt wird. Der freie Speicherplatz wird daher erst mit Verzögerung sichtbar und verfügbar. Wenn der Speicherplatz, der durch Löschen eines Snapshots freigegeben wurde, sofort zur Verfügung stehen soll, ergänzen Sie den Löschbefehl mit der Option --sync
.
Wenn Sie einen pre
-Snapshot löschen, müssen Sie auch den zugehörigen post
-Snapshot löschen (und umgekehrt).
snapper delete 65
Löscht Snapshot 65 für die Standardkonfiguration (
root
).snapper -c home delete 89 90
Löscht Snapshots 89 und 90 für die benutzerdefinierte Konfiguration
home
.snapper delete --sync 23
Löscht Snapshot 23 für die Standardkonfiguration (
root
) und stellt den freigegebenen Speicherplatz sofort zur Verfügung.
In bestimmten Fällen ist zwar der Btrfs-Snapshot vorhanden, die XML-Datei mit den Metadaten für Snapper fehlt jedoch. Der Snapshot ist daher nicht für Snapper sichtbar, muss also manuell gelöscht werden:
btrfs subvolume delete /.snapshots/SNAPSHOTNUMBER/snapshot rm -rf /.snapshots/SNAPSHOTNUMBER
Wenn Sie Snapshots löschen, um Speicherplatz auf der Festplatte freizugeben, löschen Sie zuerst die älteren Snapshots. Je älter ein Snapshot ist, desto mehr Speicherplatz belegt er.
Snapshots werden außerdem im Rahmen eines täglichen CRON-Auftrags automatisch gelöscht. Weitere Informationen finden Sie unter Abschnitt 10.6.1.2, „Bereinigungsalgorithmen“.
10.7 Automatisches Bereinigen von Snapshots #
Snapshots belegen Speicherplatz und mit der Zeit kann der von Snapshots belegte Speicherplatz groß werden. Damit Festplatten nicht zu wenig Speicherplatz haben, bietet Snapper einen Algorithmus, mit dem alte Snapshots automatisch gelöscht werden. Diese Algorithmen unterscheiden zwischen Zeitleisten-Snapshots und nummerierten Snapshots (Verwaltungs- plus Installations-Snapshot-Paare). Sie können die Anzahl der Snapshots angeben, die für jeden Typ beibehalten werden soll.
Zusätzlich dazu können Sie optional eine Speicherplatzquote angeben, mit der die maximale Größe des Speicherplatzes festgelegt wird, die Snapshots belegen können. Es ist auch möglich, Pre- und Post-Snapshot-Paare, die sich nicht unterscheiden, automatisch zu löschen.
Ein Bereinigungsalgorithmus ist immer an eine einzelne Snapper-Konfiguration gebunden, daher müssen Sie Algorithmen für jede Konfiguration festlegen. Weitere Informationen, wie das versehentliche Löschen bestimmter Snapshots verhindert wird, finden Sie unter Kann ein Snapshot geschützt werden, sodass er nicht gelöscht wird? .
Die Standardeinrichtung (root
) ist so konfiguriert, dass nummerierte Snapshots und leere Pre- und Post-Snapshot-Paare bereinigt werden. Die Quotenunterstützung ist aktiviert. Snapshots dürfen nicht mehr als 50 % des verfügbaren Speicherplatzes der root-Partition belegen. Zeitleisten-Snapshots sind standardmäßig deaktiviert. Daher ist der Bereinigungsalgorithmus auch deaktiviert.
10.7.1 Bereinigen von nummerierten Snapshots #
Das Bereinigen nummerierter Snapshots – Verwaltungs- plus Installations-Snapshot-Paare – wird von den nachfolgenden Parametern einer Snapper-Konfiguration gesteuert.
NUMBER_CLEANUP
Aktiviert oder deaktiviert die Bereinigung von Installations- und Verwaltungs-Snapshot-Paaren. Ist diese Option aktiviert, werden Snapshot-Paare gelöscht, wenn die Gesamtzahl der Snapshots eine mit
NUMBER_LIMIT
angegeben AnzahlNUMBER_LIMIT_IMPORTANT
und ein mitNUMBER_MIN_AGE
angegebenes Alter überschreitet. Gültige Werte sind:yes
(Aktivieren),no
(Deaktivieren).Der Standardwert ist
"yes"
.Beispielbefehle zum Ändern oder Festlegen:
>
sudo
snapper -c CONFIG set-config "NUMBER_CLEANUP=no"NUMBER_LIMIT
/NUMBER_LIMIT_IMPORTANT
Definiert, wie viele normale und/oder wichtige Installations- und Administrations-Snapshot-Paare beibehalten werden sollen. Wird ignoriert, wenn für
NUMBER_CLEANUP
der Wert"no"
festgelegt ist.Der Standardwert ist
"2-10"
fürNUMBER_LIMIT
und"4-10"
fürNUMBER_LIMIT_IMPORTANT
. Die Bereinigungsalgorithmen löschen Snapshots über dem angegebenen Maximalwert, ohne den Snapshot und den Speicherplatz im Dateisystem zu berücksichtigen. Die Algorithmen löschen auch Snapshots über dem Mindestwert, bis die Grenzwerte für den Snapshot und das Dateisystem erreicht sind.Beispielbefehl zum Ändern oder Festlegen:
>
sudo
snapper -c CONFIG set-config "NUMBER_LIMIT=10"Wichtig: Bereichswerte im Vergleich zu FixwertenWenn die Quotenunterstützung aktiviert ist (siehe Abschnitt 10.7.5, „Hinzufügen von Festplattenquotenunterstützung“), muss der Grenzwert als Minimum-Maximum-Bereich angegeben sein, z. B.
2-10
. Wenn die Quotenunterstützung deaktiviert ist, muss ein Fixwert, z. B.10
, angegeben werden, sonst schlägt das Bereinigen fehl.NUMBER_MIN_AGE
Definiert das Mindestalter in Sekunden, das ein Snapshot aufweisen soll, bevor er automatisch gelöscht werden kann. Snapshots, die jünger als der hier angegebene Wert sind, werden, unabhängig davon, wie viele vorhanden sind, nicht gelöscht.
Der Standardwert ist
"1800"
.Beispielbefehl zum Ändern oder Festlegen:
>
sudo
snapper -c CONFIG set-config "NUMBER_MIN_AGE=864000"
NUMBER_LIMIT
, NUMBER_LIMIT_IMPORTANT
und NUMBER_MIN_AGE
werden immer bewertet. Die Snapshots werden nur dann gelöscht, wenn alle Bedingungen erfüllt sind.
Wenn Sie immer die mit NUMBER_LIMIT*
festgelegte Anzahl an Snapshots beibehalten möchten, unabhängig von ihrem Alter, legen Sie für NUMBER_MIN_AGE
den Wert 0
fest.
Das folgende Beispiel zeigt eine Konfiguration, mit der die letzten zehn wichtigen und regulären Snapshots unabhängig vom Alter beibehalten werden:
NUMBER_CLEANUP=yes NUMBER_LIMIT_IMPORTANT=10 NUMBER_LIMIT=10 NUMBER_MIN_AGE=0
Wenn Sie keine Snapshots beibehalten möchten, die über ein bestimmtes Alter hinausgehen, legen Sie NUMBER_LIMIT*
auf 0
fest und geben Sie das Alter mit NUMBER_MIN_AGE
an.
Das folgende Beispiel zeigt eine Konfiguration, in der lediglich Snapshots beibehalten werden, die jünger als zehn Tage sind:
NUMBER_CLEANUP=yes NUMBER_LIMIT_IMPORTANT=0 NUMBER_LIMIT=0 NUMBER_MIN_AGE=864000
10.7.2 Bereinigen von Zeitleisten-Snapshots #
Das Bereinigen von Zeitleisten-Snapshots wird von den nachfolgenden Parametern einer Snapper-Konfiguration gesteuert.
TIMELINE_CLEANUP
Aktiviert oder deaktiviert die Bereinigung von Zeitleisten-Snapshots. Ist diese Option aktiviert, werden Snapshots gelöscht, wenn die Gesamtzahl der Snapshots eine mit
TIMELINE_LIMIT_*
angegeben Anzahl und ein mitTIMELINE_MIN_AGE
angegebenes Alter überschreitet. Gültige Einstellungen:yes
,no
.Der Standardwert ist
"yes"
.Beispielbefehl zum Ändern oder Festlegen:
>
sudo
snapper -c CONFIG set-config "TIMELINE_CLEANUP=yes"TIMELINE_LIMIT_DAILY
,TIMELINE_LIMIT_HOURLY
,TIMELINE_LIMIT_MONTHLY
,TIMELINE_LIMIT_WEEKLY
,TIMELINE_LIMIT_YEARLY
Anzahl der Snapshots, die pro Stunde, Tag, Monat, Woche und Jahr beibehalten werden sollen.
Der Standardwert für jeden Eintrag ist
"10"
, außer fürTIMELINE_LIMIT_WEEKLY
, hier ist der Standardwert"0"
.TIMELINE_MIN_AGE
Definiert das Mindestalter in Sekunden, das ein Snapshot aufweisen soll, bevor er automatisch gelöscht werden kann.
Der Standardwert ist
"1800"
.
TIMELINE_CLEANUP="yes" TIMELINE_CREATE="yes" TIMELINE_LIMIT_DAILY="7" TIMELINE_LIMIT_HOURLY="24" TIMELINE_LIMIT_MONTHLY="12" TIMELINE_LIMIT_WEEKLY="4" TIMELINE_LIMIT_YEARLY="2" TIMELINE_MIN_AGE="1800"
In dieser Beispielkonfiguration werden stündliche Snapshots vorgenommen, die automatisch bereinigt werden. TIMELINE_MIN_AGE
und TIMELINE_LIMIT_*
werden immer beide bewertet. In diesem Beispiel ist das Mindestalter eines Snapshots, ab dem er gelöscht werden kann, auf 30 Minuten (1800 Sekunden) eingestellt. Durch die stündliche Erstellung der Snapshots werden nur die jeweils neuesten Snapshots beibehalten. Wenn TIMELINE_LIMIT_DAILY
auf einen Wert ungleich null gesetzt ist, wid auch der erste Snapshot des Tages beibehalten.
Stündlich: die letzten 24 angefertigten Snapshots.
Täglich: jeweils der erste Snapshot, der zu Tagesbeginn angefertigt wurde, für die letzten sieben Tage.
Monatlich: jeweils der erste Snapshot, der am letzten Tag des Monats angefertigt wurde, für die letzten zwölf Monate.
Wöchentlich: jeweils der erste Snapshot, der am letzten Tag der Woche angefertigt wurde, für die letzten vier Wochen.
Jährlich: jeweils der erste Snapshot, der am letzten Tag des Jahres angefertigt wurde, für die letzten zwei Jahre.
10.7.3 Bereinigen von Snapshot-Paaren, die sich nicht unterscheiden #
Wie in Abschnitt 10.1.2, „Typen von Snapshots“ erklärt, wird immer beim Ausführen eines YaST-Moduls oder beim Ausführen von Zypper ein Pre-Snapshot beim Starten erstellt und ein Post-Snapshot beim Beenden. Falls Sie keine Änderungen vorgenommen haben, gibt es zwischen dem Pre- und Post-Snapshot keinen Unterschied. Solche „leeren“ Snapshot-Paare können automatisch gelöscht werden, indem die folgenden Parameter in einer Snapper-Konfiguration festgelegt werden:
EMPTY_PRE_POST_CLEANUP
Bei
yes
(ja) werden Snapshot-Paare mit identischem Pre- und Post-Snapshot gelöscht.Der Standardwert ist
"yes"
.EMPTY_PRE_POST_MIN_AGE
Definiert das Mindestalter in Sekunden, das ein Snapshot-Paar mit identischem Pre- und Post-Snapshot aufweisen soll, bevor es automatisch gelöscht werden kann.
Der Standardwert ist
"1800"
.
10.7.4 Bereinigen manuell erstellter Snapshots #
Snapper bietet keine benutzerdefinierten Bereinigungsalgorithmen für manuell erstellte Snapshots. Sie können jedoch den Nummern- oder Zeitleisten-Bereinigungsalgorithmus einem manuell erstellten Snapshot zuweisen. Wenn Sie dies tun, reiht sich der Snapshot in der „Bereinigungswarteschlange“ für den angegebenen Algorithmus ein. Sie können einen Bereinigungsalgorithmus angeben, wenn Sie einen Snapshot erstellen oder indem Sie einen vorhandenen Snapshot bearbeiten:
snapper create --description "Test" --cleanup-algorithm number
Erstellt einen eigenständigen Snapshot (Typ: „single“) für die Standardkonfiguration (root) und weist den Bereinigungsalgorithmus
number
zu.snapper modify --cleanup-algorithm "timeline" 25
Ändert den Snapshot mit der Nummer 25 und weist den Bereinigungsalgorithmus
timeline
zu.
10.7.5 Hinzufügen von Festplattenquotenunterstützung #
Zusätzlich zu den oben beschriebenen Nummern- und/oder Zeitleisten-Bereinigungsalgorithmen unterstützt Snapper Quoten. Sie können festlegen, welchen prozentualen Anteil des verfügbaren Speicherplatzes Snapshots belegen dürfen. Dieser Prozentwert gilt immer für das Btrfs-Subvolume, das in der entsprechenden Snapper-Konfiguration definiert ist.
Btrfs-Quotas werden Subvolumes zugewiesen, nicht Benutzern. Zusätzlich zur Verwendung von Btrfs-Quotas können Sie Quotas für Festplattenspeicherplatz zu Benutzern und Gruppen zuweisen (beispielsweise mit dem Befehl quota
).
Wenn Snapper bei der Installation aktiviert wurde, wird die Quotenunterstützung automatisch aktiviert. Falls Sie Snapper zu einem späteren Zeitpunkt manuell aktivieren, können Sie die Quotenunterstützung aktivieren, indem Sie snapper
setup-quota
ausführen. Dies erfordert eine gültige Konfiguration (weitere Informationen finden Sie in Abschnitt 10.5, „Erstellen und Bearbeiten von Snapper-Konfigurationen“).
Die Quotenunterstützung wird von den folgenden Parametern der Snapper-Konfiguration gesteuert.
QGROUP
Die Btrfs-Quotengruppe, die von Snapper verwendet wird. Ist dies nicht festgelegt, führen Sie
snapper setup-quota
aus. Ist dies bereits festgelegt, nehmen Sie nur Änderungen vor, wenn Sie die man-Seiteman 8 btrfs-qgroup
kennen. Dieser Wert wird mitsnapper setup-quota
festgelegt und sollte nicht geändert werden.SPACE_LIMIT
Grenzwert für den Speicherplatz, den Snapshots belegen dürfen, in Bruchteilen von 1 (1 = 100 %). Gültig sind Werte zwischen 0 und 1 (0.1 = 10 %, 0.2 = 20 % ...).
Es gelten die folgenden Einschränkungen und Richtlinien:
Quoten werden nur zusätzlich zu einem vorhandenen Nummern- und/oder Zeitleisten-Bereinigungsalgorithmus aktiviert. Ist kein Bereinigungsalgorithmus aktiviert, werden keine Quoteneinschränkungen angewendet.
Ist die Quotenunterstützung aktiviert, führt Snapper bei Bedarf zwei Bereinigungsläufe durch. Im ersten Lauf werden die Regeln angewendet, die für Nummern- und Zeitleisten-Snapshots angegeben sind. Nur, wenn die Quote nach diesem Lauf überschritten wird, werden die quotenspezifischen Regeln in einem zweiten Lauf angewendet.
Selbst wenn die Quotenunterstützung aktiviert ist, wird die Anzahl der Snapshots, die mit den Werten
NUMBER_LIMIT*
undTIMELINE_LIMIT*
angegeben ist, von Snapper beibehalten, auch wenn die Quote überschritten wird. Es wird daher empfohlen, Bereichswerte (MIN-MAX
) fürNUMBER_LIMIT*
undTIMELINE_LIMIT*
anzugeben, um sicherzustellen, dass die Quote angewendet werden kann.Wenn beispielsweise
NUMBER_LIMIT=5-20
festgelegt ist, führt Snapper einen ersten Bereinigungslauf durch und reduziert die Anzahl normaler Nummern-Snapshots auf 20. Falls diese 20 Snapshots die Quote überschreiten, löscht Snapper die ältesten Snapshots in einem zweiten Lauf, bis die Quote eingehalten wird. Mindestens fünf Snapshots werden immer beibehalten, unabhängig davon, wie viel Speicherplatz sie belegen.
10.8 Anzeigen von exklusiv für Snapshots verwendetem Festplattenspeicherplatz #
Snapshots geben Daten frei, um den Speicherplatz effizient zu nutzen. Daher wird mit üblichen Befehlen wie du
und df
der belegte Speicherplatz nicht genau gemessen. Wenn Sie in Btrfs mit aktivierten Quotas Speicherplatz freigeben möchten, müssen Sie wissen, wie viel exklusiver Speicherplatz von jedem Snapshot belegt wird, im Gegensatz zum gemeinsamen Speicherplatz. Snapper ab Version 0.6 gibt den belegten Festplattenspeicherplatz für jeden Snapshot in der Spalte Used Space
an:
#
snapper --iso list
# | Type | Pre # | Date | User | Used Space | Cleanup | Description | Userdata
----+--------+-------+---------------------+------+------------+---------+-----------------------+--------------
0 | single | | | root | | | current |
1* | single | | 2019-07-22 13:08:38 | root | 16.00 KiB | | first root filesystem |
2 | single | | 2019-07-22 14:21:05 | root | 14.23 MiB | number | after installation | important=yes
3 | pre | | 2019-07-22 14:26:03 | root | 144.00 KiB | number | zypp(zypper) | important=no
4 | post | 3 | 2019-07-22 14:26:04 | root | 112.00 KiB | number | | important=no
5 | pre | | 2019-07-23 08:19:36 | root | 128.00 KiB | number | zypp(zypper) | important=no
6 | post | 5 | 2019-07-23 08:19:43 | root | 80.00 KiB | number | | important=no
7 | pre | | 2019-07-23 08:20:50 | root | 256.00 KiB | number | yast sw_single |
8 | pre | | 2019-07-23 08:23:22 | root | 112.00 KiB | number | zypp(ruby.ruby2.5) | important=no
9 | post | 8 | 2019-07-23 08:23:35 | root | 64.00 KiB | number | | important=no
10 | post | 7 | 2019-07-23 08:24:05 | root | 16.00 KiB | number | |
Mit dem Befehl btrfs
wird der von Snapshots belegte Speicherplatz anders angezeigt:
#
btrfs qgroup show -p /
qgroupid rfer excl parent
-------- ---- ---- ------
0/5 16.00KiB 16.00KiB ---
[...]
0/272 3.09GiB 14.23MiB 1/0
0/273 3.11GiB 144.00KiB 1/0
0/274 3.11GiB 112.00KiB 1/0
0/275 3.11GiB 128.00KiB 1/0
0/276 3.11GiB 80.00KiB 1/0
0/277 3.11GiB 256.00KiB 1/0
0/278 3.11GiB 112.00KiB 1/0
0/279 3.12GiB 64.00KiB 1/0
0/280 3.12GiB 16.00KiB 1/0
1/0 3.33GiB 222.95MiB ---
In der Spalte qgroupid
wird die Kennung für jedes Subvolume angezeigt und eine Kombination aus qgroup-Ebene und ID zugewiesen.
In der Spalte rfer
wird die Gesamtanzahl der Daten angezeigt, auf die im Subvolume verwiesen wird.
In der Spalte excl
werden die exklusiven Daten in jedem Subvolume angezeigt.
In der Spalte parent
wird die übergeordnete qgroup der Subvolumes angezeigt.
Im letzten Element 1/0
wird die Gesamtanzahl für die übergeordnete qgroup angezeigt. Im obigen Beispiel werden 222,95 MiB freigegeben, wenn alle Subvolumes entfernt werden. Führen Sie folgenden Befehl aus, um zu sehen, welche Snapshots den einzelnen Subvolumes zugeordnet sind:
#
btrfs subvolume list -st /
ID gen top level path
-- --- --------- ----
267 298 266 @/.snapshots/1/snapshot
272 159 266 @/.snapshots/2/snapshot
273 170 266 @/.snapshots/3/snapshot
274 171 266 @/.snapshots/4/snapshot
275 287 266 @/.snapshots/5/snapshot
276 288 266 @/.snapshots/6/snapshot
277 292 266 @/.snapshots/7/snapshot
278 296 266 @/.snapshots/8/snapshot
279 297 266 @/.snapshots/9/snapshot
280 298 266 @/.snapshots/10/snapshot
Ein Upgrade von einem Service Pack auf das nächste führt zu Snapshots, die viel Festplattenspeicherplatz in den System-Subvolumes belegen. Es wird daher empfohlen, diese Snapshots manuell zu löschen, sobald Sie sie nicht mehr benötigen. Ausführliche Informationen finden Sie unter Abschnitt 10.6.4, „Löschen von Snapshots“.
10.9 Häufig gestellte Fragen #
- F:
Warum zeigt Snapper nie Änderungen in
/var/log
,/tmp
und anderen Verzeichnissen an? Bestimmte Verzeichnisse werden aus Snapshots ausgeschlossen. Weitere Informationen und Begründungen finden Sie unter Abschnitt 10.1.3, „Verzeichnisse, die aus Snapshots ausgenommen sind“. Sollen für einen Pfad keine Snapshots angefertigt werden, legen Sie ein Subvolume für diesen Pfad an.
- F: Kann ich einen Snapshot über den Bootloader booten?
Ja. Weitere Informationen finden Sie in Abschnitt 10.3, „System-Rollback durch Booten aus Snapshots“.
- F: Kann ein Snapshot geschützt werden, sodass er nicht gelöscht wird?
Derzeit bietet Snapper keine Möglichkeit, zu verhindern, dass ein Snapshot manuell gelöscht wird. Jedoch können Sie verhindern, dass Snapshots automatisch durch Bereinigungsalgorithmen gelöscht werden. Manuell erstellten Snapshots (siehe Abschnitt 10.6.2, „Erstellen von Snapshots“) ist kein Bereinigungsalgorithmus zugewiesen, es sei denn, Sie geben einen mit
--cleanup-algorithm
an. Automatisch erstellten Snapshots ist immer entweder dernumber
- odertimeline
-Algorithmus zugewiesen. Um auf diese Weise eine Zuweisung für einen oder mehrere Snapshots zu entfernen, gehen Sie wie folgt vor:Auflisten aller verfügbaren Snapshots:
>
sudo
snapper list -aMerken Sie sich die Zahl der Snapshots, deren Löschung Sie verhindern möchten.
Führen Sie den folgenden Befehl aus und ersetzen Sie die Zahlenplatzhalter durch die Zahlen, die Sie sich gemerkt haben:
>
sudo
snapper modify --cleanup-algorithm "" #1 #2 #nÜberprüfen Sie das Ergebnis, indem Sie erneut
snapper list -a
ausführen. Der Eintrag in der SpalteCleanup
sollte nun für die bearbeiteten Snapshots leer sein.
- F: Wo finde ich weitere Informationen zu Snapper?
Besuchen Sie die Snapper-Homepage unter http://snapper.io/.