systemdjournalctl: Abfragen des systemd-Journalsudev
Viele Benutzer fragten bereits nach einer Funktion, mit der sie Snapshots des Dateisystems anfertigen könnten, um so Rollbacks für Linux auszuführen. Dank Snapper, gemeinsam mit dem Btrfs-Dateisystem oder mit Thin Provisioned LVM-Volumes, ist diese Lücke nunmehr geschlossen.
Das neue Copy-on-Write-Dateisystem Btrfs für Linux unterstützt Dateisystem-Snapshots (Kopie des Zustands eines Subvolume zu einem bestimmten Zeitpunkt) von Subvolumes (ein oder mehrere separat einhängbare Dateisysteme auf den einzelnen physischen Partitionen). Snapshots werden auch auf LVM-Volumes mit Thin-Provisioning unterstützt, die mit XFS, Ext4 oder Ext3 formatiert sind. Mit Snapper erstellen und verwalten Sie diese Snapshots. Snapper ist mit einer Kommandozeile und einer YaST-Oberfläche ausgestattet. Ab SUSE Linux Enterprise Server 12 können Sie außerdem aus Btrfs-Snapshots booten. Weitere Informationen finden Sie in Abschnitt 4.3, „System-Rollback durch Booten aus Snapshots“.
Snapper ermöglicht Folgendes:
Systemänderungen rückgängig machen, die von zypper und YaST vorgenommen wurden. Weitere Informationen finden Sie in Abschnitt 4.2, „Rückgängigmachen von Änderungen mit Snapper“.
Dateien aus früheren Snapshots wiederherstellen. Weitere Informationen finden Sie in Abschnitt 4.2.2, „Wiederherstellen von Dateien mit Snapper“.
System-Rollback durch Booten aus einem Snapshot vornehmen. Weitere Informationen finden Sie in Abschnitt 4.3, „System-Rollback durch Booten aus Snapshots“.
Snapshots interaktiv manuell erstellen und vorhandene Snapshots verwalten. Weitere Informationen finden Sie in Abschnitt 4.5, „Manuelles Erstellen und Verwalten von Snapshots“.
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 Anfertigen von Snapshots wird automatisch aktiviert, wenn die Root-Partition (/) groß genug ist (ungefähr mehr als 8 GB). Das Anfertigen von Snapshots auf anderen Partitionen (abgesehen von /) ist standardmäßig nicht aktiviert.
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.
Partitionen mit Snapshots müssen daher größer sein als „normale“ Partitionen. Die Speichermenge ist dabei abhängig von der Anzahl der Snapshots und vom Umfang der Änderungen an den Daten. In der Regel sollten Sie etwa den doppelten Speicherplatz bereitstellen.
Die Snapshots an sich unterscheiden sich streng genommen nicht voneinander, werden allerdings dennoch gemäß dem Grund ihrer Erstellung in drei Snapshot-Typen gegliedert:
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. Mit Ausnahme der Root-Partition sind Zeitleisten-Snapshots standardmäßig aktiviert.
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.
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. Verwaltungs-Snapshots sind standardmäßig aktiviert.
Bestimmte Verzeichnisse müssen aus verschiedenen Gründen aus den Snapshots ausgenommen werden. Die folgende Liste zeigt alle ausgeschlossenen Verzeichnisse:
/boot/grub2/x86_64-efi,
Ein Rollback der Bootloader-Konfiguration wird nicht unterstützt.
/home
Wenn /home sich nicht auf einer separaten Partition befindet, wird dieses Verzeichnis ausgeschlossen, damit bei einem Rollback kein Datenverlust eintritt.
/opt, /var/opt
Produkte von Drittanbietern und Add-ons werden in der Regel in /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, /var/tmp, /var/crash
Alle Verzeichnisse, die temporäre Dateien enthalten, werden aus den Snapshots ausgeschlossen.
/var/lib/named
Enthält Zonendaten für den DNS-Server. Aus den Snapshots ausgeschlossen, damit ein Nameserver auch nach einem Rollback noch funktionsfähig ist.
/var/lib/mailman, /var/spool
Verzeichnisse, die Emails oder Email-Warteschlangen enthalten, werden ausgeschlossen, damit kein Email-Verlust nach einem Rollback eintritt.
/var/lib/pgqsl
Enthält PostgreSQL-Daten.
/var/log
Standort der Protokolldatei. Aus den Snapshots ausgeschlossen, damit die Protokolldateien auch nach dem Rollback eines fehlerhaften Systems noch analysiert werden können.
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.
Die drei Snapshot-Typen (Zeitleiste, Installation, Administration) können unabhängig voneinander einzeln aktiviert oder deaktiviert werden.
Aktivieren.
snapper
-c root set-config "TIMELINE_CREATE=yes"
Deaktivieren.
snapper
-c root set-config "TIMELINE_CREATE=no"
Mit Ausnahme der Root-Partition sind Zeitleisten-Snapshots standardmäßig aktiviert.
Aktivieren:
Installieren Sie das Paket snapper-zypp-plugin.
Deaktivieren:
Deinstallieren Sie das Paket snapper-zypp-plugin
Installations-Snapshots sind standardmäßig aktiviert.
Aktivieren:
Stellen Sie USE_SNAPPER in /etc/sysconfig/yast2 auf yes ein.
Deaktivieren:
Stellen Sie USE_SNAPPER in /etc/sysconfig/yast2 auf no ein.
Administrations-Snapshots sind standardmäßig aktiviert.
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, an 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 das angegebene Schema übereinstimmt 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>
Snapshots belegen Speicherplatz auf der Festplatte. Damit keine Systemfehler wegen mangelndem Festplattenspeicher auftreten, werden alte Snapshots automatisch gelöscht. Standardmäßig werden die folgenden Snapshots beibehalten:
der erste Snapshot der letzten zehn Tage, Monate und Jahre
die letzten zehn als wichtig gekennzeichneten Snapshot-Paare
die letzten zehn Installations-/Administrations-Snapshots
Anweisungen zum Ändern dieser Werte finden Sie in Abschnitt 4.4.1, „Verwalten vorhandener Konfigurationen“.
Neben Snapshots auf Btrfs-Dateisystemen unterstützt Snapper auch das Anfertigen 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 „LVM-Konfiguration“, Kapitel 12, Fortgeschrittene Festplattenkonfiguration, Bereitstellungshandbuch .
Um Snapper auf einem Thin Provisioned LVM-Volume zu nutzen, müssen Sie eine Snapper-Konfiguration für dieses Volume erstellen. Auf LVM muss das Dateisystem mit --fstype=lvm(FILESYSTEM) angegeben werden. Zulässige Werte für FILESYSTEM sind ext3, etx4 und xfs. Beispiel:
snapper -c lvm create-config --fstype="lvm(xfs)" /thin_lvm
Sie können diese Konfiguration gemäß den Anweisungen unter Abschnitt 4.4.1, „Verwalten vorhandener Konfigurationen“ an Ihre Anforderungen anpassen.
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 4.1.1.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:
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.
Beim Rollback gemäß den Anweisungen in Abschnitt 4.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 4.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.
Wenn Sie die Root-Partition 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-Kommandozeilenwerkzeug 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 Sie yast2 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 Bezeichnung zyyp(y2base) in der angezeigt, für zypper-Snapshots die Bezeichnung zypp(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 #
Mit dem Kommando snapper list erhalten Sie eine Liste der YaST- und zypper-Snapshots. Für YaST-Snapshots wird die Bezeichnung -t pre-postyast Modulname in der angezeigt, für zypper-Snapshots die Bezeichnung zypp(zypper).
root # snapper list -t pre-post
Pre # | Post # | Pre Date | Post Date | Description
------+--------+-------------------------------+-------------------------------+--------------
311 | 312 | Tue 06 May 2014 14:05:46 CEST | Tue 06 May 2014 14:05:52 CEST | zypp(y2base)
340 | 341 | Wed 07 May 2014 16:15:10 CEST | Wed 07 May 2014 16:15:16 CEST | zypp(zypper)
342 | 343 | Wed 07 May 2014 16:20:38 CEST | Wed 07 May 2014 16:20:42 CEST | zypp(y2base)
344 | 345 | Wed 07 May 2014 16:21:23 CEST | Wed 07 May 2014 16:21:24 CEST | zypp(zypper)
346 | 347 | Wed 07 May 2014 16:41:06 CEST | Wed 07 May 2014 16:41:10 CEST | zypp(y2base)
348 | 349 | Wed 07 May 2014 16:44:50 CEST | Wed 07 May 2014 16:44:53 CEST | zypp(y2base)
350 | 351 | Wed 07 May 2014 16:46:27 CEST | Wed 07 May 2014 16:46:38 CEST | zypp(y2base)
Mit dem Kommando 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 .
root # 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/Sigmd5
Zum 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.
root # 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.
root # 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 doneEs 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.
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 an 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 in Abschnitt 4.4, „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. Weitere Informationen finden Sie in Abschnitt 4.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 Sie yast2 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 Kommando erhalten Sie eine Liste der Zeitleisten-Snapshots für eine bestimmte Konfiguration:
snapper -c CONFIG list -t single | grep timeline
Ersetzen Sie CONFIG durch eine vorhandene Snapper-Konfiguration. Mit snapper list-configs rufen Sie eine Liste ab.
Mit dem folgenden Kommando erhalten Sie eine Liste der geänderten Dateien in einem bestimmten Snapshot:
snapper -c CONFIG status SNAPSHOT_ID>..0
Ersetzen Sie SNAPSHOT_ID durch die ID des Snapshots, aus dem die Datei(en) wiederhergestellt werden sollen.
Rufen Sie optional mit dem folgenden Kommando eine Liste der Unterschiede zwischen der aktuellen Dateiversion und der Dateiversion im Snapshot ab:
snapper -c CONFIG diff SNAPSHOT_ID..0 FILE NAME
Wenn 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:
snapper -c CONFIG -v undochange
SNAPSHOT_ID..0 FILENAME1 FILENAME2Wenn Sie keine Dateinamen angeben, werden alle geänderten Dateien wiederhergestellt.
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. Alle von Snapper erstellten Snapshots sind zum Booten verfügbar und stehen im Bootmenü zur Auswahl.
Nur Snapshots des Root-Dateisystems (in der Root-Konfiguration in Snapper definiert) sind bootfähig.
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:
Beim Rückgängigmachen von Änderungen gemäß den Anweisungen in Abschnitt 4.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.
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, in einer einzelnen Partition und auf einem einzelnen Subvolume befinden. Verzeichnisse, die aus Snapshots ausgeschlossen sind, beispielsweise /srv (vollständige Liste siehe Verzeichnisse, die aus Snapshots ausgenommen sind), können sich auf separaten Partitionen befinden.
Das System muss über den installierten Bootlader bootfähig sein.
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. Es ist zu beachten, dass Sie nicht in die Verzeichnisse schreiben können, die Bestandteil des Snapshots sind. 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 Zustand befindet, in dem Sie kein Rollback vornehmen möchten, booten Sie das System neu, und booten Sie erneut in den aktuellen Systemstatus, wählen Sie einen anderen Snapshot aus, oder starten Sie das Rettungssystem.
Soll das Rollback ausgeführt werden, führen Sie Folgendes aus:
sudo snapper rollback
Booten Sie anschließend neu. Wählen Sie im Bootbildschirm den Standard-Booteintrag. Das neu eingesetzte System wird erneut gebootet.
Ein vollständiges System-Rollback, bei dem der Zustand des gesamten Systems zum Zeitpunkt eines Snapshots wiederhergestellt wird, ist nicht möglich.
Snapshots des Root-Dateisystems enthalten nicht alle Verzeichnisse. Weitere Informationen und Begründungen finden Sie unter Verzeichnisse, die aus Snapshots ausgenommen sind. Als allgemeine Folge werden Daten in diesen Verzeichnissen nicht wiederhergestellt, was zu den nachfolgenden Beschränkungen führt.
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.
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.
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 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.
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.
Ein Rollback des Bootloaders ist nicht möglich, da alle „Stufen“ des Bootloaders zusammenpassen müssen. Dies kann bei einem Rollback jedoch nicht gewährleistet werden.
Das Verhalten von Snapper ist in je einer Konfigurationsdatei pro Partition und Btrfs-Subvolume definiert. Diese Konfigurationsdateien sind unter /etc/snapper/configs/ gespeichert. Die Standardkonfiguration in Snapper für das Verzeichnis / trägt die Bezeichnung root. Hiermit werden die YaST- und Zypper-Snapshots sowie die stündlichen Sicherungs-Snapshots für / erstellt und verwaltet.
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 (z. B. snapper ).
-c myconfig list
Zum Erstellen einer neuen Snapper-Konfiguration führen Sie snapper create-config aus:
snapper -c www-data1 create-config /srv/www2
Der Name der Konfigurationsdatei. | |
Einhängepunkt der Partition oder des |
Mit diesem Kommando 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 4.4.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 option für das Kommando create-config an:
snapper -c www-data create-config -t my_defaults /srv/www
Das Kommando snapper bietet verschiedene Subkommandos für die Verwaltung von vorhandenen Konfigurationen. Sie können sie auflisten, anzeigen, löschen und bearbeiten:
Mit dem Kommando snapper list-configs rufen Sie alle vorhandenen Konfigurationen ab:
root # snapper list-configs
Config | Subvolume
-------+----------
root | /
usr | /usr
local | /local
Mit dem Subkommando snapper löschen Sie eine Konfiguration. Ersetzen Sie KONFIG dabei durch den Namen einer Konfiguration, die mit -c KONFIG delete-configsnapper list-configs aufgeführt wird.
Mit dem Subkommando snapper zeigen Sie die angegebene Konfiguration an. Ersetzen Sie KONFIG dabei durch den Namen einer Konfiguration, die mit -c KONFIG get-configsnapper list-configs aufgeführt wird. Weitere Informationen zu den Konfigurationsoptionen finden Sie in Abschnitt 4.4.1.1, „Konfigurationsdaten“.
Mit dem Subkommando snapper bearbeiten Sie eine Option in der angegebenen Konfiguration. Ersetzen Sie KONFIG dabei durch den Namen einer Konfiguration, die mit -c KONFIG set-config OPTION=WERTsnapper list-configs aufgeführt wird. Eine Liste der möglichen Werte für OPTION and WERT finden Sie in Abschnitt 4.4.1.1, „Konfigurationsdaten“.
Jede Konfiguration enthält eine Liste von Optionen, die über die Kommandozeile bearbeitet werden können. Die folgende Liste zeigt weitere Details zu den einzelnen Optionen:
ALLOW_GROUPS, ALLOW_USERS
Erteilt regulären Benutzern die erforderlichen Berechtigungen zum Verwenden von Snapshots. Weitere Informationen finden Sie in Abschnitt 4.4.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 lautet „yes“ (ja).
Bei yes (ja) werden Snapshot-Paare mit identischem Pre- und Post-Snapshot gelöscht.
Der Standardwert lautet „no“ (nein).
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 lautet „1800“.
FSTYPE
Dateisystemtyp der Partition. Bearbeiten Sie diese Datei nicht.
Der Standardwert lautet „btrfs“.
NUMBER_CLEANUP
Legt fest, ob alte Installations- und Administrations-Snapshot-Paare automatisch gelöscht werden sollen, sobald die mit NUMBER_LIMIT angegebene Anzahl und das mit NUMBER_MIN_AGE angegebene Alter erreicht werden. Gültige Werte: yes, no
Der Standardwert lautet „no“ (nein).
NUMBER_LIMIT, NUMBER_LIMIT_IMPORTANT und NUMBER_MIN_AGE werden stets ausgewertet. Die Snapshots werden nur dann gelöscht, wenn alle Bedingungen erfüllt sind. Wenn stets eine bestimmte Anzahl von Snapshots unabhängig von ihrem Alter beibehalten werden soll, setzen Sie NUMBER_MIN_AGE auf 0. Sollen umgekehrt Snapshots nicht über ein bestimmtes Alter hinaus beibehalten werden, setzen Sie NUMBER_LIMIT und NUMBER_LIMIT_IMPORTANT auf 0.
NUMBER_LIMIT
Definiert die Anzahl der nicht als wichtig gekennzeichneten Installations- und Administrations-Snapshot-Paare, die beibehalten werden sollen, wenn NUMBER_CLEANUP auf yes (ja) gesetzt ist. Nur die jeweils jüngsten Snapshots werden beibehalten.
Der Standardwert lautet „50“.
NUMBER_LIMIT_IMPORTANT
Definiert die Anzahl der als wichtig gekennzeichneten Snapshot-Paare, die beibehalten werden sollen, wenn NUMBER_CLEANUP auf yes (ja) gesetzt ist. Nur die jeweils jüngsten Snapshots werden beibehalten.
Der Standardwert lautet „10“.
NUMBER_MIN_AGE
Definiert das Mindestalter in Sekunden, das ein Snapshot-Paar aufweisen soll, bevor es automatisch gelöscht werden kann.
Der Standardwert lautet „1800“.
SUBVOLUME
Einhängepunkt für die Partition oder das Subvolume am Snapshot. Bearbeiten Sie diese Datei nicht.
SYNC_ACL
Wenn Snapper von regulären Benutzern verwendet werden soll (siehe Abschnitt 4.4.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 auf yes (ja) gesetzt 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 lautet „no“ (nein).
TIMELINE_CLEANUP
Legt fest, ob alte Snapshots automatisch gelöscht werden sollen, sobald die mit TIMELINE_LIMIT_* angegebene Anzahl und das mit TIMELINE_MIN_AGE angegebene Alter erreicht werden. Gültige Werte: yes, no
Der Standardwert lautet „no“ (nein).
TIMELINE_CREATE
Bei yes (ja) werden stündliche Snapshots erstellt. Dies ist derzeit die einzige Möglichkeit, Snapshots automatisch zu erstellen. Daher wird dringend empfohlen, diese Option auf yes (ja) einzustellen. Gültige Werte: yes, no
Der Standardwert lautet „no“ (nein).
TIMELINE_LIMIT_DAILY, TIMELINE_LIMIT_HOURLY, TIMELINE_LIMIT_MONTHLY, TIMELINE_LIMIT_YEARLY
Anzahl der Snapshots, die pro Stunde, Tag, Monat und Jahr beibehalten werden sollen.
Der Standardwert für jeden Eintrag lautet „10“.
TIMELINE_CLEANUP="yes" TIMELINE_CREATE="yes" TIMELINE_LIMIT_DAILY="10" TIMELINE_LIMIT_HOURLY="10" TIMELINE_LIMIT_MONTHLY="10" TIMELINE_LIMIT_YEARLY="10" TIMELINE_MIN_AGE="1800"
In dieser Beispielkonfiguration werden stündliche Snapshots vorgenommen, die automatisch bereinigt werden. TIMELINE_MIN_AGE und TIMELINE_LIMIT_* werden stets gemeinsam ausgewertet. 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 zehn angefertigten Snapshots.
Täglich: Jeweils der erste Snapshot, der zu Tagesbeginn angefertigt wurde, für die letzten zehn Tage.
Monatlich: Jeweils der erste Snapshot, der am letzten Tag des Monats angefertigt wurde, für die letzten zehn Monate.
Jährlich: Jeweils der erste Snapshot, der am letzten Tag des Jahres angefertigt wurde, für die letzten zehn Jahre.
TIMELINE_MIN_AGE
Definiert das Mindestalter in Sekunden, das ein Snapshot aufweisen soll, bevor er automatisch gelöscht werden kann.
Der Standardwert lautet „1800“.
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öchten
Benutzer, die einen Snapshot von ihrem Home-Verzeichnis anfertigen möchten
Für diese Zwecke können Sie Snapper-Konfigurationen erstellen, in denen Benutzern und/oder Gruppen Berechtigungen gewährt werden. 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.
Beachten Sie, dass alle Schritte in diesem Verfahren von root ausgeführt werden müssen.
Erstellen Sie eine Snapper-Konfiguration für die Partition oder das Subvolume, auf dem der Benutzer Snapper verwenden soll (falls noch nicht vorhanden). Weitere Anweisungen finden Sie unter Abschnitt 4.4, „Erstellen und Bearbeiten von Snapper-Konfigurationen“. Beispiel:
snapper --config web_data create /srv/www
Die Konfigurationsdatei wird unter /etc/snapper/configs/CONFIG angelegt, wobei CONFIG dem Wert entspricht, den Sie im vorherigen Schritt mit -c/--config angegeben haben (beispielsweise /etc/snapper/configs/webdaten). Nehmen Sie die gewünschten Anpassungen vor (Details finden Sie unter Abschnitt 4.4.1, „Verwalten vorhandener Konfigurationen“).
Legen Sie Werte für ALLOW_USERS und/oder ALLOW_GROUPS fest. Damit gewähren Sie bestimmten Benutzern bzw. Gruppen die Berechtigungen. Mehrere Einträge müssen mit Leertaste getrennt werden. Um beispielsweise dem Benutzer www_admin Berechtigungen zu gewähren, führen Sie Folgendes aus:
snapper -c web_data set-config "ALLOW_USERS=www_admin" SYNC_ACL="yes"
Die vorhandene Snapper-Konfiguration kann nunmehr durch den oder die angegebenen Benutzer und/oder Gruppen verwendet werden. Testen Sie dies beispielsweise mit dem Kommando list:
www_admin:~ > snapper -c web_data list
Snapper ist nicht auf das automatische Erstellen und Verwalten von Snapshots über eine Konfiguration beschränkt. Mit dem Kommandozeilenwerkzeug 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 4.4, „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. Wenn Sie Snapshots für Ihre eigene Konfiguration erstellen oder verwalten möchten, müssen Sie diese Konfiguration explizit auswählen. Verwenden Sie das Dropdown-Feld in YaST, oder geben Sie den Schalter -c in der Kommandozeile an (snapper ).
-c MYCONFIG COMMAND
Ein Snapshot besteht jeweils aus dem Snapshot selbst und aus einigen 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. Die folgenden Metadaten sind für jeden Snapshot verfügbar:
Typ: Snapshot-Typ; Details siehe Abschnitt 4.5.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 kommagetrennte 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 4.5.1.2, „Bereinigungsalgorithmen“.
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. Zu jedem Pre-Snapshot gibt es einen zugehörigen Post-Snapshot. Verwendung z. B. für die automatischen YaST-/Zypper-Snapshots.
Post
Snapshot eines Dateisystems nach einer Änderung. Zu jedem Post-Snapshot gibt es einen zugehörigen Pre-Snapshot. Verwendung z. B. für die automatischen YaST-/Zypper-Snapshots.
Einzeln
Eigenständiger Snapshot. Verwendung z. B. für die automatischen stündlichen Snapshots. Dies ist der Standardtyp beim Erstellen von Snapshots.
Snapper bietet drei Algorithmen zum Bereinigen alter Snapshots. Die Algorithmen werden im Rahmen eines täglichen CRON-Auftrags ausgeführt. Die Bereinigungshäufigkeit selbst ist in der Snapper-Konfiguration für die Partition oder das Subvolume definiert (weitere Informationen siehe Abschnitt 4.4.1, „Verwalten vorhandener Konfigurationen“).
Löscht alte Snapshots, sobald eine bestimmte Anzahl von Snapshots erreicht wird.
Löscht Snapshots, die ein bestimmtes Alter erreicht haben; hierbei wird allerdings eine Reihe von stündlichen, täglichen, monatlichen und jährlichen Snapshots beibehalten.
Löscht Pre-/Post-Snapshot-Paare, zwischen denen keine Unterschiede (Diffs) bestehen.
Zum Erstellen eines Snapshots führen Sie snapper create aus, oder klicken Sie im -Modul in YaST auf . In den nachfolgenden Beispielen wird erläutert, wie Sie Snapshots über die Kommandozeile erstellen. Die Anpassung ist über die YaST-Oberfläche ganz einfach.
Geben Sie stets eine aussagekräftige Beschreibung an, mit der der Zweck des Snapshots auch später noch eindeutig erkennbar ist. Über die Option für die Benutzerdaten können Sie noch mehr Informationen festlegen.
snapper create --description "Snapshot für Woche 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 "Bereinigung 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 "Tägliche Datensicherung" --cleanup-algorithm timeline
Erstellt einen eigenständigen Snapshot (Einzeltyp) für die benutzerdefinierte Konfiguration (home) mit einer Beschreibung. Die Datei 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 "Vor Apache-Konfigurationsbereinigung"--userdata "important=yes"
Erstellt einen Snapshot vom Pre-Typ und gibt die Snapshot-Nummer aus. Erstes Kommando 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 "Nach der Apache-Konfigurationsbereinigung"--userdata "important=yes"
Erstellt einen Snapshot vom Post-Typ, gepaart mit der Pre-Snapshot-Nummer 30. Zweites Kommando zum Erstellen eines Snapshot-Paars, mit dem der „Vorher“-/„Nachher“-Zustand festgehalten wird. Der Snapshot wird als wichtig gekennzeichnet.
snapper create --command COMMAND--description "Vor und nach KOMMANDO"
Erstellt automatisch ein Snapshot-Paar vor und nach dem Ausführen von KOMMANDO. Diese Option ist nur verfügbar, wenn Snapper in der Kommandozeile verwendet wird.
Bei Snapper können Sie die Beschreibung, den Bereinigungsalgorithmus und die Metadaten eines Snapshots bearbeiten. Alle anderen Metadaten können nicht geändert werden. In den nachfolgenden Beispielen wird erläutert, wie Sie Snapshots über die Kommandozeile bearbeiten. Die Anpassung ist über die YaST-Oberfläche ganz einfach.
Um einen Snapshot in der Kommandozeile zu bearbeiten, müssen Sie seine Nummer kennen. Mit snapper rufen SIe alle Snapshots mit den dazugehörigen Nummern ab.
list
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 "Zeitleiste" 10
Bearbeitet die Metadaten von Snapshot 10 für die Standardkonfiguration (root). Der Bereinigungsalgorithmus ist mit Zeitleiste festgelegt.
snapper --config home modify --description "Tägliche Sicherung" -cleanup-algorithm "Zeitleiste"120
Bearbeitet die Metadaten von Snapshot 120 für die benutzerdefinierte Konfiguration home. Eine neue Beschreibung wird festgelegt, und der Bereinigungsalgorithmus wird aufgehoben.
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 Kommandozeilenwerkzeug 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.
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.
Manchmal ist zwar der btrfs-Snapshot vorhanden, doch nicht die XML-Datei von snapper mit den Metadaten. Für snapper ist der Snapshot damit nicht vorhanden. Sie müssen zunächst das btrfs-Subvolume löschen, um das Verzeichnis SNAPSHOT_NUMBER löschen zu können:
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 4.5.1.2, „Bereinigungsalgorithmen“.
/var/log, /tmp und anderen Verzeichnissen an?
Einige Verzeichnisse werden aus Snapshots ausgeschlossen. Weitere Informationen und Begründungen finden Sie unter Verzeichnisse, die aus Snapshots ausgenommen sind. Sollen für einen Pfad keine Snapshots angefertigt werden, legen Sie ein Subvolume für diesen Pfad an.
Da das Kommando df nicht die richtige Menge an belegtem Speicherplatz auf Btrfs-Dateisystemen angibt, müssen Sie das Kommando btrfs filesystem df MOUNT_POINT verwenden. Die Btrfs-Werkzeuge unterstützen zurzeit noch nicht die Anzeige des Speicherplatzes, der von einem Snapshot belegt wird.
Um Speicherplatz auf einer Btrfs-Partition mit Snapshots freizugeben, müssen Sie keine Dateien löschen, sondern die nicht mehr benötigten Snapshots. Ältere Snapshots belegen mehr Speicherplatz als neuere Snapshots. Weitere Informationen finden Sie in Abschnitt 4.1.1.3, „Steuern der Snapshot-Archivierung“.
Wenn Sie eine Aufrüstung von einem Service Pack auf ein höheres Service Pack vornehmen, belegen die entstehenden Snapshots einen großen Teil des Festplattenspeichers auf den System-Subvolumes, da große Mengen an Daten geändert werden (Aktualisierungen der Pakete). Es wird daher empfohlen, diese Snapshots manuell zu löschen, sobald Sie sie nicht mehr benötigen. Weitere Informationen finden Sie in Abschnitt 4.5.4, „Löschen von Snapshots“.
Ja. Weitere Informationen finden Sie in Abschnitt 4.3, „System-Rollback durch Booten aus Snapshots“.
Besuchen Sie die Snapper-Homepage unter http://snapper.io/.